如何在 Apache 2.4 上配置 SSL

如何在 Apache 2.4 上配置 SSL

这确实非常令人困惑,有很多可用于配置 SSL 的指南,但我很困惑,不知道应该遵循什么。

我有一个新的服务器。

  • Ubuntu 18.04
  • 服务器版本:Apache/2.4.29(Ubuntu)
  • 服务器建立时间:2020-08-12T21:33:25

配置虚拟主机如下,它在 HTTP 上运行良好

<VirtualHost *:80>
        ServerName example.com

        DocumentRoot /var/www/html/example

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory /var/www/html/example/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Require all granted
        </Directory>
</VirtualHost>

我收到了一个包含以下文件的 zip 文件。

  1. xxxxxx.crt
  2. 随机数生成器.pem
  3. gd_bundle-g2-g1.crt

将收到的文件复制到 /etc/apache2/ssl

配置为:

<VirtualHost *:443>
        ServerName example.com
        DocumentRoot /var/www/html/example
        
        <Directory /var/www/html/example/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Require all granted
        </Directory>

        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/aXXXXXX.crt
        SSLCertificateKeyFile /etc/apache2/ssl/aXXXXXX.pem
        SSLCertificateChainFile /etc/apache2/ssl/gd_bundle-g2-g1.crt
</VirtualHost>

没有错误,语法正确。

sudo apache2ctl configtest

但是当我重新加载我的 apache2 配置时

以下命令运行正常重新加载 apache 配置,但站点停止工作。

sudo systemctl reload apache2

它导致 Apache 服务崩溃 :-(

我做错了什么,请指导

更新:

aXXXXXX.crt第一行是-----BEGIN CERTIFICATE-----

openssl x509 -in aXXXXXX.crt -noout -text

X509v3 主题备用名称:返回我的有效域名

aXXXXXX.pem第一行-----BEGIN CERTIFICATE-----不是-----BEGIN PRIVATE KEY-----

openssl rsa -in aXXXXXX.pem -noout -text

输出:

unable to load Private Key
140489527252288:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY

总共有这 3 个文件,没有其他证书。

答案1

您的配置看起来不错,因此您应该检查这些文件是否符合您的想象。

  • aXXXXXX.crt应该是一个证书文件。

    • 检查第一行是否是-----BEGIN CERTIFICATE-----
    • 运行openssl x509 -in aXXXXXX.crt -noout -text并检查输出是否适合您的服务器。特别查看“主题”和“x509v3 主题备用名称”字段。
  • aXXXXXX.pem应该是一个私钥文件。

    • 检查第一行是否是-----BEGIN PRIVATE KEY-----
    • 运行openssl rsa -in aXXXXXX.pem -noout -text。第一行应该是“RSA Private-Key”。
  • gd_bundle-g2-g1.crt应该是一个证书链文件,它只是一个中间证书的列表。

    • 检查其中是否有一个或多个证书。每个证书都以 开头-----BEGIN CERTIFICATE-----,以 结尾-----END CERTIFICATE-----

相关内容