PKIXPATHBUILDINGFAILED错误如何修复?专业人士来支招!

吉云

今天又遇到一个糟心事,跟大家伙儿唠唠。我这不最近在整一个项目嘛需要用到 HTTPS 请求,结果,一跑起来就给我报一个错,叫啥“PKIX path building failed”,一看这玩意儿我就头大。

这问题一看就知道是跟证书有关的。你想,HTTPS,不就是 HTTP 加上 SSL/TLS 嘛说白还是 HTTP 协议,只不过中间加一层安全验证。

PKIXPATHBUILDINGFAILED错误如何修复?专业人士来支招!

为弄明白咋回事,我先在浏览器里访问那个地址,就那个出问题的。我用的是 Chrome 浏览器,版本号是87.0.4280.141,主要它能导出.cer 格式的证书,这个后面有用。点开网址后,看到地址栏左边有个小锁的图标,点它,然后选“证书”,再选“详细信息”,就能看到“复制到文件”的按钮,点一下就能把证书导出来。

然后我就想,是不是代码的问题,要不我把 HTTPS 证书验证给绕过去?网上搜一大堆相关的代码,但是我这回遇到的情况不允许修改代码。这个办法只能先放一边。

那就只剩下一个办法,把证书添加到服务器的信任列表里。这需要用到一个叫 keytool 的工具,这玩意儿是 Java 开发工具包(JDK)自带的,就在 JDK 的 bin 目录下。只要你电脑上有 Java 环境,就能直接用。

具体操作步骤如下

  • 导出证书:

    已经在上面说过,就不再重复。记住,一定要导出.cer 格式的。

  • 使用 keytool 命令导入证书:

    打开命令行,进入到你存放证书的目录,然后运行 keytool 命令。这个命令的具体参数我当时也试好几次,才搞定。不过为防止有敏感信息,我就不把具体的命令参数写出来,大家可以自己去搜一下 "keytool 导入证书"。

  • 在代码中信任证书:

    在 Application 启动类里加一段代码,告诉程序去信任这个证书。这部分代码,我就不写详细的,省得大家说我啰嗦。反正原理就是让程序信任刚刚导入的那个证书。

弄完这些,重启一下服务,果然好使!那个烦人的“PKIX path building failed”错误终于不见,我的程序也能正常跑起来。整个过程虽然有点曲折,但是问题解决,感觉还是挺爽的。以后再遇到类似的问题,我就知道咋整。

这回的分享就到这儿,希望对大家有所帮助。记住,遇到问题不要慌,一步一步来,总能找到解决办法的。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]