![https://domain.com ssl 错误,除非添加例外,否则不会重定向到 www](https://linux22.com/image/688515/https%3A%2F%2Fdomain.com%20ssl%20%E9%94%99%E8%AF%AF%EF%BC%8C%E9%99%A4%E9%9D%9E%E6%B7%BB%E5%8A%A0%E4%BE%8B%E5%A4%96%EF%BC%8C%E5%90%A6%E5%88%99%E4%B8%8D%E4%BC%9A%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20www.png)
我使用 certbot 为我的域名创建了一个 let's encrypt 证书。我已确保包含 www 和一些(需要的)子域,因此该证书对非 www 和 www 都有效:
domain.com www.domain.com sub1.domain.com ...
但事实并非如此,如果我尝试访问https://domain.com它会抛出一个 ssl 错误。
在证书查看器中(通过 www 访问时),我可以看到通用名称 (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 中的块),其他块正在使用 let's encrypt 证书。
我还确保删除了 Firefox 缓存。
我确实添加了一个例外,现在它重定向到https://www.domain.com每次我写作https://domain.com。
我正在使用 Apache 2.4.23,我的 vhosts 配置如下:
<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 [email protected]
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>
答案1
您没有为发往 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"