生成
OpenSSL 命令生成器
选任务、填名字,直接得到能运行的 OpenSSL 命令,并标注 OpenSSL 3 的差异。
浏览器本地运行 你输入的内容只在本地用 JavaScript 处理,不会上传到 ssl.sh。
OpenSSL 命令生成器把一张小表单变成正确的 openssl 命令。选一个任务,比如“新私钥 + 带 SAN 的 CSR”或“PFX → PEM”,填上域名和文件名,复制命令。输入时命令会实时更新。
怎么用
- 从列表里选任务,分为私钥/CSR/证书、查看和验证、格式转换、测试服务器四组。
- 填出现的字段:域名、其他 SAN、文件名、主机和端口。
- 复制命令,在服务器终端里执行。
例如为两个域名生成 ECDSA 私钥和 CSR:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:P-256 -nodes \
-keyout example.com.key -out example.com.csr -subj /CN=example.com \
-addext subjectAltName=DNS:example.com,DNS:www.example.com
支持的任务
- 私钥和证书:RSA、ECDSA 私钥,带 SAN 的 CSR,用已有私钥生成 CSR,自签名证书。
- 查看:证书和 CSR 详情、到期时间(本地文件或线上服务器)、指纹和 SPKI pin、验证证书链、证书/私钥/CSR 是否匹配。
- 转换:PEM ↔ DER、PEM + 私钥 → PFX(含兼容模式)、PFX → PEM、P7B → PEM。
- 测试服务器:带 SNI 的
s_client、SMTP/IMAP/POP3/FTP/XMPP/PostgreSQL 的 STARTTLS、TLS 1.0–1.3 支持情况、TLSA 哈希。
版本差异
常见问题
openssl pkcs12 报 unsupported 或提到 RC2,怎么办?
OpenSSL 3 把 RC2 等老算法挪到了 legacy provider,读取旧 PFX 时加 -legacy。要给老版 Windows 或 Java 生成 PFX,用 -keypbe PBE-SHA1-3DES -certpbe PBE-SHA1-3DES -macalg sha1。
怎么看自己的 OpenSSL 版本?
执行 openssl version。CentOS 7 自带的是 1.0.2,不支持 -addext 和 TLS 1.3;Ubuntu 22.04 及以后、Debian 12 及以后带的是 OpenSSL 3。
s_client 执行后卡住不动?
s_client 握手后在等输入。像生成的命令那样加 </dev/null,或者用 echo | openssl s_client ...,打印完证书就会退出。