如何(如果可能)仅为我的 apache2 服务器上的一个网站创建 SSL 证书?

如何(如果可能)仅为我的 apache2 服务器上的一个网站创建 SSL 证书?

我看到了一些类似的帖子,但它们并没有帮助我解决我的具体问题。所以我在安装了 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-sslports.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文件夹。

相关内容