Error: unable to verify the first certificate - Springboot

Error: unable to verify the first certificate - Springboot

我写了一个 restful API 项目,它是使用 spring 引导开发的,我正在使用嵌入式 tomcat 和 运行 一个 jar linux 服务器。

API 现场直播:

  https://api.arevogroup.com:8089/api/regions

我可以在给定的屏幕截图中看到经过验证且正确的 SSL。

但是当我调用这些 api 时,邮递员中出现了这个异常。

这些 APIs 由基于 Xamrin 的应用程序使用,当使用 iPhone 使用时似乎一切正常,但当通过 APIs 访问时出现相同的异常=36=].

我想,我生成 ssl 证书的方式有一些问题。

我使用了 pfx 文件,我在属性文件中的 SSL 配置如下所示:

###SSL Key Info
security.require-ssl=true
server.ssl.key-store-password=PASSWORD
server.ssl.key-store=classpath:ssl_pfx.pfx
server.ssl.key-store-type=PKCS12
  1. 我有两个问题,如果禁用 ssl 验证,通信是否仍会加密? (中间人攻击仍然是可能的,但信息仍然会被加密,对吧?)。
  2. 如果没有,我该如何解决?

您无法禁用 server 证书的验证。没有浏览器会允许您这样做,除非有例外情况(用户必须确认例外情况)。如果客户端禁用验证,则通信将被加密(即不可能进行被动攻击)。

您看到的错误是由服务器配置错误引起的。 您的证书链只包含您服务器的证书,缺少中间证书 CN=Go Daddy Secure Certificate Authority - G2。您需要从 Go Daddy(即名为 gdig2.crt.pem 的那个)下载它并将其添加到您的密钥库。

参考this question如何操作。

有些浏览器会缓存中间证书,即使缺少一个证书也能验证您的网站。但是你不应该依赖它。

security.require-ssl=true
server.ssl.key-store-password=PASSWORD
server.ssl.key-store=keystore.jks
server.ssl.key-store-provider=SUN
server.ssl.key-store-type=JKS

使用了 jks 文件而不是 pfx,它运行良好。也想与他人分享。