首页 > 系统相关 >在CentOS7.9上 编译安装openssl-3.3.1+编译安装Nginx1.26.2

在CentOS7.9上 编译安装openssl-3.3.1+编译安装Nginx1.26.2

时间:2024-08-22 19:19:02浏览次数:11  
标签:bin Nginx1.26 openssl OpenSSL 编译 usr devel 安装

编译安装注意事项

知识点一:openssl的重要性

openssl 在 Linux 系统中扮演着至关重要的角色,尤其是在网络安全方面。许多服务和应用程序都依赖于 openssl 提供的加密功能,包括但不限于 web 服务器(如 Apache 和 Nginx)、数据库服务器(如 MySQL 和 PostgreSQL)、邮件服务器、VPN等。

以下列表程序(包括但不限于这些),会在安装程序时,依赖Openssl,应该都会带各种版本的openssl,请注意识别:

Nginx:
Nginx 用于提供 HTTPS 服务时,会依赖 OpenSSL 来处理 SSL/TLS 加密。
OpenSSH:
OpenSSH 用于提供安全的远程登录服务时,会依赖 OpenSSL 来处理 SSH 加密。
Apache HTTP Server:
Apache HTTP Server 用于提供 HTTPS 服务时,也会依赖 OpenSSL 来处理 SSL/TLS 加密。
MySQL/MariaDB:
MySQL 和 MariaDB 数据库管理系统可以使用 SSL 加密连接客户端与服务器之间的通信,这通常依赖于 OpenSSL。
PostgreSQL:
PostgreSQL 数据库管理系统同样可以使用 SSL 加密连接客户端与服务器之间的通信,这通常依赖于 OpenSSL。
Dovecot:
Dovecot 邮件服务器用于提供 IMAP/POP3 加密服务时,会依赖 OpenSSL。
Exim:
Exim 邮件传输代理 (MTA) 用于发送和接收邮件时,如果启用了 TLS/SSL 加密,则会依赖 OpenSSL。
OpenVPN:
OpenVPN 用于提供基于 SSL 的虚拟专用网络 (VPN) 服务时,会依赖 OpenSSL。
LibreSSL:
LibreSSL 是 OpenSSL 的一个替代品,某些服务和应用程序可能使用 LibreSSL 替代 OpenSSL。
GnuTLS:
GnuTLS 是一个替代 OpenSSL 的库,用于处理 TLS/SSL 加密,某些服务和应用程序可能使用 GnuTLS。

你如果想更新编译新的openssl版本,老的这个1.0.2版本是不能卸载的,因为生产中可能还有其他的服务依赖,比如默认安装的ssh服务。一旦你删除了旧版本,可能就会引起其他程序的异常。因为你必须确保所有依赖 OpenSSL 的应用都正确地指向了新版本的库。

所以,我们应该遵循的第一个原则就是:让新的openssl版本和老的openssl版本共存。

知识点二:源代码编译安装路径

从源代码编译安装大多数软件时,如果不指定 --prefix 参数,这些软件通常会被安装到 /usr/local 目录下。具体来说:

  • 库文件 会被安装到 /usr/local/lib
  • 头文件 会被安装到 /usr/local/include
  • 可执行文件 会被安装到 /usr/local/bin

知识点三:yum安装路径

系统自带的软件 或使用 yum 或者通过其他包管理工具安装软件时,这些软件通常会被安装到 /usr 目录下。具体来说:

  • 库文件 会被安装到 /usr/lib64/usr/lib(32 位系统)。
  • 头文件 会被安装到 /usr/include
  • 可执行文件 会被安装到 /usr/bin 或 /usr/sbin
    •   /usr/bin: 这里存放的是普通用户经常使用的命令,例如文本编辑器(如 vi)、文件处理工具(如 ls 和 cp)等。
    •   /usr/sbin: 这里存放的是系统管理员权限(如root)或需要特殊权限(需要 sudo 执行的命令)才能运行的命令,例如网络配置工具(如 ifconfig)或其他系统管理工具。

对于 OpenSSL 来说,它的可执行文件 openssl 通常会被安装到 /usr/bin,因为它是一个用户级的命令,不需要特殊的权限来运行。

以openssl 来举例,CentOS 7.9 系统默认安装的 OpenSSL 版本是 1.0.2k-fips 

