如何在Java中从.RSA文件读取CA证书
从JAR签名的.RSA文件中读取证书并获取公钥
方法一:使用命令行工具
1. 直接查看证书信息(含公钥)
用JDK自带的keytool工具执行以下命令,直接输出证书的完整信息(包括公钥):
keytool -printcert -file your-sign-file.RSA
2. 提取证书到单独文件(可选)
如果需要将证书导出为通用的.cer文件,可使用openssl命令(需提前安装OpenSSL):
openssl pkcs7 -inform DER -in your-sign-file.RSA -print_certs -out extracted-cert.cer
导出的.cer文件可通过keytool或其他证书工具进一步处理。
方法二:用Java代码读取
如果需要在程序中自动提取证书和公钥,可通过Java安全API实现:
import java.io.FileInputStream; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.security.PublicKey; public class ExtractRSACert { public static void main(String[] args) throws Exception { // 替换为你的RSA文件路径 String rsaFilePath = "your-sign-file.RSA"; FileInputStream inputStream = new FileInputStream(rsaFilePath); CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); // JAR签名的RSA文件是DER编码的PKCS7结构,直接解析即可获取证书 X509Certificate cert = (X509Certificate) certFactory.generateCertificate(inputStream); inputStream.close(); // 获取公钥 PublicKey publicKey = cert.getPublicKey(); // 输出相关信息 System.out.println("证书主体: " + cert.getSubjectDN().getName()); System.out.println("公钥算法: " + publicKey.getAlgorithm()); System.out.println("公钥内容: " + publicKey); } }
额外提示
若仅需验证JAR签名的有效性,无需手动提取公钥,直接使用jarsigner工具即可:
jarsigner -verify your-target.jar
返回jar verified则表示签名有效。
内容的提问来源于stack exchange,提问作者Nexon
相关产品推荐
相关产品推荐

