在网络安全与数据加密领域,公钥是数字证书的核心组成部分,常用于验证身份、加密通信或数字签名,以下提供多种从证书中提取公钥的方法,操作步骤清晰且适用于不同场景。
OpenSSL是广泛使用的开源工具,支持证书解析与密钥管理。
查看证书内容(以PEM格式为例)
若证书文件为certificate.pem
,执行命令:
openssl x509 -in certificate.pem -text -noout ``` 包含证书持有者、颁发者、有效期及公钥信息。
直接提取公钥并保存
运行以下命令生成公钥文件public_key.pem
:
openssl x509 -in certificate.pem -pubkey -noout > public_key.pem
公钥将以PEM格式存储,可直接用于加密或验证签名。
适用场景:服务器管理员、开发者在本地环境快速操作。
若需集成到代码中,以下为常用语言示例:
Python(使用cryptography
库)
from cryptography import x509 from cryptography.hazmat.primitives.serialization import Encoding, PublicFormat with open("certificate.pem", "rb") as cert_file: pem_data = cert_file.read() cert = x509.load_pem_x509_certificate(pem_data) public_key = cert.public_key().public_bytes( Encoding.PEM, PublicFormat.SubjectPublicKeyInfo ) print(public_key.decode())
Java(使用KeyStore
类)
import java.io.FileInputStream; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; public class ExtractPublicKey { public static void main(String[] args) throws Exception { CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate) cf.generateCertificate( new FileInputStream("certificate.der") ); System.out.println(cert.getPublicKey()); } }
适用场景:开发者在应用程序中自动化处理证书。
对非技术用户,以下工具可快速提取公钥:
注意事项:
-----BEGIN CERTIFICATE-----
开头,文本格式。openssl x509 -inform der -in certificate.der -out certificate.pem
cryptography
库文档:https://cryptography.io/