在Java程序中使用Amazon Kinesis API时,可能会遇到以下异常:“javax.net.ssl.SSLHandshakeException:PKIX路径构建失败”。此异常通常是由于缺少证书或证书不受信任而引起的。
要解决此问题,需要下载Amazon根证书并将其添加到Java的信任存储中。以下是添加Amazon根证书的代码示例。
/**
* Adds Amazon root certificates to Java trust store.
*/
private static void addAmazonRootCertificates() throws Exception {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
InputStream cert1 = new BufferedInputStream(new FileInputStream("src/main/resources/certificate1.pem"));
X509Certificate certificate1 = (X509Certificate) cf.generateCertificate(cert1);
InputStream cert2 = new BufferedInputStream(new FileInputStream("src/main/resources/certificate2.pem"));
X509Certificate certificate2 = (X509Certificate) cf.generateCertificate(cert2);
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(null); // You don't need the KeyStore instance to come from a file.
ks.setCertificateEntry("certificate1", certificate1);
ks.setCertificateEntry("certificate2", certificate2);
tmf.init(ks);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), new SecureRandom());
SSLContext.setDefault(sslContext);
}
在您的Java应用程序中添加此方法并调用它以添加Amazon根证书。这将解决“PKIX路径构建失败”异常并允许应用程序与Amazon Kinesis API进行安全通信。