编译TensorFlow 1.15.5时提示证书校验失败的解决办法
问题现象描述
执行编译TensorFlow 1.15.5命令时提示unable to find valid certification path to requested target证书校验失败,详细信息如下:
关键过程、根本原因分析
关键错误信息:下载依赖组件时,找不到请求目标的有效证书路径。
1 | PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target |
结论、解决方案及效果
- 通过浏览器导出证书。
- 将浏览器导出的证书导入到服务器。
- 将证书上传到服务器。
- 导入证书。
1
keytool -import -alias ca -keystore /usr/lib/jvm/java-11-openjdk-11.0.21.9-1.oe2203sp3.aarch64/lib/security/cacerts -file ca.crt -trustcacerts -storepass changeit -noprompt
- 导入证书命令参数说明:
- -alias:指定别名(用户可以自定义名称)。
- -keystore:指定存储文件,在java/lib/security的目录下(用户需要根据环境中实际路径指定)。
- -file:证书文件(绝对路径+证书文件名)。
- -storepass:指定存储密码,默认为changeit,查询或删除配置时,需要用到此密码。
- -trustcacerts:表示将信任的CA证书添加到密钥库中。
- -noprompt:可选项,关闭提示信息。
- cacerts证书库默认密码为“changeit”(如果使用之前有修改过,则使用修改过的密码)。
- 导入证书命令参数说明:
- 查看证书是否导入成功。
1
keytool -list -storepass changeit -keystore /usr/lib/jvm/java-11-openjdk-11.0.21.9-1.oe2203sp3.aarch64/lib/security/cacerts | grep -w ca
回显信息显示存在对应别名,代表证书导入成功。
如果需要删除证书,可以执行以下命令。
1
keytool -delete -storepass changeit -keystore /usr/lib/jvm/java-11-openjdk-11.0.21.9-1.oe2203sp3.aarch64/lib/security/cacerts -alias ca
- 重启设备。
reboot
- 重启设备后需重新配置Tensorflow编译配置。
- 配置网络代理,请参见配置网络代理。
- 设置pip源。
1 2
pip config set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple pip config set global.trusted-host mirrors.huaweicloud.com
- 添加Bazel信息到环境变量中。
1
export PATH=/path/to/bazel/bazel-0.26.1/output:$PATH
- 添加Python信息添加到环境变量中。
1 2
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH export PATH=/usr/local/python3.7.5/bin:$PATH
- 重新编译TensorFlow。
1
bazel build --config=v1 --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0" //tensorflow/tools/pip_package:build_pip_package
父主题: 故障排除