我正在尝试通过 https:// 访问我的网站,但所有的努力都白费了。
首先,我将解释我是如何做一切来了解情况的。
服务器硬件是 Raspberry PI2B。软件是 Ubuntu 22.04.2 LTS。我使用 apache 作为 http 服务器。
一切都很顺利,直到我开始保护网站安全,我完成了使用 letsencrypt 和 certbot 获取证书的所有步骤。
root@ubuntu:/etc/letsencrypt/keys# ls
0000_key-certbot.pem 0001_key-certbot.pem
root@ubuntu:/etc/letsencrypt/live/archivomental.com# ls
README cert.pem chain.pem fullchain.pem privkey.pem
好的,那么我认为我的 VirtualHost 配置有问题...因为我不确定。似乎 apache 仍在使用 http 而不是 https。
如果我这样做,一切都会好起来:
<VirtualHost *:443>
ServerName www.archivomental.com
ServerAlias archivomental.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/archivomental.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/archivomental.com/privkey.pem
</VirtualHost>
这个让我进入网页,但只能通过 http。
<VirtualHost *:80>
ServerName www.archivomental.com
ServerAlias archivomental.com
DocumentRoot /var/www/archivomental
RewriteEngine On
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!aNULL:!MD5
RewriteCond %{HTTPS} off
RewriteRule "^/(.*)_SSL$" "https://%{SERVER_NAME}/$1" [R,L]
</VirtualHost>
<VirtualHost *:443>
ServerName www.archivomental.com
ServerAlias archivomental.com
DocumentRoot /var/www/archivomental
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/archivomental.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/archivomental.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/archivomental.com/chain.pem
</VirtualHost>
还有其他方法可以让 SSL 正常工作吗?如果您能在这方面指导我,我将不胜感激。
root@ubuntu:/var/log/apache2# curl -I https://www.archivomental.com
curl: (60) SSL: no alternative certificate subject name matches target host name 'www.archivomental.com'
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
答案1
SSL:没有替代证书主题名称与目标主机名“www.archivomental.com”匹配
因此 SSL 似乎可以正常工作,但存在证书验证问题。似乎您为 archivomental.com 配置了证书,但没有指定该证书也应有效用于www.archivomental.com
如果是这种情况,并且您需要它与 www. 前缀一起使用,请删除现有证书并重新提供:
sudo certbot delete --cert-name archivomental.com
sudo certbot certonly --domain="archivomental.com,www.archivomental.com"