阿里云免费SSL证书申请与Flask部署全攻略
本文详细介绍了从阿里云申请免费SSL证书到Flask博客部署HTTPS的全流程。主要内容包括:1)阿里云免费DV证书申请步骤(自动DNS验证);2)服务器证书部署与权限设置;3)Flask应用实现HTTPS服务与HTTP自动跳转的代码实现;4)防火墙配置与后台运行管理。文章提供了可直接使用的生产级代码,支持双端口监听和301重定向,并分享了常见问题解决方案。该方案适合个人博客使用,免费证书有效期为
本文记录了我从阿里云申请免费SSL证书,到完整部署到Flask个人博客的全过程。包含详细步骤、踩坑经验和可直接使用的生产级代码。
前言
最近给自己的Flask个人博客部署了HTTPS,整个过程比想象中简单很多。阿里云提供免费的DV SSL证书,有效期3个月,对于个人博客来说完全够用。本文将分享完整的操作流程,包括证书申请、下载、服务器配置和Flask代码实现。
关于部署个人网站,欢迎查看
https://blog.csdn.net/qq_33163046/article/details/160987186
我的证书信息:
- 证书类型:DigiCert DV 单域名证书
- 绑定域名:
www.xiaoxiangzai.com.cn - 有效期至:2026-08-22
一、阿里云免费SSL证书申请
1.1 进入数字证书管理服务
登录阿里云控制台,搜索"SSL证书"或进入【数字证书管理服务】→【SSL证书管理】。

选择个人测试证书(免费版),点击"立即购买"。
1.2 确认订单(0元购)
虽然是免费证书,但仍需要走下单流程,应付金额为0元。

点击"支付"完成0元订单。
1.3 填写证书申请信息
支付成功后,进入证书申请页面,填写以下信息:

关键配置项:
- 证书绑定域名:填写你的完整域名,如
www.xiaoxiangzai.com.cn - 域名验证方式:选择"自动DNS验证"(推荐,最方便)
⚠️ 注意:自动DNS验证要求域名在阿里云DNS解析管理,如果域名在其他服务商,需要手动添加DNS记录。
1.4 DNS验证
提交申请后,系统会自动生成DNS验证信息:

如果域名在阿里云管理,系统会自动添加TXT解析记录。验证通过后,点击"验证"按钮。
💡 提示:域名验证成功后,验证记录在证书签发后才能删除,否则会导致签发失败。
1.5 等待签发
验证通过后,等待CA机构审核签发,通常需要几分钟到十几分钟。

证书状态变为"已签发"后,就可以下载使用了。
1.6 下载证书
点击"下载"按钮,选择适合你服务器类型的证书格式:

对于Flask应用,选择其他类型(pem/key格式)或Nginx类型都可以。
下载后解压,得到两个核心文件:

www.xiaoxiangzai.com.cn.pem(证书文件)www.xiaoxiangzai.com.cn.key(私钥文件)
二、服务器部署准备
2.1 创建证书目录
mkdir -p /etc/ssl/xiaoxiangzai
2.2 上传证书文件
将下载的两个文件上传到服务器:
# 使用scp或sftp上传
scp www.xiaoxiangzai.com.cn.pem root@your-server:/etc/ssl/xiaoxiangzai/
scp www.xiaoxiangzai.com.cn.key root@your-server:/etc/ssl/xiaoxiangzai/
2.3 设置私钥权限(重要!)
chmod 600 /etc/ssl/xiaoxiangzai/*.key
私钥文件必须设置严格权限,否则可能存在安全风险。
三、Flask HTTPS部署代码
以下是我最终使用的代码,支持:
- ✅ HTTPS加密访问(浏览器显示安全小锁)
- ✅ HTTP自动301跳转到HTTPS
- ✅ 双端口监听(80 + 443)
- ✅ 后台稳定运行
from flask import Flask, render_template_string, redirect, request
from threading import Thread
app = Flask(__name__)
# 博客首页
@app.route('/')
def index():
blog_content = """
<h1>欢迎来到我的个人博客</h1>
<p> Flask 个人博客 </p>
<p> 已成功配置 HTTPS 安全访问 </p>
"""
return render_template_string(blog_content)
# 80 端口 → 专门用于自动跳转到 HTTPS
def run_http():
http_app = Flask(__name__)
@http_app.route('/', defaults={'path': ''})
@http_app.route('/<path:path>')
def https_redirect(path):
return redirect(f"https://www.xiaoxiangzai.com.cn/{path}", code=301)
http_app.run(host='0.0.0.0', port=80, debug=False)
# 主程序启动
if __name__ == '__main__':
# 启动 80 端口跳转服务
Thread(target=run_http).start()
# 启动 443 端口 HTTPS 主站
app.run(
debug=False,
host='0.0.0.0',
port=443,
ssl_context=(
'/etc/ssl/xiaoxiangzai/www.xiaoxiangzai.com.cn.pem',
'/etc/ssl/xiaoxiangzai/www.xiaoxiangzai.com.cn.key'
)
)

代码要点说明:
- 双线程设计:使用
Thread同时启动HTTP(80端口)和HTTPS(443端口)服务 - 301跳转:HTTP请求永久重定向到HTTPS,有利于SEO
- ssl_context:传入证书和私钥路径,启用HTTPS
- debug=False:生产环境必须关闭调试模式
四、防火墙端口放行
确保服务器放行80和443端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
如果是云服务器,还需要在安全组中添加相应端口规则。

五、启动与维护
5.1 关闭旧进程
sudo pkill -f app.py
5.2 后台启动(推荐)
sudo nohup python3 app.py > app.log 2>&1 &
使用nohup可以让程序在关闭终端后继续运行。
5.3 查看运行状态
# 查看进程
ps aux | grep app.py | grep -v grep
# 查看日志
tail -f app.log
六、部署效果验证
完成部署后,访问以下地址验证:
| 访问地址 | 预期结果 |
|---|---|
https://www.xiaoxiangzai.com.cn |
正常访问,浏览器显示安全小锁 🔒 |
http://www.xiaoxiangzai.com.cn |
自动301跳转到HTTPS |
七、常见问题与解决方案
Q1: 提示权限不足
# 使用sudo运行
sudo python3 app.py
Q2: 端口被占用
# 查找占用443端口的进程
sudo lsof -i :443
# 结束进程
sudo kill -9 <PID>
Q3: 证书路径错误
确保证书路径使用绝对路径,且文件确实存在:
ls -la /etc/ssl/xiaoxiangzai/
Q4: 防火墙拦截
检查防火墙和安全组规则,确保80/443端口已开放。
八、总结
本文完整记录了从阿里云申请免费SSL证书到Flask部署的全过程:
- 证书申请:阿里云免费DV证书,0元申请,自动DNS验证
- 证书部署:上传证书到服务器,设置安全权限
- Flask配置:双线程实现HTTP跳转+HTTPS服务
- 运维管理:后台运行、日志查看、进程管理
免费证书虽然有效期只有3个月,但对于个人项目完全够用。到期后可以重新申请部署,也可以考虑购买长期证书。
希望这篇教程对你有帮助!如果有问题欢迎在评论区交流。
参考链接:
📌 版权声明:本文为博主原创文章,转载请注明出处。
📝 更新时间:2026-05-21
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)