我看到了一些类似的帖子,但它们并没有帮助我解决我的具体问题。所以我在安装了 apache2 的服务器上使用 ubuntu 12.04。它上面运行着大约 5 个虚拟主机和基于名称的网站(使用相同的端口)。现在我需要另一个需要 SSL 证书的页面。是否可以在 ssl 下只运行一个页面,还是在配置 SSL 时自动加载其中的所有内容?
我知道我必须将 SSL 服务器放在端口 443 下,如下所示:
<virtualhost *:443>
SSLEngine On
SSLCertificateFile /path/to/your/sslcert
DocumentRoot /path/your/webcontent
</virtualhost>
有谁知道并且愿意向我解释如何为一个页面设置 ssl?
答案1
当您安装 Apache 时,它会为默认虚拟主机创建一个模板,但它也有一个 default-ssl 虚拟主机。复制该文件并重命名my_secure_site
或进行其他操作。然后只需将域名、文档根目录、目录以及 ssl 密钥和证书更改为适合您站点的值即可。
另外,请确保在 Apache 中启用了 ssl 模块a2enmod mod-ssl
。ports.conf
如果虚拟域正在使用 ssl,则应该有一个语句使 Apache 在 443 上监听,但如果您遇到问题,请检查您是否在 443 上监听。
我遇到了一个问题,我所有的主机都已定义<virtualhost 123.123.123.132>
,但当我尝试将 SSL 站点定义为时<virtualhost 123.123.123.132:443>
,出现了如下错误。
[Wed Oct 21 16:37:26 2009] [error] VirtualHost *:80 -- mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results
为了避免这种情况,所有虚拟主机都应明确定义端口<virtualhost 123.123.112.132:80>
答案2
解决了。
首先输入以下代码检查你的主机名
hostname (you will need it later)
启用 ssl-mod
sudo a2enmod ssl
从头开始的指南:
为 SSL 证书和密钥创建文件夹
sudo mkdir /etc/apache2/ssl
创建 .key 文件和 .crt 文件,然后加载 apache2...
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
当您输入证书的所有详细信息时,请确保您具有与主机名相同的通用名称,否则您将在 apache2 日志中收到有关没有正确主机名的警告。(不是必需的,但最好避免这种情况)
你的 SSL 只会在端口 443 下运行,因此你需要ports.conf
通过添加 Listen 443 将监听器 443 放入你的 apache 目录中
然后在下面创建你的 SSL 页面sites-available
sudo nano /etc/apache2/sites-available/ssl
<virtualhost *:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
DocumentRoot /var/www/yourlink
</virtualhost>
通过加载页面sudo a2ensite ssl
sudo service apache2 reload
现在它只会通过 SSL 保护我的yourlink
文件夹。