SSL/TLS 调用 Azure Vision 时出现握手错误 API

SSL/TLS Handshake error while calling Azure Vision API

我有一个 spring 基于引导的微服务,我在其中使用 Microsoft Azure Computer Vision API 从 PDF 文件读取数据。将微服务容器化后,容器工作正常,我可以在我的机器上 send/receive 数据 to/from 计算机视觉 API。但是,当我 运行 这个容器在基于 Azure 的 Linux 虚拟机上时,容器无法与 Computer Vision API 通信并抛出异常 java.lang.RuntimeException: javax.net.ssl.SSLKeyException: RSA premaster secret error。此外,spring-boot jar 能够与 VM 上的 Azure 通信并且不会抛出此类异常。

您认为我需要将任何自签名证书传递给容器才能使其能够顺利通信吗?

我认为使用这些容器的最大优势在于它使代码平台独立。那么,为什么这个错误只在 Azure VM 上抛出,而 运行 在我的机器上完全没问题?请指教

java.lang.RuntimeException: javax.net.ssl.SSLKeyException: RSA premaster secret error

在本地计算机上运行良好,但是当 运行 Azure Linux VM 上的容器无法运行时,Linux VM 和 Java 之间可能存在兼容性问题] JRE的。 基于上述错误,解决方案是从您的服务器类路径中删除更新的 java 版本并尝试安装旧的 java 版本

请参考此 link 在此处对上述错误进行了相同的讨论:https://community.oracle.com/tech/developers/discussion/1533888/another-rsa-premaster-secret-error

其次,尝试在 java 面板中设置 SSL/TLS 参数,因为 SSL 证书是 Web 服务器上的一段代码,可为在线通信提供安全性。当 Web 浏览器访问您的安全网站时,SSL 证书会启用加密连接。这有点像在通过邮件发送之前将一封信封在信封中。

Supported SSL/TLS versions by JDK version

我能够找出错误所在。 JDK/JRE 设置没有任何问题。出现此问题的原因是 Azure VM 上安装的 docker 引擎版本。

基于 Azure 的计算机视觉 API 要求服务器符合 TLS1.2,而我机器上安装的 docker 引擎版本较旧,不支持 TLS1.2。将 docker 引擎升级到最新版本后,我能够修复它。