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

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

我刚从 GoDaddy 获得了 SSL 证书。我下载了文件……但现在我不知道应该把它们放在哪里。我还需要设置什么吗?

我之所以询问是因为我收到了关于如何在 Apache2 服务器上设置 SSL 的相互矛盾的方法。

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

/etc/apache2/mods-available/ssl.conf
/etc/apache2/mods-enabled/ssl.conf

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

SSLCertificateFile /path/to/your/certificate/file
SSLCertificateKeyFile /path/to/your/key/file
SSLCertificateChainFile /path/to/intermediate/bundle/file

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

那么它是哪一个?

如果我使用ssl.conf哪个文件,我必须修改它吗?

在此先感谢您的帮助。

更新:

这是我的配置:

<VirtualHost 00.00.000.00:443>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin [email protected]
    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>

看来 GoDaddy 证书由于某种原因未被 Google Chrome 识别...

那么 SSLCertificateChainFile 是什么?

答案1

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

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

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

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

cp /etc/apache2/sites-available/default /etc/apache2/sites-available/default-ssl

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

<VirtualHost *:443>

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

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/<yourssl>.crt
    SSLCertificateKeyFile /etc/ssl/private/<yourssl>.key
    SSLCertificateChainFile /etc/ssl/certs/<yourssl>.crt

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

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo /etc/init.d/apache2 restart

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

相关内容