openssl编译,Windows/Ubuntu

本文详细介绍了如何在Windows、Ubuntu和CentOS上手动编译OpenSSL,包括下载依赖、配置、编译和安装步骤。在Windows环境下,使用Visual Studio命令提示符和Perl进行编译;Ubuntu和CentOS则通过终端命令完成编译过程。编译完成后,提取所需的库文件和头文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

windows下

1. 下载ActivePerl,并安装

2. 下载安装包openssl-1.0.1g.tar.gz

3. 解压缩到openssl-1.0.1g目录下 (删除test目录中的三个没用的文件:md2test.c、rc5test.c、jpaketest.c,你打开看下就知道为什么要删了它)

4. 打开VS的命令提示,比如我打开的:"D:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts\VS2013 开发人员命令提示.exe"

5. cd到目录openssl-1.0.1g

6. 加入perl的路径(我安装的perl.exe在D:\Perl\bin目录中),命令:PATH=%PATH%;D:\Perl\bin\;

7. 命令:perl Configure VC-WIN32

8. 命令:ms\do_ms.bat

9. 打开vsvars32.bat(不清楚这步是否有必要),我这里的命令为:"D:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat"

10. 命令:nmake -f ms/ntdll.mak

11. 提取有我们需要的文件

      在目录out32dll中有库文件:libeay32.lib,libeay32.dll,libeay32.pdb,ssleay32.lib,ssleay32.dll,ssleay32.pdb,openssl.exe(可用于生成证书的工具)

### 配置动态链接库并替换原有 OpenSSL 的步骤 #### 1. 动态链接库的配置 为了使新编译OpenSSL 能够被系统识别,需要将其动态链接库路径添加到系统的 `LD_LIBRARY_PATH` 或 `/etc/ld.so.conf.d/` 中。 - **设置临时环境变量** 可以通过修改当前会话的 `LD_LIBRARY_PATH` 来加载新的动态链接库。假设 OpenSSL 安装到了 `/usr/local/ssl/lib`,可以运行以下命令: ```bash export LD_LIBRARY_PATH=/usr/local/ssl/lib:$LD_LIBRARY_PATH ``` - **永久生效方法** 将上述路径写入 `/etc/ld.so.conf.d/openssl.conf` 文件中,并更新缓存: ```bash echo "/usr/local/ssl/lib" | sudo tee /etc/ld.so.conf.d/openssl.conf sudo ldconfig ``` 这一步完成后,可以通过以下命令验证是否成功加载了新的 OpenSSL 库: ```bash ldd $(which openssl) | grep ssl ``` --- #### 2. 替换原有的 OpenSSL 在某些情况下,可能需要完全替换系统自带的 OpenSSL 版本。以下是具体操作: - **备份原始文件** 在覆盖之前,建议先备份旧版 OpenSSL 的二进制文件和共享库: ```bash sudo mv /usr/bin/openssl /usr/bin/openssl.bak sudo cp -r /lib/x86_64-linux-gnu/libssl* /lib/x86_64-linux-gnu/libcrypto* /backup/ ``` - **创建软链指向新版 OpenSSL** 使用 `ln -s` 创建软连接,让系统调用的新版本替代旧版本: ```bash sudo ln -sf /usr/local/ssl/bin/openssl /usr/bin/openssl sudo ln -sf /usr/local/ssl/lib/libssl.so.1.1 /lib/x86_64-linux-gnu/libssl.so.1.1 sudo ln -sf /usr/local/ssl/lib/libcrypto.so.1.1 /lib/x86_64-linux-gnu/libcrypto.so.1.1 ``` 完成以上操作后,可通过以下命令确认使用的 OpenSSL 是否已切换至最新版本: ```bash openssl version ``` --- #### 3. 修改默认配置文件 (`openssl.cnf`) OpenSSL 默认读取位于 `/usr/local/ssl/openssl.cnf` 的配置文件。如果需要自定义配置(如 CA 设置、证书签发策略),可以直接编辑此文件。 例如,在 `[CA_default]` 部分调整如下参数[^3]: ```ini dir = /root/ca # CA 数据存储位置 certs = $dir/certs # 已颁发证书的位置 new_certs_dir = $dir/newcerts # 新证书保存位置 database = $dir/index.txt # 索引数据库文件 private_key = $dir/private/ca.key.pem # 私钥文件 certificate = $dir/certs/ca.cert.pem # 根证书文件 serial = $dir/serial # 当前序列号文件 default_days = 365 # 默认有效期天数 default_md = sha256 # 默认哈希算法 unique_subject = no # 主体字段允许重复 ``` --- #### 4. 处理常见问题 当遇到 PHP 编译时提示找不到 OpenSSL 错误时,通常是因为未正确安装开发包或工具链缺失。按照以下方式解决[^4]: ```bash sudo apt-get install libssl-dev # Debian/Ubuntu 平台 sudo yum install openssl-devel # CentOS/RHEL 平台 xcode-select --install # macOS 用户需重新安装 Xcode Command Line Tools ``` 此外,若因升级导致 `/usr/bin/openssl` 不见,则可能是卸载老版本时连带删除所致[^2]。此时应重新编译安装,并确保保留必要文件。 --- ### 总结 通过合理配置动态链接库路径与替换原生 OpenSSL 实现定制化需求的同时,务必注意数据安全性和兼容性测试。任何改动都应在可控环境下逐步推进,以免影响核心服务稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值