# 自签证书生成工具 **Repository Path**: ytecnsong/gen-cert ## Basic Information - **Project Name**: 自签证书生成工具 - **Description**: 基于 Python 的自签证书生成工具,为本地开发环境的自定义域名一键生成 Nginx 所需的 PEM 证书、私钥和系统安装用的 CER 证书,无需配置 OpenSSL 环境。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-24 - **Last Updated**: 2026-07-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 自签证书生成工具 ## 背景 在本地开发环境中,为自定义域名(如 `zblog.cm`、`docs.cm`)配置 HTTPS 是一个常见需求。虽然 Let's Encrypt 提供免费的 SSL 证书,但对于仅在本地使用的域名,申请和维护证书显得过于繁琐。 传统的解决方案存在以下问题: - **OpenSSL 命令行复杂**:需要记住多个参数和命令组合 - **Windows 环境兼容性**:Windows 系统默认不自带 OpenSSL,安装配置繁琐 - **证书格式不统一**:Nginx 需要 PEM 格式,系统安装需要 CER 格式,手动转换容易出错 - **权限问题**:使用 PowerShell 生成证书时常遇到权限不足的问题 ## 解决的问题 本工具旨在解决以下痛点: 1. **一键生成多格式证书**:一次运行即可生成 Nginx 所需的 PEM 证书、私钥文件,以及系统安装所需的 CER 证书 2. **跨平台兼容性**:基于 Python 实现,Windows、macOS、Linux 均可运行 3. **无需额外依赖配置**:仅需安装 `cryptography` 库,无需配置 OpenSSL 环境 4. **简化证书安装流程**:自动生成 CER 格式证书,双击即可导入系统 5. **灵活配置**:支持自定义域名,证书有效期长达 10 年 ## 解决方案 ### 技术实现 本工具使用 Python 的 `cryptography` 库实现证书生成,核心流程如下: 1. **生成 RSA 密钥对**:使用 2048 位密钥长度,符合安全标准 2. **构建证书请求**:设置证书主题信息(国家、省份、城市、组织、域名) 3. **自签证书**:使用 SHA-256 算法签名,有效期 10 年 4. **导出多格式文件**: - PEM 格式证书(`{domain}.pem`):用于 Nginx SSL 配置 - PEM 格式私钥(`{domain}.key`):用于 Nginx SSL 配置 - DER 格式证书(`{domain}.cer`):用于安装到系统受信任根证书颁发机构 ### 使用方法 #### 环境要求 - Python 3.x - `cryptography` 库 #### 安装依赖 ```bash pip install cryptography ``` #### 生成证书 ```bash # 使用默认域名(xxxss.cm) python gen-cert.py # 指定域名 python gen-cert.py your-domain.com ``` #### 查看帮助 ```bash python gen-cert.py -h ``` ### 生成的文件 运行脚本后,会在 `当前目录/{domain}/` 目录下生成以下文件: | 文件 | 格式 | 用途 | | -------------- | --- | --------------- | | `{domain}.pem` | PEM | Nginx SSL 证书配置 | | `{domain}.key` | PEM | Nginx SSL 私钥配置 | | `{domain}.cer` | DER | 安装到系统受信任根证书颁发机构 | ### Nginx 配置示例 ```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; # 其他配置... } ``` ### 安装证书到系统 1. 双击 `{domain}.cer` 文件 2. 点击「安装证书」 3. 选择「本地计算机」,点击「下一步」 4. 选择「将所有的证书放入下列存储」 5. 点击「浏览」,选择「受信任的根证书颁发机构」 6. 点击「确定」→「下一步」→「完成」 7. 重启浏览器后生效 ## 优势 - **简化流程**:从复杂的命令行操作简化为一条 Python 命令 - **统一管理**:证书生成、格式转换、安装指导一体化 - **安全可靠**:使用标准的 RSA + SHA-256 加密算法 - **长期有效**:证书有效期长达 10 年,无需频繁更新 ## 注意事项 - 本工具生成的是自签证书,仅适用于本地开发和测试环境 - 自签证书不被公共 CA 机构信任,请勿在生产环境中使用 - 生成的私钥文件请妥善保管,不要泄露给他人