Linux

在 apache2 伺服器上正確實現 SSL 證書?

  • February 2, 2018

情況:

我從 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 副檔名嗎?
    1. 我下載的文件沒有得到任何 pem 文件:PEM 文件會在某個時候生成嗎?
    1. 我的 /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 admin@maindomain.com
               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. 我有一個沒有 crt 副檔名的 ca-bundle 文件:我必須手動添加 crt 副檔名嗎?

文件副檔名無關緊要 - 除非您是 Microsoft。對於 Apache,文件副檔名只是較長文件名的一部分,其中包含一個點。

  1. 我下載的文件沒有得到任何 pem 文件:PEM 文件會在某個時候生成嗎?

查看您收到的文件的內容(帶有cat或) - 如果它們以(或類似)less開頭,它們就是 PEM。-----BEGIN CERTIFICATE-----如果它們是二進製文件,則它們不是 PEM。openssl x509 -inform DER -in <file_in_der_format> -out <filename_for_pem_file>您可以使用;轉換為 PEM

  1. 我的 /etc/hosts 文件是否正確?我添加了多行以確保至少有一個可以解決問題。我敢肯定它包含很多不必要的行。我把它貼在下面。

它會起作用,儘管你已經複製了一些。將 IP 地址放在一行上,然後是應該解析為該 IP 的所有名稱;

4)我的證書文件不是名為 maindomain.com.crt 而是有一個隨機數,這有關係嗎?

不,它沒有。您需要配置 Apache 以查找您的證書和私鑰。只要 conf 文件中的條目與文件名和路徑匹配,它就可以工作;

5)我在這個過程中早些時候生成的密鑰文件沒有域副檔名 .com ,它的命名如下: maindomain.key 如果我記得它是與之前的 csr 文件同時生成的(做了那個步驟前一段時間)

參見上面 4) 的答案。

引用自:https://serverfault.com/questions/895346