我正在使用HttpURLConnection进行POST请求。
我阅读了HttpsURLConnection,它扩展了HttpURLConnection并支持https特定功能(例如SSL)
如果HttpsURLConnection在HttpURLConnection(父类)中使用相同的方法,它将超级调用HttpURLConnection中的方法。
URL url = new URL(callBackUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setConnectTimeout(setConnectTimeout);
connection.setReadTimeout(setConnectTimeout);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
OutputStreamWriter os = new OutputStreamWriter(connection.getOutputStream());
os.write(data.toString());
os.flush();
os.close();
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream())));
while ((output = br.readLine()) != null) {
stringBuffer.append(output);
}
}
但是,当我使用HTTPS网址时,我不断收到以下错误;
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[na:1.8.0_181]
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1964) ~[na:1.8.0_181]
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:328) ~[na:1.8.0_181]
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:322) ~[na:1.8.0_181]
问题,我该如何处理SSL和非SSL连接,就像在PHP中一样,当使用CURL时,您设置了忽略SSL检查
curl_setopt($cHandler, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);
我正在使用Linux,Spring框架和TomCat Web服务器。
有人吗?
答案 0 :(得分:0)
要使HTTPS
首先生效,您需要将SSL证书添加到Java的信任库中...为此,您必须执行以下步骤:
通常,您所使用的JVM的信任库文件将位于%JAVA_HOME%\lib\security\cacerts
。
您可能首先通过运行以下命令查看证书是否已添加到信任库中:
keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts"
一旦确认未将其添加到Java信任库中,就可以使用以下命令添加它:
keytool -import -noprompt -trustcacerts -alias <AliasName> -file <certificate> -keystore <KeystoreFile> -storepass <Password>
完成以下步骤后,您应该能够运行程序而不会遇到与HTTPS相关的问题。
希望有帮助!
EDIT-1 : 上述方法有助于在Windows环境中添加SSL证书。请检查以下article中的Linux版本...