apache2 服务器上 SSL 证书的正确实施?

apache2 服务器上 SSL 证书的正确实施?

情况:

我已经从 namecheap/Comodo 购买了一个多域名(它包括 3 个域名:主域名,例如:maindomain.com,以及另外两个域名:sitea.comsiteb.com)。

到目前为止,我想看看是否能够首先成功地为主要站点设置证书。

在阅读了网上的不同教程后,我认为为了在这 3 个网站上成功使用 SSL 证书,可能需要编辑的文件列表如下:

/etc/apache2/sites-available/maindomain.com.conf
/etc/apache2/apache2.conf 
/etc/apache2/ports.conf

已下载的证书文件列表:

115155984.ca-bundle
115155984.crt

(请注意,文件 115155984.ca-bundle 没有任何扩展名)

目前,该网站似乎maindomain.com指向服务器 IP 地址 ( 155.133.130.203 )。我不确定为什么。我已将目录maindomain.com.conf中文件的内容发布在下面sites-available。有几点可能会影响证书的正确实施。

我的问题如下:

  • 1)我有一个没有 crt 扩展名的 ca-bundle 文件:我必须手动添加 crt 扩展名吗?
  • 2)我下载的文件中没有得到任何 pem 文件:PEM 文件会在某个时候生成吗?
  • 3) 我的 /etc/hosts 文件正确吗?我添加了多行以确保至少一行可以解决问题。我确信它包含很多不必要的行。我将其发布在下面。
  • 4)我的证书文件不是名为 maindomain.com.crt,而是一个随机数,这有关系吗?
  • 5)我之前在流程中生成的密钥文件没有域扩展名 .com ,它的命名方式如下:maindomain.key 如果我没记错的话,它是与之前的 csr 文件同时生成的(之前做过这个步骤)

/etc/apache2/sites-available/maindomain.com.conf 文件

以下是 sites-available 目录内的 maindomain.com.conf 文件的内容:

    <VirtualHost *:80>
            # The ServerName directive sets the request scheme, hostname and port that
            # the server uses to identify itself. This is used when creating
            # redirection URLs. In the context of virtual hosts, the ServerName
            # specifies what hostname must appear in the request's Host: header to
            # match this virtual host. For the default virtual host (this file) this
            # value is not decisive as it is used as a last resort host regardless.
            # However, you must set it for any further virtual host explicitly.
            #ServerName www.example.com

            ServerAdmin webmaster@localhost
            DocumentRoot /var/www/html

            # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
            # error, crit, alert, emerg.
            # It is also possible to configure the loglevel for particular
            # modules, e.g.
            #LogLevel info ssl:warn

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

            # For most configuration files from conf-available/, which are
            # enabled or disabled at a global level, it is possible to
            # include a line for only one particular virtual host. For example the
            # following line enables the CGI configuration for this host only
            # after it has been globally disabled with "a2disconf".
            #Include conf-available/serve-cgi-bin.conf
    </VirtualHost>

    # vim: syntax=apache ts=4 sw=4 sts=4 sr noet

    <IfModule mod_ssl.c>
        <VirtualHost 155.133.130.203:443>
                ServerAdmin [email protected]
                ServerName maindomain.com
                ServerAlias www.maindomain.com
                DocumentRoot /var/www/html/maindomain.com/
                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on

                SSLCertificateFile /etc/ssl/certs/115155984.crt

                SSLCertificateKeyFile /etc/ssl/private/maindomain.key

                SSLCACertificateFile /etc/ssl/certs/115155984.ca-bundle.crt

                SSLVerifyClient None

                <Directory />
                          Options FollowSymLinks
                          AllowOverride None
                </Directory>
                <Directory /var/www/html/maindomain.com/>
                          Options Indexes FollowSymLinks MultiViews
                          AllowOverride All
                          Order allow,deny
                          allow from all
                </Directory>
        </VirtualHost>
    </IfModule>

/etc/host 文件中不必要的信息

这是我的主机文件的内容,位于 /etc/ 中。我必须尝试一些不同的方法,才能让 PHPMailer 从网站发送电子邮件,这就是为什么很可能很多不必要的線。

    127.0.0.1       localhost
    ::1             localhost ip6-localhost ip6-loopback
    ff02::1         ip6-allnodes
    ff02::2         ip6-allrouters

    155.133.130.203 servername01.maindomain.com
    155.133.130.203 servername01.maindomain.com server01.sitea.com
    127.0.0.1 server01 server01.sitea.com sitea.com
    127.0.0.1 server01 server01.maindomain.com maindomain.com
    155.133.130.203 test.maindomain.com
    155.133.130.203 maindomain.com
    155.133.130.203 sitea.com

答案1

1)我有一个没有 crt 扩展名的 ca-bundle 文件:我必须手动添加 crt 扩展名吗?

文件扩展名无关紧要 - 除非您是 Microsoft。对于 Apache,文件扩展名只是带有点的长文件名的一部分;

2)我下载的文件中没有得到任何 pem 文件:PEM 文件会在某个时候生成吗?

查看您收到的文件的内容(带有catless) - 如果它们以 (或类似)开头,则-----BEGIN CERTIFICATE-----它们是 PEM。如果它们是二进制文件,则它们不是 PEM。您可以使用 转换为 PEM openssl x509 -inform DER -in <file_in_der_format> -out <filename_for_pem_file>

3) 我的 /etc/hosts 文件正确吗?我添加了多行以确保至少一行可以解决问题。我确信它包含很多不必要的行。我将其发布在下面。

它会起作用,尽管您已经重复了一些。将 IP 地址放在一行上,后面跟着所有应该解析为该 IP 的名称;

4)我的证书文件不是名为 maindomain.com.crt,而是一个随机数,这有关系吗?

不,它不行。您需要配置 Apache 来查找您的证书和私钥。只要 conf 文件中的条目与文件名和路径匹配,它就会起作用;

5)我之前在流程中生成的密钥文件没有域扩展名 .com ,它的命名方式如下:maindomain.key 如果我没记错的话,它是与之前的 csr 文件同时生成的(之前做过这个步骤)

请参阅上文4)的答案。

相关内容