可使用 keytool(JDK 自带工具)通过 -genkeypair 命令直接生成密钥对并自签名证书,无需先生成 CSR。典型命令如下:
keytool -genkeypair -alias myserver \
-keyalg RSA -keysize 2048 \
-storetype PKCS12 -keystore server.p12 \
-validity 365 \
-dname "CN=localhost,OU=Dev,O=MyOrg,L=Beijing,ST=Beijing,C=CN" \
-keypass changeit -storepass changeit该命令生成一个 PKCS#12 格式的密钥库(server.p12),其中包含:RSA 2048 位私钥、自签名的 X.509 v3 证书(有效期 365 天)、主体 DN 为指定值。证书由 keytool 内置的自签名 CA 签发,不经过任何第三方 ssl证书 机构验证。
若需导出 PEM 格式证书供 Nginx/Apache 使用,可分两步操作:
keytool -exportcert -alias myserver -file server.crt -keystore server.p12 -rfc -storepass changeitopenssl pkcs12 -in server.p12 -nodes -nocerts -out server.key(提示输入 keystore 密码后输出 PEM 私钥)注意:自签名证书无法被浏览器默认信任,访问时会触发 NET::ERR_CERT_AUTHORITY_INVALID 等警告;仅适用于开发测试、内网服务或已手动将根证书导入客户端信任库的场景。
CN 或 subjectAltName 必须与实际访问域名一致;keytool 1.8.0_281+ 支持 -ext SAN=dns:example.com,ip:192.168.1.10 添加 SAN 扩展changeit 等默认密码;-keypass 与 -storepass 应设为强密码且分开管理加密您的网站,赢得客户信任!