本地自定义域名自签证书生成工具
在本地开发环境中,为自定义域名(如 zblog.cm、docs.cm)配置 HTTPS 是一个常见需求。虽然 Let's Encrypt 提供免费的 SSL 证书,但对于仅在本地使用的域名,申请和维护证书显得过于繁琐。
项目git地址:gitee地址
传统的解决方案存在以下问题:
OpenSSL 命令行复杂:需要记住多个参数和命令组合
Windows 环境兼容性:Windows 系统默认不自带 OpenSSL,安装配置繁琐
证书格式不统一:Nginx 需要 PEM 格式,系统安装需要 CER 格式,手动转换容易出错
权限问题:使用 PowerShell 生成证书时常遇到权限不足的问题
解决的问题
本工具旨在解决以下痛点:
一键生成多格式证书:一次运行即可生成 Nginx 所需的 PEM 证书、私钥文件,以及系统安装所需的 CER 证书
跨平台兼容性:基于 Python 实现,Windows、macOS、Linux 均可运行
无需额外依赖配置:仅需安装 cryptography 库,无需配置 OpenSSL 环境
简化证书安装流程:自动生成 CER 格式证书,双击即可导入系统
灵活配置:支持自定义域名,证书有效期长达 10 年
解决方案
技术实现
本工具使用 Python 的 cryptography 库实现证书生成,核心流程如下:
生成 RSA 密钥对:使用 2048 位密钥长度,符合安全标准
构建证书请求:设置证书主题信息(国家、省份、城市、组织、域名)
自签证书:使用 SHA-256 算法签名,有效期 10 年
导出多格式文件:
PEM 格式证书({domain}.pem):用于 Nginx SSL 配置
PEM 格式私钥({domain}.key):用于 Nginx SSL 配置
DER 格式证书({domain}.cer):用于安装到系统受信任根证书颁发机构
使用方法
环境要求
Python 3.x
cryptography 库
安装依赖
pip install cryptography
生成证书
python gen-cert.py
自定义域名
修改脚本第 9 行的 cert_name 变量:
cert_name = "your-domain.com"
生成的文件
运行脚本后,会在 当前目录/{domain}/ 目录下生成以下文件:
文件格式用途
{domain}.pemPEMNginx SSL 证书配置
{domain}.keyPEMNginx SSL 私钥配置
{domain}.cerDER安装到系统受信任根证书颁发机构
Nginx 配置示例
server {
listen 443 ssl;
server_name zblog.cm;
root D:/2026/EServer-data/www/zblog.cm;
ssl_certificate D:/2026/EServer-data/ssl/zblog.cm/zblog.cm.pem;
ssl_certificate_key D:/2026/EServer-data/ssl/zblog.cm/zblog.cm.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 其他配置...
}安装证书到系统
双击 {domain}.cer 文件
点击「安装证书」
选择「本地计算机」,点击「下一步」
选择「将所有的证书放入下列存储」
点击「浏览」,选择「受信任的根证书颁发机构」
点击「确定」→「下一步」→「完成」
重启浏览器后生效
优势
简化流程:从复杂的命令行操作简化为一条 Python 命令
统一管理:证书生成、格式转换、安装指导一体化
安全可靠:使用标准的 RSA + SHA-256 加密算法
长期有效:证书有效期长达 10 年,无需频繁更新
注意事项
本工具生成的是自签证书,仅适用于本地开发和测试环境
自签证书不被公共 CA 机构信任,请勿在生产环境中使用
生成的私钥文件请妥善保管,不要泄露给他人

