在 apache2 伺服器上正確實現 SSL 證書?
情況:
我從 namecheap/Comodo 購買了一個多域(它包括 3 個域:主域,例如:
maindomain.com
和另外兩個域:sitea.com
和siteb.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
。有幾點可能會改變證書的正確實施。我的問題如下:
- 我有一個沒有 crt 副檔名的 ca-bundle 文件:我必須手動添加 crt 副檔名嗎?
- 我下載的文件沒有得到任何 pem 文件:PEM 文件會在某個時候生成嗎?
- 我的 /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
- 我有一個沒有 crt 副檔名的 ca-bundle 文件:我必須手動添加 crt 副檔名嗎?
文件副檔名無關緊要 - 除非您是 Microsoft。對於 Apache,文件副檔名只是較長文件名的一部分,其中包含一個點。
- 我下載的文件沒有得到任何 pem 文件:PEM 文件會在某個時候生成嗎?
查看您收到的文件的內容(帶有
cat
或) - 如果它們以(或類似)less
開頭,它們就是 PEM。-----BEGIN CERTIFICATE-----
如果它們是二進製文件,則它們不是 PEM。openssl x509 -inform DER -in <file_in_der_format> -out <filename_for_pem_file>
您可以使用;轉換為 PEM
- 我的 /etc/hosts 文件是否正確?我添加了多行以確保至少有一個可以解決問題。我敢肯定它包含很多不必要的行。我把它貼在下面。
它會起作用,儘管你已經複製了一些。將 IP 地址放在一行上,然後是應該解析為該 IP 的所有名稱;
4)我的證書文件不是名為 maindomain.com.crt 而是有一個隨機數,這有關係嗎?
不,它沒有。您需要配置 Apache 以查找您的證書和私鑰。只要 conf 文件中的條目與文件名和路徑匹配,它就可以工作;
5)我在這個過程中早些時候生成的密鑰文件沒有域副檔名 .com ,它的命名如下: maindomain.key 如果我記得它是與之前的 csr 文件同時生成的(做了那個步驟前一段時間)
參見上面 4) 的答案。