Java 如何解决aws lambda中PKIX路径构建失败的问题
我正在创建AWS Lambda,它将使用客户端服务器中私有队列中的数据。它需要添加一些可信证书。在本地,我执行了以下命令:Java 如何解决aws lambda中PKIX路径构建失败的问题,java,amazon-web-services,aws-lambda,ssl-certificate,pkix,Java,Amazon Web Services,Aws Lambda,Ssl Certificate,Pkix,我正在创建AWS Lambda,它将使用客户端服务器中私有队列中的数据。它需要添加一些可信证书。在本地,我执行了以下命令: keytool -import -v -trustcacerts -alias "clientcert" -file "..\client.cer" -keystore cacerts -keypass changeit -storepass changeit 它工作得很好。 现在我已经在aws控制台上传了我的lambda函数,我得到了如下相同的错误: Caused by
keytool -import -v -trustcacerts -alias "clientcert" -file "..\client.cer" -keystore cacerts -keypass changeit -storepass changeit
它工作得很好。
现在我已经在aws控制台上传了我的lambda函数,我得到了如下相同的错误:
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
是否有人可以建议我如何在控制台中将受信任证书添加到aws lambda中您也可以通过编程方式创建信任库请参见下面的代码以供参考
// Declare path of trust store and create file
String trustStorePath = "/tmp/trust";
// try creating above directory and path if you get error no such file
// Create Truststore using Key store api
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
// locate the default truststore
String filename = System.getProperty("java.home")
+ "/lib/security/cacerts".replace('/', File.separatorChar);
try (FileInputStream fis = new FileInputStream(filename)) {
keyStore.load(fis, "changeit".toCharArray());
}
// Add Certificate to Key store
CertificateFactory certF = CertificateFactory.getInstance("X.509");
Certificate cert = certF.generateCertificate(new FileInputStream("your certificate path"));
keyStore.setCertificateEntry("any alias", cert);
// Write Key Store
try (FileOutputStream out = new FileOutputStream(trustStoreFile)) {
keyStore.store(out, "changeit".toCharArray());
}
// Set Certificates to System properties
System.setProperty("javax.net.ssl.trustStore", trustStorePath);
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
您也可以在aws lambda上进行本地测试。
希望这能解决问题当无法通过OCSP或CLR验证证书未被吊销时,我看到了此消息或类似消息。唉,我还没有在AWS的上下文中看到它,但当我们试图在Jetty上设置HTTPS时,它实际上看起来像是我以前在这里看到的一个问题:*您可以将证书保存在s3中,也可以将其保存在lambda目录的资源中