java - 在aws中导入外部证书

标签 java amazon-web-services security ssl aws-lambda

尝试从 aws lambda 连接到外部 soap 服务,但遇到异常。

com.sun.xml.internal.ws.client.ClientTransportException:HTTP 传输错误:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider .certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

尝试从本地环境调用服务时,我遇到了同样的异常。使用keytool命令导入jre/lib/security文件夹下的安全证书后解决。

如何在AWS中导入外部安全证书解决异常。

我已经完成了以下 link .

注意::我有来自浏览器的证书,但我没有私钥。

最佳答案

我是这样解决的:

        //locate the default truststore
        String filename = System.getProperty("java.home") + "/lib/security/cacerts".replace('/', File.separatorChar);

        KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());

        try (FileInputStream fis = new FileInputStream(filename)) {

            keystore.load(fis, "changeit".toCharArray());
        }

        CertificateFactory cf = CertificateFactory.getInstance("X.509");

        //Input stream to cert file
        Certificate caCert = cf.generateCertificate(IOUtils.toInputStream(CA_CERT));
        keystore.setCertificateEntry("ca-cert", caCert);

        //can only save to /tmp from a lambda
        String certPath = "/tmp/CustomTruststore";

        try (FileOutputStream out = new FileOutputStream(certPath)) {

            keystore.store(out, "MyPass".toCharArray());
        }

        System.setProperty("javax.net.ssl.trustStore", certPath);
        System.setProperty("javax.net.ssl.trustStorePassword","MyPass");

关于java - 在aws中导入外部证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47175713/

相关文章:

java - Android更改错误验证文本字段的颜色

java - Tomcat 不允许我使用 Jersey (Jax-RS) 发送@POST 请求

java - 如何在 java 中获取 http 的响应?

security - 盐和密码 - 前缀或后缀

java - WebSphere 应用程序 > 安全角色到用户/组映射 - 缺失

java - Java 流阶段是连续的吗?

Java Web服务 java.lang.ClassCastException : org. apache.cxf.jaxws.ServiceImpl

javascript - 亚马逊云搜索不工作

python - 将 Pandas 数据帧写入 S3 存储桶 (AWS)

java - 这是一种安全的加密方法吗