【发布时间】:2023-11-27 03:51:01
【问题描述】:
客户端已提供 2 个 '.txt' 格式的证书,我需要在运行时添加这些证书,同时调用 SOAP 服务。无法添加“.txt”格式文件,因为我越来越喜欢“无效格式”。证书在 txt 文件的顶部和底部有“-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”标题,所以它是 PEM 类型文件(我假设)。任何帮助/建议都将不胜感激。
遇到异常 ::
Exception in thread "main" java.io.IOException: Invalid keystore format
使用下面的代码..
public KeyManagerFactory getKeyManagerFactory() throws UnrecoverableKeyException, CertificateException, KeyStoreException, IOException, NoSuchAlgorithmException {
InputStream inputStream = null;
KeyStore ts = null;
KeyManagerFactory keyManagerFactory = null;
try {
ts = KeyStore.getInstance("JKS");
inputStream = this.getClass().getClassLoader().getResourceAsStream("publicCert.txt");
ts.load(inputStream, null);
keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(ts, null);
} catch (Exception e) {
throw e;
} finally {
try {
inputStream.close();
} catch (Exception e) {
throw e;
}
}
return keyManagerFactory;
}
得到答案后,使用下面的代码,它正在工作
rootInterIS = new FileInputStream("rootIntermediaryCertificate.txt");
domainIS = new FileInputStream("domainCertificate.txt");
keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(null);
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
X509Certificate rootInterCert = (X509Certificate) certFactory.generateCertificate(rootInterIS);
X509Certificate domainCert = (X509Certificate) certFactory.generateCertificate(domainIS);
keystore.setCertificateEntry("domainCertificate", domainCert);
keystore.setCertificateEntry("rootInterCe", rootInterrtificateCert);
trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustManagerFactory.init(keystore);
【问题讨论】:
标签: java ssl-certificate keystore pem jks