如何在我的 Apache2 服务器上设置 SSL CRT?

jnb*_*bdz 5 configuration ssl apache2

我刚刚从 Godaddy 获得了 SSL 证书。我下载了文件......但现在我在徘徊应该把它们放在哪里。还有什么我需要设置的吗?

我之所以这么问是因为我收到了如何在 Apache2 服务器上设置 SSL 的冲突方式。

他们说使用 ssl.conf 但我在我的服务器上发现了两个:

/etc/apache2/mods-available/ssl.conf
/etc/apache2/mods-enabled/ssl.conf
Run Code Online (Sandbox Code Playgroud)

然后他们说我必须添加这些说明:

SSLCertificateFile /path/to/your/certificate/file
SSLCertificateKeyFile /path/to/your/key/file
SSLCertificateChainFile /path/to/intermediate/bundle/file
Run Code Online (Sandbox Code Playgroud)

他们还说它可能不在 ssl.conf 中,而是在 httpd.conf 文件中...

那么到底是什么?

如果我使用ssl.confwich 文件,我必须修改吗?

在此先感谢您的帮助。

更新:

这是我的配置:

<VirtualHost 00.00.000.00:443>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@example.com
    DocumentRoot /var/www/example.com
    #   SSL Engine Switch:
    #   Enable/Disable SSL for this virtual host.
    SSLEngine on

    #   A self-signed (snakeoil) certificate can be created by installing
    #   the ssl-cert package. See
    #   /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
    #   If both key and certificate are stored in the same file, only the
    #   SSLCertificateFile directive is needed.
    SSLCertificateFile    /etc/ssl/certs/example.crt
    SSLCertificateKeyFile /etc/ssl/private/example.key
    #SSLCertificateChainFile /etc/ssl/certs/gd_bundle.crt
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

似乎Godaddy证书。由于某种原因未被 Google Chrome 重新识别...

那么什么是 SSLCertificateChainFile?

Mar*_*ppi 6

这取决于。您可能希望将这些行添加到 VirtualHost 文件中。我将使用默认值作为示例,但您可能会定义多个 VirtualHosts(它们通常在/etc/apache2/site-available/目录中)。

但是,您首先需要安装 SSL 证书。通常,您可以将.crt文件(或证书文件,如果它不以 .crt 结尾)放在/etc/ssl/certs/目录中。然后将.key文件复制到/etc/ssl/private/目录中。确保该.key文件没有其他可读权限,因为它可能导致漏洞利用。提醒一下,这些只是默认的 SSL 证书位置,您可以将它们放在您想要的任何位置,我已经看到一些安装/etc/apache2/ssl用于 CRT 和 KEY 文件的倾倒场。同样,这完全取决于您。

为了在 Apache 中实际设置 SSL 站点,您需要复制站点的 VirtualHost 并编辑几行,以便它与 SSL 一起正常运行。在此示例中,我将继续仅使用默认设置,但替换default为您正在编辑的任何 VirtualHost 文件。

因此,对于默认站点,您将复制/etc/apache2/sites-available/default文件,如下所示:

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default-ssl
Run Code Online (Sandbox Code Playgroud)

然后编辑新default-ssl文件。首先改变第一行,<VirtualHost...,从:80:443所以它可能看起来像:

<VirtualHost *:443>
Run Code Online (Sandbox Code Playgroud)

*很可能需要对其中的Apache用于侦听该网站的IP地址。它仍然可以是一个星号,这是一个通配符匹配,但是当您在多个站点上拥有多个 SSL 证书时,这可能会导致问题。当它在文件底部更新时,就在该</VirtualHost>行的上方,添加以下内容:

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/<yourssl>.crt
    SSLCertificateKeyFile /etc/ssl/private/<yourssl>.key
    SSLCertificateChainFile /etc/ssl/certs/<yourssl>.crt
Run Code Online (Sandbox Code Playgroud)

完成此操作后,您需要启用您的网站。调用以下命令启用 mod_ssl,您创建的新 VirtualHost,并重新启动 Apache。

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo /etc/init.d/apache2 restart
Run Code Online (Sandbox Code Playgroud)

现在,当您通过 https:// 导航到该站点时,您应该能够成功连接!