SSL 证书生成器
身份
证书
私钥(请妥善保密!)
浏览器默认不信任自签名证书:仅用于本地开发、测试或私有网络。
直接在浏览器中为本地开发或内部测试生成自签名证书。你可以选择 RSA 密钥长度(2048、3072 或 4096 位)、Common Name、Subject Alternative Names、有效期以及组织基本信息。证书及其私钥在你的浏览器中生成,绝不会发送到我们的服务器;你可将两者下载为可直接用于 Nginx 或 Apache 的 PEM 文件。
证书生成的工作原理
-
1
选择 RSA 密钥长度
大多数测试用 2048 位即可;3072 或 4096 会以速度为代价换取更大的密钥。
-
2
输入主题和 SAN
Common Name 以及证书应覆盖的每个主机名或 IP(现代浏览器忽略 CN,改用 SAN)。
-
3
在浏览器中生成
生成一张自签名证书,并用对应的私钥签名,全部在你的浏览器中本地完成。
-
4
下载结果
PEM 编码的证书(`cert.pem`)和 PEM 格式的私钥(`key.pem`),随时可以安装。
一切都在你的浏览器中进行
此生成器完全在你的浏览器中运行。RSA 密钥对由 JavaScript 加密库在本地生成,证书在你的设备上签名,私钥和证书都不会上传到我们的服务器。即便如此,也请把私钥当作机密:任何持有它的人都能冒充该证书。
自签名意味着什么
你既是颁发者也是主题:证书由其自身的私钥签名,因此没有任何公共证书颁发机构(CA)为它背书。这正是浏览器显示警告的原因。它适合测试、本地开发(localhost、dev.local),以及你能把证书分发给需要信任它的客户端的内部服务器。
如果你需要一张公共互联网所信任的证书,此工具并非合适的步骤:你需要一张由 CA 签名的证书(例如 Let’s Encrypt 或付费 CA),这需要一份证书签名请求(CSR)和域名验证,而这款浏览器工具并不执行它们。
证书中包含的内容
| 字段 | 说明 |
|---|---|
| 主题(CN、O、C) | Common Name、组织、国家/地区 |
| Subject Alternative Names | 覆盖的每个域名或 IP(至关重要!) |
| 公钥 | RSA,由生成的私钥派生 |
| 颁发者 | 与主题相同,因为是自签名 |
| 有效期 | Not Before / Not After(你设定的有效天数) |
| Key Usage | digitalSignature、keyEncipherment |
| Extended Key Usage | serverAuth、clientAuth |
| Basic Constraints | CA:FALSE(叶子证书,而非 CA) |
输出文件
key.pem,私钥(请保护它,权限 0600)cert.pem,自签名证书(公开,可分发)
用于 Nginx
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/cert.pem;
ssl_certificate_key /etc/ssl/private/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
}
用于 Apache 2.4+
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
SSLCertificateKeyFile /etc/ssl/private/key.pem
</VirtualHost>
在你自己的机器上信任该证书
要在你所掌控的机器上消除浏览器警告,请把 cert.pem 导入该系统或浏览器的信任存储。只对你自己生成的证书、在你拥有的设备上这样做。像 mkcert 这样的工具会为多个服务自动搭建本地 CA;而此生成器每次只生成一张自签名证书。
自签名证书不适合的用途
- 公开网站。 用户会看到警告,许多人会离开。
- 第三方 API 集成。 大多数客户端会拒绝未知的颁发者。
- 生产环境。 绝对不行。对开放互联网上的任何东西,请使用 Let’s Encrypt(免费)或付费 CA。
常见问题
不会。密钥对和证书都在你的浏览器中生成并留在你的设备上;不会上传任何内容。即便如此,也请对下载的 key.pem 文件保密,因为任何持有它的人都能冒充该证书。
如果会有第三方连接,则不可以。浏览器会显示醒目的警告。请使用由免费(Let’s Encrypt、ZeroSSL)或付费 CA 签名的证书。自签名适用于你掌控两端的内部网络中的机器对机器通信。
过去 CN 存放主域名。现代浏览器在主机验证时忽略 CN,只使用 SAN。请始终把每个主机名都写入 SAN;CN 只设为主域名,仅作可读的标识。
可以,在 SAN 中填入 *.example.com。它覆盖一级子域名。若需多级,请添加多个通配符(*.example.com 和 *.dev.example.com)。
相关工具
bcrypt 哈希生成器
生成 bcrypt 哈希,或用明文密码对照已有的 bcrypt 哈希进行验证。一个工具内并排支持生成和验证。
凯撒密码编码器
使用凯撒密码加密和解密文本。支持任意 1-25 位移,ROT13 可作为特殊情况处理,并保留标点和大小写。
Base32 编码器和解码器
使用 RFC 4648 字母表编码和解码 Base32 字符串。适用于 TOTP 密钥、大小写不敏感的令牌和人工输入的标识符。
bcrypt 生成器
从 plaintext password 生成 bcrypt hash。Cost factor 可在 4 到 13 之间调整,兼容 Laravel、Django、Node 和 PHP。
Base64 文件编码器
将任意文件(PDF、ZIP、图片、可执行文件)编码为 Base64 文本,用于嵌入 JSON、邮件、YAML 或 data URI。在浏览器本地运行,无需上传。
Base58 编码器和解码器
编码 UTF-8 文本或十六进制字节,并使用 Bitcoin、Ripple 或 Flickr 字母表安全解码 Base58。