SpringBoot接口报unable to verify the first certificate错误相关问题咨询
关于SSL校验关闭的加密状态说明
关闭SSL证书校验仅会跳过客户端对服务器身份的验证流程,通信内容仍然是TLS加密传输的,你提到的风险判断是准确的:传输加密本身不受影响,但确实存在中间人攻击风险——攻击者可以伪造无效证书向客户端伪装成你的服务器,由于客户端关闭了校验会直接信任伪造证书,攻击者即可解密、篡改、转发所有通信内容,生产环境绝对禁止关闭SSL校验。
证书校验失败问题的修复方案
你遇到的unable to verify the first certificate错误是典型的服务器未返回完整SSL证书链导致的:iOS系统内置的根证书/中间证书库更全,会自动补全缺失的证书链完成校验,而Postman、Android系统无法自动补全缺失的中间/根证书,因此抛出校验失败异常。
修复步骤如下:
- 校验现有PFX证书是否缺失证书链
执行openssl命令导出PFX内的所有证书:openssl pkcs12 -in ssl_pfx.pfx -nokeys -out output_certs.pem
打开导出的output_certs.pem文件,正常完整的证书链应该包含3段-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----的内容,分别对应你的域名证书、CA中间证书、CA根证书,如果只有1段内容说明你打包PFX时只加入了域名证书,缺失了上级证书。 - 重新打包带完整证书链的PFX文件
从你申请证书的CA机构处下载完整的证书链文件,将域名证书、中间证书、根证书按顺序合并为一个完整的证书文件后,和你的域名私钥一起重新打包为PFX:openssl pkcs12 -export -out full_ssl.pfx -inkey 你的私钥文件.key -in 完整证书链文件.pem
按提示设置PFX密码后即可得到完整的证书文件。 - 替换Spring Boot配置中的PFX文件,重启服务即可生效
你可以执行以下命令验证修复结果:openssl s_client -connect api.arevogroup.com:8089 -showcerts
如果输出中没有校验错误提示,就说明证书链配置正确。
内容的提问来源于stack exchange,提问作者Danyal Sandeelo
相关产品推荐
相关产品推荐

