我必须使用证书调用服务器API,所以我已经将cerhtml" target="_blank">文件导入到密钥库中并完成编码,但仍然得到了javax.net.ssl.SSLHandShakeException:Sun.Security.Validator.ValidatoreXception:PKIX路径构建失败:Sun.Security.Provider.CertPath.SunCertPathBuilderException:找不到请求目标的有效证书路径
用于将cer文件导入密钥存储库的命令。keytool-importcert-file d:\kalaivani_all\kalaivani\new_emandate_apgb\servertoservecert\onmagcert.cer-keystore d:\kalaivani_all\kalaivani\new_emandate_apgb\servertoservecert\server_npcikeystore.jks-别名“cedge1”
appPathCertificate="D:/KALAIVANI_ALL/kalaivani/NEW_EMANDATE_APGB/servertoservecert/server_npcikeystore.jks";
System.out.println("appPathCertificate--->"+appPathCertificate);
char[] passphrase = "cedge1".toCharArray(); //password
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(new FileInputStream(appPathCertificate), passphrase); //path
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keystore);
SSLContext context = SSLContext.getInstance("TLS");
TrustManager[] trustManagers = tmf.getTrustManagers();
context.init(null, trustManagers, null);
SSLSocketFactory sf = context.getSocketFactory();
URL url = new URL(common_utility.getEmandateServerResponeURL());
System.setProperty("javax.net.ssl.keyStore", appPathCertificate);
System.setProperty("javax.net.ssl.keyStorePassword", "cedge1");
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
String proxyhost=common_utility.getProxyHost();
String proxyport=common_utility.getProxyPort();
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyhost, new Integer(proxyport)));
HttpsURLConnection conn = (HttpsURLConnection ) url.openConnection(proxy);
conn.setSSLSocketFactory(sf);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setUseCaches (false);
System.out.println("GETISSUE Request : "+str_jsonparams);
OutputStream os = conn.getOutputStream();
os.write(str_jsonparams.getBytes());
os.flush();
System.out.println("Response code :"+conn.getResponseCode());
您将面临在SSL握手
过程中验证服务器响应的问题。您需要在信任存储
中添加中间件和根证书。这些证书将用于验证服务器标识。例如,在建立连接时,您将收到stackexchange
服务器证书。然后,为了验证标识,您必须在信任存储中具有R3 CERT
(中间CA)和DST根CA X3
(根CA)。
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keystore);
context.init(null, trustManagers, null);
在您的示例中,当您使用keystore
初始化trustmanagerFactory
时,您必须将intermediates
和root
证书放在密钥库中。这里将不使用JDK存储cacerts
。
我是java中ssl的新手,需要帮助。我的应用程序需要调用支付提供商服务器,使用他们提供的证书和我的公钥。 我的输出:
问题内容: 我已经开始为API编写包装,该包装要求所有请求都通过HTTPS进行。我不想在开发和测试它时向实际的API发出请求,而是希望在本地运行自己的服务器来模拟响应。 我对如何生成创建HTTPS服务器并向其发送请求所需的证书感到困惑。 我的服务器看起来像这样: Pem文件是使用以下命令生成的: 一个请求看起来像这样: 通过此设置,我得到了,所以我认为我需要为该请求添加一个选项。 所以我的问题是我
我必须使用在HTTPs上运行的rest服务。制作人给了我证书和方法参数。您能告诉我如何使用该服务以及如何使用代码中的证书吗。我使用的是Spring4和Java8。请分享代码片段。
当使用Citrus测试框架对服务器进行测试时,我无法禁用证书检查。 我得到以下错误:org.springframework.web.client.resourceAccessException:“”的POST请求上的I/O错误:证书与证书主题的公共名称不匹配:;嵌套异常是javax.net.ssl.SSLException。 下面是用于在Citrus中创建endpoint的代码片段: 任何想法都欢
问题内容: 我正在尝试获取远程服务器的证书,然后可以将其用于添加到我的密钥库中并在我的Java应用程序中使用。 一位资深开发人员(正在度假:()告诉我可以运行此程序: 为了获得原始证书,我可以将其复制并导出。我收到以下输出: 我也尝试过这个选项 和这个(在debian上运行) 但是得到同样的错误。 此消息源说我可以使用该CApath标志,但似乎无济于事。我尝试了多条路径都无济于事。 请让我知道我要
嗨,我想用Swift发出Https请求。当前im通过ip地址访问本地服务器。通过访问证书,本地服务器有一个SSL证书。要向服务器发出请求,当前我正在这样做。 我已经在plist中使用了上述代码来发出请求 在plist中,我已经给出了这样的结果,但我仍然得到了这样的错误