技术笔记
当前位置:首页 > 商学院 > 技术笔记 > 正文内容

技术笔记

本地自定义域名自签证书生成工具

豫唐网络2026-07-24 21:4512

在本地开发环境中,为自定义域名(如 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 机构信任,请勿在生产环境中使用

  • 生成的私钥文件请妥善保管,不要泄露给他人


扫描二维码推送至手机访问。

版权声明:本文由汤阴县豫唐网络科技有限公司发布,如需转载请注明出处。

本文链接:https://www.ytecn.com/post/976.html

分享给朋友:
返回列表

上一篇:weburl跳转加好友

没有最新的文章了...

相关文章

php将编码转换为UTF8

php将编码转换为UTF8

主要用于编码不统一导致出现乱码的情况,此函数会自动监测非UTF8编码转成UTF8编码。functionConverCode($str){ $encode=mb_detect_encoding($st...

vscode运行php和Composer

vscode运行php和Composer

需要用到的工具1、安装php(官网下载)2、安装composer(官网)3、vscode插件PHP Server4、vscode插件PHP Debug5、windows 11系统步骤1、安装php安装...

phpRSA加密解密函数

phpRSA加密解密函数

使用方法:加密$txt="ytecn"; $pubkey="公钥" $macdata=RSAEncrypt::encrypt($txt,$pubkey);解...

php远程提交post函数

php远程提交post函数

远程提交方式:post范围:所有php类型程序函数代码functionpost($params,$url){ $ch=curl_init(); curl_setopt($ch,CURLOPT_UR...

php分割string并取某项数据

php分割string并取某项数据

对string进行分割,并取某项数据。应用案例$txt="姓名|电话|手机号|豫唐"; $name=SplitAndGet($txt,"|",3); ech...

php删除连续空格

php删除连续空格

对字段中的连续空格进行删除只保留一个。应用案例$txt="abcytecn1"; $name=RemoveMoreSpaces($sss); echo$name;输出结果为:a...