[root@CentOS7 ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

通过命令来查看这个系统自带的版本到底放在哪里

[root@CentOS7 lib64]# which openssl
/usr/bin/openssl
[root@CentOS7 lib64]# whereis openssl
openssl: /usr/bin/openssl /usr/lib64/openssl /usr/include/openssl /usr/share/man/man1/openssl.1ssl.gz
  1. which openssl:

    • 输出结果 /usr/bin/openssl 表示 openssl 命令的可执行文件位于 /usr/bin 目录下。这是系统默认查找命令的位置之一。
  2. whereis openssl:

    • 输出结果表明 OpenSSL 的各个组成部分在系统中的位置:
      • /usr/bin/openssl: 这是 openssl 命令的可执行文件所在位置。
      • /usr/lib64/openssl: 这个目录通常包含 OpenSSL 的库文件。您之前看到的 libcrypto.so 和 libssl.so 等文件就位于这里。
      • /usr/include/openssl: 这个目录包含 OpenSSL 的头文件,用于编译时链接 OpenSSL 的功能。
      • /usr/share/man/man1/openssl.1ssl.gz: 这是一个压缩的手册页文件,提供了关于 openssl 命令的帮助文档。

这些信息表明您的系统默认的 OpenSSL 安装在 /usr 目录下,并且相关的库文件、头文件和可执行文件都位于标准的位置上。

知识点四:环境变量冲突

如果要实现共存:你可能面临的问题:

  1. $PATH 包含 /usr/local/bin:

    • $PATH 是一个环境变量,用于告诉系统在查找可执行文件时应搜索哪些目录。通常在 /etc/profile 文件中添加$PATH 的值。
    • 如果 /usr/local/bin 被包含在 $PATH 中,那么当您输入一个命令时,系统会首先在这个目录中查找该命令对应的可执行文件。
    • 这意味着如果您的系统中有多个版本的相同命令,系统可能会优先使用 /usr/local/bin 中的命令,而不是 /usr/bin 或其他位置的命令。
  2. LD_LIBRARY_PATH 包含 /usr/local/lib:

    • LD_LIBRARY_PATH 是一个环境变量,用于告诉系统在启动程序时除了默认的库文件搜索路径之外还应查找哪些路径上的库文件。通常在 /etc/environment 文件中添加 LD_LIBRARY_PATH 的值 或 在用户的 .bashrc 或 .bash_profile 文件中设置 LD_LIBRARY_PATH
    • 如果 /usr/local/lib 被包含在 LD_LIBRARY_PATH 中,那么当您启动一个程序时,系统会在这个目录中查找所需的库文件。
    • 这意味着如果您的系统中有多个版本的库文件,系统可能会优先加载 /usr/local/lib 中的库文件,而不是 /usr/lib64 或其他位置的库文件。

总结:为了让旧版本和新版本的 OpenSSL 共存,我们应该采取以下策略来实现。

1. 使用独立的安装目录

  • 安装新版本的 OpenSSL 到一个特定的目录,例如 /opt/openssl-new
  • 确保该目录下的 bin 和 lib 子目录包含新版本的可执行文件和库文件。

2. 修改应用程序的路径

  • 对于需要使用新版本 OpenSSL 的应用程序,修改它们的环境变量或配置文件,使其指向新的 OpenSSL 安装位置。
  • 您可以通过设置 LD_LIBRARY_PATH 或者在应用程序的启动脚本中加入相应的路径来实现这一点。

3. 使用符号链接

  • 创建符号链接从默认的 OpenSSL 目录到新版本的目录。
  • 例如,创建 /usr/local/bin/openssl-new 指向 /opt/openssl-new/bin/openssl

4. 编译时指定 OpenSSL 路径

  • 如果您正在编译一个新的应用程序,确保在编译时使用正确的 OpenSSL 版本路径。
  • 使用 --with-openssl 或 --with-openssl-dir 参数指定 OpenSSL 的安装路径。

 

下载最新版本openssl-3.3.1 官网地址:Downloads | Library (openssl-library.org)

传输到/opt目录下,解压

[root@CentOS7 opt]# ls
openssl-3.3.1.tar.gz
[root@CentOS7 opt]# tar -xzf openssl-3.3.1.tar.gz
[root@CentOS7 opt]# ls
openssl-3.3.1  openssl-3.3.1.tar.gz

openssl version 命令查看默认版本

[root@CentOS7 opt]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017
[root@CentOS7 opt]#

安装依赖项

yum install -y make gcc autoconf automake libtool pkg-config zlib-devel perl bison flex openssl-devel perl-IPC-Cmd Perl-CPAN

必要的依赖项

  1. 基础构建工具

    • make:用于构建 OpenSSL。
    • gcc:C 和 C++ 编译器。
    • autoconf:用于生成配置脚本。
    • automake:用于生成 Makefile 文件。
  2. 库和工具

    • libtool:用于创建跨平台的库。
    • pkg-config:用于管理库的编译和链接选项。
    • zlib:用于数据压缩。
  3. 开发包

    • perl:用于某些脚本。
    • bison 和 flex:用于解析和词法分析。
    • openssl-devel:用于提供开发头文件。

如果有问题,可以试这个备用的:

yum install -y gcc gcc-c++ zlib-devel libtool autoconf automake perl perl-IPC-Cmd perl-Data-Dumper perl-CPAN

 

 

 

官网下载最新版本Nginx-1.26.2

nginx: download

安装依赖项

yum install -y make gcc autoconf automake libtool pam-devel openssl-devel zlib-devel ncurses-devel perl libedit-devel libssh2-devel pam libxcrypt-compat

基础构建工具

  • make
  • gcc
  • autoconf
  • automake
  • libtool

库和工具

  • pam-devel:用于 PAM (Pluggable Authentication Modules) 开发文件。
  • openssl-devel:用于 OpenSSL 开发文件。
  • zlib-devel:用于 zlib 开发文件。
  • ncurses-devel:用于 ncurses 开发文件。
  • perl:用于某些脚本。
  • libedit-devel:用于编辑支持。
  • libssh2-devel:用于 SSHv2 支持。
  • pam:用于认证模块。
  • libxcrypt-compat:用于密码加密支持。

 

  •  未完待续

 

标签:bin,Nginx1.26,openssl,OpenSSL,编译,usr,devel,安装
From: https://www.cnblogs.com/Magiclala/p/18374540

相关文章

  • 减小编译出来的 .so 文件的尺寸方法
    要减小编译出来的.so文件的尺寸,可以通过去除符号表、调试信息等非必要的内容来实现:一、Linux系统下方法1.使用strip命令strip命令可以删除.so文件中的符号表和调试信息,从而减小文件大小。strip--strip-unneededlibyourlibrary.so--strip-unneeded参数只会......
  • FVM的安装与配置
    FVM可以让我们安装多个FlutterSDK并在之间进行切换,提供类似NVM的功能。1.下载https://github.com/leoafarias/fvm/releases2.安装以Windows平台为例,官方提供了使用choco包管理工具进行安装的方式,此处以二进制安装的形式举例。下载完成后解压到目录中3.配置环境变量+是添......
  • Visual C++ 下载安装教程(微软常用运行库合集|dll报错必装)
    前言MicrosoftVisualC++Redistributable(简称MSVC,VB/VC,系统运行库)是Windows操作系统应用程序的基础类型库组件。此版VisualC++运行库组件合集(微软常用运行库合集)由国内封装爱好者@Dreamcast打包而成,整合VisualC++组件安装包运行库所有版本,提供图形安装界面,可自选更新VC++版......
  • jenkins 自动安装 和 手动安装java 或者一些其他环境配置的区别
    由于之前的jenkins存在安全漏洞,升级了jenkins,相应的jenkinsmaster服务器上的javajdk也一起升级为openjdk21.升级后发现:1.新的jenkins的slavenode启动的jar包下载后,在原来的slavenode服务器上面无法正常被执行了。这时我才知道原来升级了jenkins,对应的slavenode启动的jar......
  • oem 插件安装
    单独部署mysql插件[oracle@prdb19oemtmp]$emcliimport_update-omslocal-file=`pwd`/p35302644_112000_Generic.zipProcessingupdate:Plug-in-EnterpriseManagerforMySQLDatabaseSuccessfullyuploadedtheupdatetoEnterpriseManager.UsetheSelfUpdateC......
  • 安装部署harbor
    配置文件中修改内容hostname和证书私钥需要指定到文件hostname:hub.rainsc.com#httprelatedconfighttp:#portforhttp,defaultis80.Ifhttpsenabled,thisportwillredirecttohttpsportport:80#httpsrelatedconfighttps:#httpsportfor......
  • windows安装ssh服务器
    参考https://cloud.tencent.com/developer/article/1420930检查是否安装openssh服务器这里我已经安装好了。如果没有安装就不会显示,OpenSSH客户端是windows默认安装的。安装openssh服务器以管理员身份启动powershell,注意一定是以管理员身份,而且必须是在powershell中,因......
  • lazarus 3.4+fpc trunk编译tachart控件出错
    lazarus3.4+fpctrunk编译tachart控件出错原因:最新的fpc禁止访问private引起的修改方法:1、打开lazarus\components\tachart\tadatatools.pas将functionTDataPointDistanceTool.FindRef(APoint:TPoint;AMode:TDataPointMode;ADest:TDataPointTool.TPointRef;AOtherEndS......
  • 安装metrics-server遇到Readiness probe failed HTTP probe failed with statuscode 5
    安装metrics-server后显示Running,但是READY状态一直为0/1,通过describe查询到如下内容Readinessprobefailed:HTTPprobefailedwithstatuscode:5001.报错内容root@master:~/metrics-server#kubectlgetpods-nkube-systemmetrics-server-dd7677d75-grfcqNAME......
  • 安装MySQL报错ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3
    今天要在本地装个mysql,发现mysql-5.7.19-winx64版总是报错由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题。,去微软官网找到了最新的VisualC++RedistributableforVisualStudio,下载后发现还是不停地报错。怀疑是系统不兼容,没办法只好安装mysql-8.0.37......