安装Gmssl带来的openssl相关问题

博客内容讲述了在安装GmSSL后遇到openssl动态库缺失的问题,导致pip3安装时出现错误。作者发现GmSSL与openssl存在共存问题,通过寻找解决方案并重新安装openssl,最终成功解决了pip3的openssl异常,使得命令可以正常运行。

1、GmSSL导致openssl动态库缺失

在执行pip3 install时报错,pip is configured with locations that require TLS/SSL, however the ssl module…猜测是openssl的问题,又报错找不到两个so文件,正是上篇博文中提到的与安装GmSSL有关的两个文件。

2、GmSSL与openssl共存

命令行输入openssl,会进入gmssl的命令行,无法进入openssl的命令行。初期认为这个没有问题,现在猜测1的问题是安装GmSSL导致的。

3、解决

找到GMSSL和openssl共存的解决方法,进行安装,重新下载、编译、安装结束发现不需要上篇博文更改makefile,一切正常。
https://blog.youkuaiyun.com/qingzhuyuxian/article/details/113551179

但是执行pip3时openssl仍然不正常,所以重新安装最新版openssl,至此问题解决。
https://blog.youkuaiyun.com/sunhson/article/details/106476185

集成 GmSSLOpenSSL 项目中主要依赖于 GmSSL 提供的 **OpenSSL 兼容层**。这种兼容性设计允许在依赖 OpenSSL 的应用程序中平滑过渡到 GmSSL,同时支持国密算法(如 SM2、SM3、SM4),而无需对现有代码进行大规模修改。 ### 配置兼容层 GmSSLOpenSSL 兼容层通过替换 OpenSSL 的核心库(`libcrypto` 和 `libssl`)来实现兼容性。具体步骤如下: 1. **获取 GmSSL 源码** 克隆 GmSSL 仓库到本地: ```bash git clone https://github.com/guanzhi/GmSSL.git cd GmSSL ``` 2. **构建 GmSSL 项目** 使用 `cmake` 构建并编译 GmSSL,确保生成兼容 OpenSSL 的库文件: ```bash cmake . make ``` 编译完成后,会生成 `libcrypto.so` 和 `libssl.so` 文件,它们是 GmSSLOpenSSL 兼容实现 [^2]。 3. **替换 OpenSSL 库文件** 将现有 OpenSSL 的 `libcrypto.so` 和 `libssl.so` 替换为 GmSSL 生成的对应库文件。确保动态链接器能够找到这些库文件,可以通过以下方式设置: ```bash export LD_LIBRARY_PATH=/path/to/gmssl/lib:$LD_LIBRARY_PATH ``` 4. **修改 CMakeLists.txt 文件** 如果你的项目使用 `CMake` 构建系统,确保在 `CMakeLists.txt` 中正确链接 GmSSL 的库文件: ```cmake target_link_libraries(your_project PRIVATE /path/to/gmssl/lib/libssl.a /path/to/gmssl/lib/libcrypto.a) ``` 5. **编译与测试** 编译项目并运行测试,验证 GmSSL 是否正常工作。可以使用 GmSSL 提供的测试脚本进行验证: ```bash cd test ./tests ``` ### 国密算法的使用 在集成完成后,可以通过 GmSSL 的 API 调用国密算法,例如 SM2、SM3 和 SM4。例如,使用 SM2 生成密钥对的代码如下: ```python from gmssl import sm2 # 初始化 SM2 加密对象 sm2_crypt = sm2.CryptSM2() # 生成私钥和公钥 private_key = sm2_crypt.generate_private_key() # 自动生成64字符私钥 public_key = sm2_crypt.generate_public_key() # 自动生成130字符公钥 ``` 此代码片段展示了如何在 Python 环境中使用 GmSSL 的 SM2 功能 [^3]。 ### 应用场景 集成 GmSSL 后,可以实现以下功能: - **构建国密 SSL/TLS 服务器**:支持国密算法的 SSL/TLS 通信,保障数据传输安全 [^2]。 - **密码硬件集成**:通过 GmSSL 的 SDF 和 SKF 接口,支持国密硬件设备,增强密钥安全性 。 - **多语言支持**:利用 GmSSL 的子项目(如 Java、Go、PHP 等),在不同编程语言中无缝使用国密算法 。 ### 兼容性注意事项 - **依赖管理**:确保 GmSSL 的依赖库(如 `zlib`)已正确安装。 - **版本匹配**:确保 GmSSL 版本与 OpenSSL 版本兼容,避免 API 差异导致的问题。 - **测试验证**:在生产环境部署前,务必进行全面测试,确保国密算法与原有功能的兼容性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值