【问题标题】:Error: unable to verify the first certificate - Springboot错误:无法验证第一个证书 - Springboot
【发布时间】:2021-12-14 15:45:37
【问题描述】:

我已经编写了一个使用 spring boot 开发的 restful API 项目,我正在使用嵌入式 tomcat 并在 linux 服务器上运行一个 jar。

API 位于:

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

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

但是当我调用这些 api 时,邮递员会收到这个异常。

这些 API 由基于 Xamrin 的应用程序使用,使用 iPhone 使用时似乎一切正常,但通过 android 访问 API 时会出现同样的异常。

我猜,我生成 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. 如果没有,我该如何解决这个问题?

【问题讨论】:

    标签: spring-boot ssl tomcat


    【解决方案1】:
    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 并且效果很好。也想与他人分享。

    【讨论】:

      【解决方案2】:

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

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

      请参阅this question了解如何操作。

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

      【讨论】:

        猜你喜欢
        • 2019-02-20
        • 1970-01-01
        • 2022-09-25
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        相关资源
        最近更新 更多