OpenSSl---安装

OpenSSL支持WindowsUnixLinux等常见的操作系统。因此对应不同的操作系统,用户可以参考INSTALLINSTALL.MacOSINSTALL.NWINSTALL.OS2INSTALL.VMSINSTALL.W32INSTALL.W64INSTALL.WCE等文件来安装OpenSSL。本节将分别以WindowsLinux为例介绍编译方法。

Windows下编译OpenSSL

Windows下编译OpenSSL需要准备如下环境:OpenSSL源码、ActivePerl for Win32C编译器(Visual C++)。下面以Visual C++为例介绍如何编译OpenSSL

1)         访问http://www.openssl.org/source,页面上列举了OpenSSL所有的历史版本,下载较稳定的版本openssl-1.0.1e.tar.gz

2)         使用压缩工具对openssl-1.0.1e.tar.gz文件解压缩。

3)         下载perl。在Windows下编译OpenSSL需要使用Perl脚本调用Configure产生MakeFile文件。在http://www.activestate.com/ActivePerl下下载针对Windows的版本(实例使用的是ActivePerl-5.16.1.1601-MSWin32-x86-296175.msi)。

4)         安装ActivePerl

5)         运行“cmd”命令,在控制台窗口,使用“cd”命令改变当前目录为openssl-1.0.1e源码所在目录,如下图所示。

6)         执行Configure。运行“perl Configure VC-WIN32 --prefix=c:/openssl-1.0.1e”。prefix参数的意义是OpenSSL编译好后的安装路径。输出信息如下图所示。

7)         运行“ms\do_ms”,如下图所示。

8)         运行“nmake -f ms\ntdll.mak”。执行make进行编译,在此过程中会输出大量信息,需要几分钟左右,如下图所示。(注意:“nmake -f ms\ntdll.mak”命令将OpenSSL编译成动态库,如果想编译成静态库应使用“nmake -f ms\nt.mak”命令)。

9)         运行“nmake -f ms\ntdll.mak test”,检查上一步是否编译成功。正常的话,make test会执行编译后的测试程序。如下图所示。

10)         运行“nmake -f ms\ntdll.mak install”,本步骤将安装编译后的OpenSSL复制到指定目录,即为第6prefix参数设置的“c:/openssl-1.0.1e”,如下图所示。

11)        查看安装结果。在c:/openssl-1.0.1e目录下将看到bin、include、lib 3个文件夹。bin目录下包括openssl.exe(OpenSSL指令程序)、ssleay32.dll(SSL协议动态库)、libeay32.dll(密码算法库)。Lib目录下包含两个lib文件,即ssleay32.lib、libeay32.lib,分别是ssleay32.dll、libeay32.dll动态库对应的lib文件。Include目录包括了OpenSSL开发涉及的头文件。

Linux下编译OpenSSL

Linux下编译OpenSSL需要准备如下环境:OpenSSL源码、ActivePerl、编译器(gcc)、make等。Linux环境下编译OpenSSL的步骤如下:

1)         访问 http://www.openssl.org/source,页面上列举了OpenSSL所有的历史版本,下载较稳定的版本openssl-1.0.1e.tar.gz

2)         在终端shell模式下,使用tar命令将openssl-1.0.1e.tar.gz文件解压缩。命令格式如下:tar xvfz openssl-1.0.1e.tar.gz

3)         进入解压缩目录,执行“./config –prefix = /usr/local ”,如下图所示。

4)         运行“make”命令,进行编译,编译大概需要几分钟,会有大量的编译信息输出,如下图所示。

5)         运行“make test”,检查上一步编译是否成功。正常的话,make test会执行编译后的测试程序并产生大量信息输出,如下图所示。

6)         运行“make install”,本步骤将安装编译后的OpenSSL复制到指定目录,即为第3prefix参数设置的“usr/local”,如下图所示。

7)         查看安装结果。执行“ls /usr/local/”,可以看到binincludelib 3个文件夹。bin目录下包括opensslOpenSSL指令程序)。lib目录下包含两个lib文件,即libcrypto.alibssl.aInclude目录包括了OpenSSL开发涉及的头文件。

到目前位置,OpenSSLLinux环境下的编译工作完成了。

 

 

 

 

 

 

