生成

OpenSSL 命令生成器

选任务、填名字,直接得到能运行的 OpenSSL 命令,并标注 OpenSSL 3 的差异。

浏览器本地运行 你输入的内容只在本地用 JavaScript 处理,不会上传到 ssl.sh。

最后核实

OpenSSL 命令生成器把一张小表单变成正确的 openssl 命令。选一个任务,比如“新私钥 + 带 SAN 的 CSR”或“PFX → PEM”,填上域名和文件名,复制命令。输入时命令会实时更新。

怎么用

  1. 从列表里选任务,分为私钥/CSR/证书、查看和验证、格式转换、测试服务器四组。
  2. 填出现的字段:域名、其他 SAN、文件名、主机和端口。
  3. 复制命令,在服务器终端里执行。

例如为两个域名生成 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 哈希。

版本差异

  • -addext 从 OpenSSL 1.1.1 开始才有。CentOS 7 这类老系统要把 SAN 写进配置文件。
  • -nodes 表示私钥不加密,Web 服务器需要这样;OpenSSL 3 也可以写 -noenc。
  • OpenSSL 3 生成的 PFX 默认用 AES-256 和 HMAC-SHA256,Windows Server 2016、Java 8 需要 3DES/SHA-1 兼容参数。
  • 不想敲命令,可以直接用浏览器里的 CSR 生成器、证书格式转换和私钥匹配。

常见问题

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 ...,打印完证书就会退出。

资料来源

  1. OpenSSL req
  2. OpenSSL x509
  3. OpenSSL pkcs12
  4. OpenSSL s_client