Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决aws lambda中PKIX路径构建失败的问题_Java_Amazon Web Services_Aws Lambda_Ssl Certificate_Pkix - Fatal编程技术网

Java 如何解决aws lambda中PKIX路径构建失败的问题

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

我正在创建AWS Lambda,它将使用客户端服务器中私有队列中的数据。它需要添加一些可信证书。在本地,我执行了以下命令:

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目录的资源中