HTTPS打不开?HTTP能访问?八成是SSL证书或配置问题
好些站长会碰到一种怪异状况, 网站运用http的形式能够正常开启, 而更换成https的形式时, 就会出现报错, 错报错为“无法访问”或者“连接呈现不安全状态”, 这种情况通常并非服务器出现故障, 而是在HTTPS配置的层面上出现了问题。
常见原因与排查步骤
1. SSL 证书未正确安装或过期
查看方式: 借助浏览器去访问 https://你所拥有的那个域名, 接着留意浏览器地址栏那儿的锁图标或者报错的相关信息。经常出现的错误存在着。
NET 所出现的 ERR , 其代表的是证书通用名称无效的那种情况, 也就是证书的域名跟进行访问操作时所使用的域名之间并不相互匹配。
你提供的内容是英文错误提示, 按照要求只能用中文改写句子, 原句本身不符合需求条件, 请更换需要改写的有效的中文句子。
免费证书的解决方案: 推荐使用Let's Encrypt, 并且搭配Certbot来自动续期限。CentOS或者Ubuntu下的常见命令:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
2. Nginx/Apache 配置文件未监听 443 端口或 SSL 配置错误
查阅 Nginx 的 server 部分, 看看是不是涵盖着, 是否存在着, 有没有包含着:
listen 443 ssl; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem;
假如缺失此 ssl_certificate 路径,或者这路径指向已然失效的文件, 那么 HTTPS 便会出现挂掉的情况, 然而 HTTP 不会受到该情况的影响。
3. 防火墙或安全组未开放 443 端口
有着诸多的云服务器, 其默认状况之下仅仅开放80以及22端口。前去登录云服务商控制台, 查看安全组或者防火墙规则可曾放行了TCP 443端口。
快速测试命令:
curl -I https://yourdomain.com curl -I http://yourdomain.com
4. 混合内容问题(Mixed Content)
尽管 HTTPS 是能够被打开的, 然而页面之中引用了 HTTP 资源(像是图片、JS、CSS 这些), 浏览器是会对加载进行阻止的。把浏览器开发者工具(也就是 F12)的 Console 面板给打开, 就会看到类似这样的:
Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure resource 'http://...'
解决办法是, 把全部资源链接变更成为协议相对路径, 也就是 // , 或者全都统一去使用 HTTPS。
总结
HTTPS 可访问但 HTTP 不行, 究其最根本缘由是 SSL/TLS 握手出现失败状况。需优先去检查证书状态, 还要检查 443 端口开放情形, 以及 Web 服务器 SSL 配置情况。按照上述步骤逐个进行排查, 90% 的问题均可得到解决。
否玩代码编辑 https://www.fouwan.com


