【发布时间】:2018-03-14 09:38:08
【问题描述】:
我正在尝试为某个端点 URL 调用 REST API,它对于 java.net 的 URL 运行良好,并且在执行相同的操作之后。但是在某些机器上它会因为一些 SSLException 而失败,所以代码被修改如下:
HttpsURLConnection connection = (HttpsURLConnection) new URL( url ).openConnection()
SSLContext sc = SSLContext.getInstance("TLSv1.2")
sc.init(null, null, new SecureRandom())
connection.setSSLSocketFactory(sc.getSocketFactory())
connection.setRequestProperty("charset", "utf-8")
InputStream input = connection.getInputStream()
InputStreamReader reader = new InputStreamReader(input, "utf-8")
BufferedReader buffer = new BufferedReader(reader)
buffer.lines().collect(Collectors.joining("\n"))
现在它又可以正常工作了,如果我没记错的话,它是用于安全通信,但是为什么 SSLexception 在 Linux env 上而不是在 Windows 上,SSLContext.getInstance("TLSv1.2") 将在所有环境中工作,为什么不是 TLSV1。 1 所有环境默认都是1.2或最新版本,如何确保它可以在所有环境上运行?
【问题讨论】:
标签: java ssl ssl-certificate