<think>好的,我现在需要回答用户关于openssl-libs和openssl-devel的问题。首先,用户之前问了关于编译Nginx缺少zlib-devel的问题,现在转向了OpenSSL相关的库。可能他正在处理与SSL/TLS相关的编译或开发工作,比如配置Nginx支持HTTPS,或者开发需要加密功能的应用程序。 首先,我需要明确openssl-libs和openssl-devel的区别和各自的作用。这两个包在基于RPM的系统(如CentOS、Fedora)中常见。openssl-libs应该包含运行时的库文件,而openssl-devel则包含开发所需的头文件和静态库等。用户可能在编译软件时遇到缺少openssl头文件的问题,导致需要安装openssl-devel,而openssl-libs则是运行时依赖。 接下来,我需要确认这两个包的具体内容。例如,openssl-libs可能包括libssl.so和libcrypto.so这些共享库,而openssl-devel则包含头文件如ssl.h、crypto.h,以及静态库文件.a,可能还有pkg-config文件,这些对于编译链接OpenSSL的程序是必需的。 用户可能的困惑点在于何时需要安装哪个包。例如,如果只是运行一个依赖于OpenSSL的应用程序,只需要openssl-libs;但如果要编译一个使用OpenSSL的程序,就需要openssl-devel。此外,用户可能在安装某些软件时遇到编译错误,提示缺少OpenSSL相关的文件,这时候需要确认是否安装了开发包。 我需要检查常见的错误信息,例如在编译时出现“openssl/ssl.h:没有那个文件或目录”这样的错误,这通常是因为缺少openssl-devel。这时候指导用户安装正确的包可以解决问题。 另外,需要注意不同Linux发行版的包管理差异。比如在CentOS中使用yum或dnf,而Ubuntu/Debian中使用apt,包名可能略有不同(如libssl-dev)。但用户这里提到的是openssl-libs和openssl-devel,所以应集中在RPM系系统。 还需要考虑版本兼容性问题,比如是否安装了与应用程序所需版本匹配的openssl-libs和openssl-devel。如果用户安装openssl-devel版本过低或过高,可能导致编译问题。这时可能需要指定版本安装或升级系统。 最后,我应该总结两者的主要区别,使用场景,以及如何检查和安装这些包,帮助用户明确在什么情况下需要哪个包,并提供安装命令示例。同时,提醒用户在编译软件后,运行时仍需要openssl-libs的支持,确保依赖完整。</think>--- ### **`openssl-libs` 和 `openssl-devel` 的区别与作用** 在 Linux 系统(如 CentOS、Fedora、RHEL)中,`openssl-libs` 和 `openssl-devel` 是与 OpenSSL 相关的两个重要软件包,功能互补但用途不同。以下是详细对比: --- #### **1. `openssl-libs`** - **定位**:**运行时库** 包含 OpenSSL 的共享库文件(`.so` 文件),用于支持依赖 OpenSSL 的应用程序正常运行。 - **核心内容**: - 动态链接库:如 `libssl.so`、`libcrypto.so` - 配置文件:如 `/etc/pki/tls/openssl.cnf` - **用途**: - 运行需要 SSL/TLS 加密的程序(如 Nginx、Apache、curl 等)。 - 系统基础加密功能的底层支持。 - **安装检查**: ```bash rpm -qa | grep openssl-libs ``` - 若未安装,系统可能报错:`libssl.so.xxx: cannot open shared object file` --- #### **2. `openssl-devel`** - **定位**:**开发工具包** 包含编译和开发 OpenSSL 相关程序所需的头文件、静态库和开发工具。 - **核心内容**: - 头文件:如 `openssl/ssl.h`、`openssl/crypto.h` - 静态库:如 `libssl.a`、`libcrypto.a` - 开发工具:如 `pkg-config` 文件(`openssl.pc`) - **用途**: - 编译需要调用 OpenSSL 库的程序(如 Nginx 的 HTTPS 模块、Python 的 `cryptography` 库)。 - 开发自定义的加密功能或调试 OpenSSL 相关代码。 - **安装检查**: ```bash rpm -qa | grep openssl-devel ``` - 若未安装编译时可能报错:`openssl/ssl.h: No such file or directory` --- ### **关键区别总结** | 特性 | `openssl-libs` | `openssl-devel` | |--------------------|-----------------------------|-------------------------------| | **用途** | 运行时支持 | 编译和开发支持 | | **文件类型** | 动态库(`.so`)、配置文件 | 头文件(`.h`)、静态库(`.a`)| | **依赖场景** | 运行程序 | 编译程序 | | **报错示例** | 缺失动态库 | 缺失头文件或静态库 | --- ### **何时需要安装?** - **仅运行程序** → 安装 `openssl-libs`(通常系统默认已安装)。 - **编译或开发程序** → **必须同时安装** `openssl-libs` 和 `openssl-devel`。 --- ### **安装方法** - **CentOS/RHEL 7 及以下**: ```bash sudo yum install openssl-libs openssl-devel ``` - **CentOS/RHEL 8 或 Fedora**: ```bash sudo dnf install openssl-libs openssl-devel ``` --- ### **常见问题** 1. **编译时提示 `openssl/ssl.h` 缺失** → 未安装 `openssl-devel`,需执行 `sudo yum/dnf install openssl-devel`。 2. **程序运行时提示 `libssl.so` 找不到** → 未安装 `openssl-libs` 或版本不匹配,检查并安装对应版本。 3. **升级 OpenSSL 后仍需旧版本支持** → 保留旧版 `openssl-libs` 或使用兼容模式(需谨慎操作)。 --- ### **总结** - **开发环境**:同时安装 `openssl-libs` 和 `openssl-devel`。 - **生产环境**:仅需 `openssl-libs`(确保程序运行依赖完整)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值