Ssl

https://domain.com ssl 錯誤,除非添加異常,否則它不會重定向到 www

  • August 21, 2016

我使用 certbot 為我的域創建了一個讓我們加密證書。我確保包含 www 和一些(需要的)子域,因此證書應該對非 www 和 www 有效:

domain.com www.domain.com sub1.domain.com ...

但事實並非如此,如果我嘗試訪問https://domain.com會引發 ssl 錯誤。

在證書查看器中(通過 www 訪問時)我可以看到 Common Name (CA) domain.com。證書主題替代名稱包含非 www 和 www…

所以我不明白為什麼它會給出這個錯誤:

domain.com uses an invalid security certificate.
The certificate is not trusted because it is self-signed.
Error code: SEC_ERROR_UNKNOWN_ISSUER

我確實生成了一個自簽名證書,但是對於預設的虛擬主機塊(httpd-ssl.conf 中的那個),其他塊正在使用讓我們加密證書。

我還確保刪除了 Firefox 記憶體。

我確實添加了一個異常,現在每次我寫https://domain.com時它都會重定向到https://www.domain.com

我使用的是 Apache 2.4.23,我的虛擬主機配置如下:

<VirtualHosts *:80>
   Servername domain.com
   Redirect permanent / https://www.domain.com/
</VirtualHosts>

<VirtualHost *:443>
   ServerName domain.com:443
   Redirect permanent / https://www.domain.com:443/
</VirtualHost>

<VirtualHost *:PORT> # 80 and 443
   ServerAdmin webmaster@domain.com
   DocumentRoot "/srv/http/domain.com/www"
   ServerName www.domain.com:443
   Protocols h2 h2c

   <Directory "/srv/http/domain.com/www">
       Require all granted

       <IfModule mod_rewrite.c>
           RewriteEngine On
           RewriteBase /
           RewriteCond %{REQUEST_FILENAME} !-d
           RewriteCond %{REQUEST_FILENAME} !-f
           RewriteRule ^index\.php$ - [L]
           RewriteRule . index.php [L]
       </IfModule>
   </Directory>

   <IfModule dir_module>
       DirectoryIndex index.php
   </IfModule>

   SSLEngine on
   SSLCertificateFile "/etc/letsencrypt/live/domain.com/fullchain.pem"
   SSLCertificateKeyFile "/etc/letsencrypt/live/domain.com/privkey.pem"
   Header always set Strict-Transport-Security "max-age=15768000"
   ErrorLog "/var/log/httpd/domain.com-ssl_error_log"
   CustomLog "/var/log/httpd/domain.com-ssl_access_log" common
   LogLevel debug
</VirtualHost>

您沒有為對 example.com 的請求提供 Let’s Encrypt 證書。

<VirtualHost *:443>
   ServerName domain.com:443
   Redirect permanent / https://www.domain.com:443/
</VirtualHost>

缺少所有相關的 SSL 指令。

   SSLEngine on
   SSLCertificateFile "/etc/letsencrypt/live/domain.com/fullchain.pem"
   SSLCertificateKeyFile "/etc/letsencrypt/live/domain.com/privkey.pem"
   Header always set Strict-Transport-Security "max-age=15768000"

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