我嘗試了幾種使用httpclient,urlconnection等無效訪問休息服務的常用方法。如何在eclipse中使用TLS1.2協議獲取簡單的Java客戶端連接到服務器
我已經閱讀了無數堆棧溢出文章如何做到這一點,沒有任何工程在我的eclipse mobilefirst/RSA環境。我正在使用mobilefirst 7.1.1和RSA 9.1.1運行jdk 1.7。
從我讀到的,你必須設置SSLContext與tls1.2服務器交談......因爲相同的代碼在其他服務器上工作正常。我所看到的只有一種方法可以讓你設置SSLContext,這與ClientHTTPBuilder
一致。
所以這裏有幾個例子:
此示例爲這個網址...但是,使用tls1.2
URL url = new URL("https://wikipedia.org");
URLConnection urlConnection = url.openConnection();
InputStream in = urlConnection.getInputStream();
str = getStringByBufferedReader(in);
第二個例子不是一個:
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, null, null);
HttpClientBuilder clientBuilder = HttpClientBuilder.create().setSslcontext(context);
HttpGet request = new HttpGet(baseURL);
request.addHeader("Authorization", basicAuthorization);
request.addHeader("Accept", "text/plain");
CloseableHttpClient httpClient = clientBuilder.build();
CloseableHttpResponse httpResponse = httpClient.execute(request);
兩種連接類型都會出現以下錯誤:
Exception in Test method = javax.net.ssl.SSLException: Received fatal alert: protocol_version
我也導入了證書。我也試過jdk 1.8無濟於事。
我沒有你的建議,現在收到此錯誤: – Tim
javax.net.ssl.SSLProtocolException:握手警報:unrecognized_name – Tim
我覺得現在我們正在談論真正的問題......這可能是證書問題嗎?我從服務器導入的證書是自簽名證書......不確定在TLS 1.2中是否允許這樣做。通過添加--insecure選項,我可以通過curl工作。它也適用於Chrome和Firefox的各種其他客戶端。 – Tim