实战分享:我是如何为个人网站配置HTTPS证书的完整过程
一、为什么我要为网站配置HTTPS
作为一名技术博主,我深知网站安全的重要性。最近在运营我的个人博客五岁小孩时,我发现越来越多的浏览器开始标记HTTP网站为"不安全",这严重影响了用户体验和SEO排名。
经过一番研究,我决定为网站配置HTTPS。在这个过程中,我遇到了不少坑,也积累了一些实用经验。今天就把我的完整配置过程分享给大家,希望能帮助到有同样需求的朋友。
我的配置环境:
- 服务器:腾讯云轻量应用服务器
- 证书:腾讯云免费SSL证书(1年有效期)
- 部署方式:Docker容器化部署Nginx
- 网站:个人技术博客五岁小孩
二、申请SSL证书的完整过程
在选择证书服务商时,我对比了多家云服务商,最终选择了腾讯云的免费SSL证书。主要考虑是腾讯云的免费证书申请流程简单,而且审核速度很快。
申请步骤:
- 登录腾讯云控制台,进入SSL证书管理页面
- 选择免费证书,填写域名信息(我填写的是blog.fiveyoboy.com)
- 提交申请后,系统会自动进行域名验证
)
我的经验分享:
- 审核时间比我想象的要快,我只等了3分钟就通过了
- 免费证书的有效期是1年,到期前需要重新申请
- 如果域名解析有问题,审核会失败,需要检查DNS设置
提交申请后,我在【我的证书】列表等待审核通过:

三、下载证书并准备配置
证书审核通过后,我立即下载了SSL证书。这里有个小技巧:下载时选择Nginx格式的证书包,这样解压后就能直接使用。

下载后的文件结构:
- 证书文件:以
.pem或.crt结尾 - 私钥文件:以
.key结尾 - 通常还会包含证书链文件
我下载的证书包包含两个关键文件,后面配置Nginx时会用到。
四、Nginx配置实战:我踩过的坑和解决方案
由于我的Nginx是通过Docker部署的,配置前我首先检查了容器是否映射了443端口。这是我遇到的第一个坑:Docker容器默认不会映射443端口。
检查端口映射:
docker ps | grep nginx
我的配置步骤:
1. 上传证书文件
我将下载的SSL证书压缩包上传到服务器,解压到Nginx配置目录。这里我选择在nginx.conf同级目录下创建cert文件夹存放证书文件。


重要提醒: 证书路径一定要正确,否则Nginx无法启动。我建议使用绝对路径,避免相对路径带来的问题。
2. 配置Nginx SSL
这是我实际使用的配置,经过多次调试才稳定运行:
server {
# 监听443端口并启用SSL
listen 443 ssl;
# 配置你的域名
server_name blog.fiveyoboy.com;
# 证书文件路径 - 这是我实际使用的路径
ssl_certificate /etc/nginx/cert/blog.fiveyoboy.com_bundle.pem;
ssl_certificate_key /etc/nginx/cert/blog.fiveyoboy.com.key;
# SSL会话缓存设置
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
# 加密套件配置
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 代理到实际应用
location / {
# 我的博客应用运行在30891端口
proxy_pass http://127.0.0.1:30891;
proxy_set_header Host $host;
}
}
### 3. 重启Nginx并验证配置
重启前我强烈建议先检查配置文件语法,这是我踩过的第二个坑:**配置文件语法错误导致Nginx无法启动**。
**安全重启步骤:**
1. 检查配置语法:`nginx -t`
2. 如果语法正确,重新加载配置:`nginx -s reload`
由于我使用Docker部署,重启命令是:
```bash
docker restart nginx我的经验: 第一次重启时,我遇到了证书路径错误的问题。通过查看错误日志/var/log/nginx/error.log,我发现了问题所在并修正了路径。
五、防火墙配置和最终测试
配置完Nginx后,我发现网站仍然无法通过HTTPS访问。经过排查,发现是服务器防火墙没有开放443端口。
我的防火墙配置:
- 检查防火墙状态:
systemctl status firewalld - 开放443端口:
firewall-cmd --add-port=443/tcp --permanent - 重新加载防火墙:
firewall-cmd --reload
配置完成后,我激动地访问了https://blog.fiveyoboy.com,看到浏览器地址栏的小锁标志,终于成功了!
六、我遇到的实际问题及解决方案
问题一:HTTPS无法连接
这是我遇到的最常见问题,主要有两个原因:
1. 证书路径错误 第一次配置时,我遇到了这个错误:
cannot load certificate "/etc/nginx/cert/blog.fiveyoboy.com_bundle.pem": BIO_new_file() failed解决方案: 检查证书文件路径,确保文件存在且权限正确。
2. Docker端口未映射 Docker容器默认不会映射443端口,需要手动配置。
问题二:HTTPS访问显示不安全
这个问题我帮朋友配置时遇到过,主要有两种情况:
1. 证书域名不匹配
如果出现错误:requested domain name does not match the server's certificate
说明证书绑定的域名和Nginx配置的域名不一致。
2. 证书过期 免费证书通常只有1年有效期,需要定期更新。
七、配置后的效果和我的感受
配置HTTPS后,我的网站发生了明显变化:
- 安全性提升:数据传输加密,用户信息更安全
- SEO优化:搜索引擎对HTTPS网站有更好的排名
- 用户体验:浏览器不再显示"不安全"警告
我的建议:
- 定期检查证书有效期,设置自动续期提醒
- 配置HTTP到HTTPS的重定向
- 考虑使用Let’s Encrypt免费证书实现自动化
总结
通过这次HTTPS配置实践,我深刻体会到:技术配置虽然看似简单,但细节决定成败。从申请证书到最终配置成功,我花了大约2小时,主要时间都花在排查问题上。
我的完整配置流程:
- 申请腾讯云免费SSL证书(3分钟审核)
- 下载证书并上传到服务器
- 配置Nginx SSL设置
- 检查并开放防火墙443端口
- 重启Nginx并测试访问
希望我的经验能帮助你少走弯路,顺利完成HTTPS配置!如果你在配置过程中遇到问题,欢迎在评论区留言讨论。
版权声明
未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!
本文原文链接: https://fiveyoboy.com/articles/start-config-https/
备用原文链接: https://blog.fiveyoboy.com/articles/start-config-https/