1.问题发生
当我使用百度提供的Java代码获取access_token参数时,控制台报错
unable to find valid certification path to requested target
表示我们访问百度接口的时候,没有该网站的证书。这是为了安全才有的机制。
2.问题解决
为了解决证书问题,我们需要在我们要访问的百度接口网站中下载证书。我使用了谷歌chrome浏览器,有些浏览器好像不支持下载。
①由于我要获取access_token时访问的uri是:https://aip.baidubce.com/oauth/2.0/token。所以在chrome浏览器访问这个链接,然后点击这个锁的小图标,点击证书进行下载
下载时注意选择Base64编码。
然后我们会得到一个cer文件,名字可以自己定义。
②然后我们要把这个证书放入我们IDEA使用的jre中。即如下图目录中,但是不能直接复制粘贴。
1.使用运行窗口Windows + R输入cmd,再按Ctrl + Shift + Enter进入管理员的dos界面。注意一定需要以管理员身份进入,否则后面操作会因权限不足而报错。
2.然后用cd命令进入该目录下。
3.然后输入命令 keytool -import -alias abc -keystore cacerts -file D://abc.cer。它表示将指定目录的证书存入密钥库。
4.abc是它存入密钥库中的别名,不能与已经存在于密钥库的证书重复。-file后面的路径就是证书的路径。
5.输入命令成功后会要求输入密钥口令,默认密码是changeit,输入时不会显示
6.输入密令后会提示是否信任该证书,输入Y即可将证书存入密钥库
7.可以通过 keytool -list -keystore cacerts -alias abc 命令来查看密钥库中的别名为abc的证书,同时也要输入密令
8.此时证书成功导入我们IDEA所使用的jre中,一般需要重启一下项目或IDEA。然后再次运行访问百度的接口就成功了。
提示:如果使用Linux操作系统发布web项目,那么也需要导入证书,操作一样。只是不需要进入Dos,而是直接在security目录
输入命令即可