要从 PEM 格式的证书中提取公钥,可以使用 OpenSSL 工具(最常用的证书处理工具)。以下是具体步骤:
前提条件
确保已安装 OpenSSL:
- Linux/macOS:通常系统已预装(可通过
openssl version验证)。 - Windows:需自行安装(如通过 OpenSSL 官网下载,或使用 WSL、Git Bash 等工具内置的 OpenSSL)。
步骤 1:确认证书是 PEM 格式
PEM 证书的特征是文件内容以 -----BEGIN CERTIFICATE-----开头,以 -----END CERTIFICATE-----结尾(可能包含换行符)。例如:
-----BEGIN CERTIFICATE-----
MIICUTCCAfugAwIBAgIBADANBgkqhkiG9w0BAQQFADBXMQswCQYDVQQGEwJDTjEL
MAkGA1UECBMCUE4xCzAJBgNVBAcTAkNOMQswCQYDVQQKEwJPTjELMAkGA1UECxMC
VU4xCzAJBgNVBAMTAkRLMA0GCSqGSIb3DQEBBQUAA4GBADswXU8Qz3+5h6z7QZJz
...(中间内容)...
-----END CERTIFICATE-----
步骤 2:使用 OpenSSL 提取公钥
假设你的证书文件名为 certificate.pem,执行以下命令:
openssl x509 -in certificate.pem -pubkey -noout > public_key.pem
参数说明:
x509:指定处理 X.509 证书。-in certificate.pem:输入证书文件路径。-pubkey:提取公钥。-noout:不输出原始证书内容(仅输出公钥)。> public_key.pem:将提取的公钥保存到public_key.pem文件(可自定义输出路径)。
步骤 3:验证公钥是否正确(可选)
提取后,可通过以下命令查看公钥详情,确认是否与证书匹配:
openssl rsa -pubin -in public_key.pem -text -noout
-pubin:指定输入是公钥(而非私钥)。-text:显示公钥的详细信息(如模数、指数等)。
常见问题
-
证书是 DER 格式怎么办?
如果证书是二进制 DER 格式(非 PEM),需先用
openssl x509 -inform der -in certificate.der -pubkey -noout提取公钥。 -
提示 “openssl 不是内部或外部命令”?
Windows 用户需将 OpenSSL 安装目录添加到环境变量
PATH,或使用完整路径(如C:\OpenSSL-Win64\bin\openssl.exe)。 -
公钥格式说明
提取的公钥默认是 PEM 格式(以
-----BEGIN PUBLIC KEY-----开头),也支持转换为其他格式(如 OpenSSH 公钥),可通过ssh-keygen -f public_key.pem -i -m PKCS8转换(需确认公钥类型)。
通过以上步骤,你可以轻松从 PEM 证书中提取公钥。