标签归档

Python

在此分类下共找到 2 篇文章

技术工程

Java 第三方 HTTPS 接口 PKIX path building failed 解决方案

本文介绍了 Java 调用第三方 HTTPS 接口时常见的 “PKIX path building failed” 报错及其处理方式。问题通常出现在对接政务网、专网、私有云或自签名证书接口时,因为 JVM 的信任库 cacerts 中没有目标证书对应的信任链,导致 SSL 握手失败。 文章给出两种解决思路:首选是通过 openssl 在服务器上抓取目标证书,再用 keytool 导入当前 JRE 的 cacerts 信任库,重启服务后即可恢复正常;另一种是测试或应急场景下,重构 RestTemplate,临时关闭 SSL 证书校验,绕过连接限制。 最后强调,生产环境应优先采用导入证书的标准做法,并确保导入的 JDK/JRE 路径与实际运行环境一致,避免证书加错位置而问题依旧。

9 min readREAD MORE
技术工程

Python 3.11 编译后缺少 _ssl 模块:从 OpenSSL 共享库到重新编译的完整修复记录

本文记录了一次 Python 3.11.9 源码安装后缺少 _ssl 模块的排查与修复过程。表面上 Python 已安装成功,但执行 import ssl 时却报出 No module named '_ssl',原因并不在 Python 主程序,而是 SSL 相关扩展在编译阶段失败。 问题的关键有三点:一是 OpenSSL 最初被编译成了静态库 no-shared,导致 Python 的 _ssl 动态扩展无法正常链接;二是自定义安装的 OpenSSL 共享库位于 /usr/local/openssl11/lib,却没有被系统动态链接器识别;三是 Python 源码目录中的旧构建缓存干扰了重新编译,导致补装依赖后问题依旧。 作者最终采用了独立安装 OpenSSL 共享库的方案:重新编译 OpenSSL 时启用 shared,并通过 ldconfig 注册库路径;随后彻底清理 Python 构建缓存,重新 configure 时显式指定 OpenSSL 目录和运行时路径,最后成功编译出 _ssl 模块并完成 Python 安装。这个案例说明,在 Linux 上源码编译 Python 时,SSL 模块是否可用,取决于 OpenSSL 的编译方式、链接路径和 Python 的重新构建是否彻底。

21 min readREAD MORE