自签证书生成器

在浏览器本地生成自签名 SSL/TLS 证书,适用于本地 HTTPS 开发测试、内网服务器和 Docker 容器

在浏览器本地生成自签名 SSL/TLS 证书,支持自定义域名、IP、SAN,适用于本地开发、内网服务器和 Docker 容器,所有操作均在本地完成,私钥不会上传。

场景模版:
证书信息配置
每行一个,支持 DNS:域名IP:地址
生成结果

填写左侧配置后点击「生成证书」

或点击上方场景快速填入并生成

关于自签证书生成器
  • 自签名证书由自己签发,不经过 CA 机构,浏览器会显示安全警告,但 HTTPS 加密功能完整
  • 适用场景:本地 HTTPS 开发(localhost)、内网服务器、Docker 容器、测试环境
  • SAN(主题备用名称)字段支持多域名和 IP,Chrome 58+ 要求证书必须包含 SAN 字段
操作说明
  • 点击上方使用场景(本地开发 / 内网服务器 / Docker 容器 / 通配符域名),可一键填入对应配置,再点击「生成证书」生成
  • 填写 CN(通用名称,通常是域名或 IP),其他字段可选
  • 在 SAN 区域添加所有需要覆盖的域名和 IP(每行一个,格式:DNS:域名IP:地址
  • 点击「生成证书」后可分别复制证书和私钥,或点击「下载证书包」分别下载 .crt.key 文件
  • 支持 Ctrl+Enter 快捷键触发生成
注意事项
  • 4096 位密钥生成较慢(约 10-30 秒),请耐心等待
  • 自签证书仅用于开发测试,严禁用于生产环境(生产环境请使用 Let's Encrypt 或商业 CA)
  • 私钥是敏感信息,请妥善保管,不要提交到代码仓库(建议加入 .gitignore
  • 所有处理均在浏览器本地完成,私钥不会上传到任何服务器
自签证书与 PKI 知识详解
自签证书 vs CA 签发证书
对比项 自签证书 CA 签发证书(Let's Encrypt) 商业 CA 证书
浏览器信任 ❌ 显示安全警告 ✅ 自动信任 ✅ 自动信任
费用 免费 免费 数百至数千元/年
有效期 自定义(最长 10 年) 90 天(需自动续签) 1-2 年
适用场景 本地开发、内网、测试 公网域名、生产环境 企业生产、EV 证书
域名要求 无(支持 localhost、IP) 需要公网可访问的域名 需要已注册域名
X.509 证书主要字段说明
字段 缩写 说明 示例
Common Name CN 通用名称,通常是主域名或 IP(必填 localhost
Subject Alternative Name SAN 主题备用名称,现代浏览器以此为准(必须包含 DNS:localhost, IP:127.0.0.1
Organization O 组织/公司名称 My Company Ltd.
Organizational Unit OU 部门名称 Engineering
Country C 国家代码(ISO 3166-1 alpha-2,两位大写字母) CN
State/Province ST 省/州 Beijing
Locality L 城市 Beijing
各平台信任自签证书的方法
Windows
# 方法一:双击 .crt 文件 → 安装证书
# → 选择「本地计算机」→「受信任的根证书颁发机构」
# 方法二:PowerShell(管理员)
Import-Certificate -FilePath cert.crt \
  -CertStoreLocation Cert:\LocalMachine\Root
macOS
# 方法一:双击 .crt → 钥匙串访问 → 始终信任
# 方法二:命令行
sudo security add-trusted-cert \
  -d -r trustRoot \
  -k /Library/Keychains/System.keychain \
  cert.crt
Linux(Ubuntu/Debian)
sudo cp cert.crt \
  /usr/local/share/ca-certificates/
sudo update-ca-certificates
Docker / Nginx
# nginx.conf
ssl_certificate /etc/ssl/cert.crt;
ssl_certificate_key /etc/ssl/cert.key;
# Dockerfile
COPY cert.crt /etc/ssl/
COPY cert.key /etc/ssl/
openssl 命令速查
生成自签证书(命令行等效)
# 一步生成(2048 位 RSA,365 天)
openssl req -x509 -newkey rsa:2048 \
  -keyout cert.key -out cert.crt \
  -days 365 -nodes \
  -subj "/CN=localhost/O=Dev/C=CN" \
  -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"
验证与转换
# 查看证书内容
openssl x509 -in cert.crt -text -noout
# 验证私钥与证书匹配
openssl x509 -noout -modulus -in cert.crt | md5sum
openssl rsa -noout -modulus -in cert.key | md5sum
# 转换为 PFX(IIS 使用)
openssl pkcs12 -export -out cert.pfx \
  -inkey cert.key -in cert.crt
常见问题与解决方法
问题 原因 解决方法
浏览器显示「您的连接不是私密连接」 自签证书未被系统信任 将证书导入系统受信任根证书库(见上方各平台方法)
NET::ERR_CERT_COMMON_NAME_INVALID 访问的域名/IP 不在 SAN 列表中 重新生成证书,在 SAN 中添加对应域名或 IP
curl 报 SSL 证书验证失败 curl 不信任自签证书 使用 --cacert cert.crt 指定证书,或临时用 -k 跳过验证
Java 应用报 PKIX path building failed JVM 信任库不包含自签证书 keytool -import -alias myca -keystore $JAVA_HOME/lib/security/cacerts -file cert.crt
iOS / Android 不信任证书 移动端需要手动安装并信任 iOS:设置 → 通用 → 关于本机 → 证书信任设置;Android:设置 → 安全 → 安装证书