一、环境准备

1.1 安装RPM打包、测试必备开发工具

$ yum install -y rpm-build rpmlint rpmdevtools

1.2 安装打包、编译所需的依赖软件

$ yum install -y gcc gcc-c++ make perl perl-WWW-Curl

二、制作 OpenSSL 的 RPM 包

注意:

切记!不要使用 root 用户来执行打包操作。因为这十分危险,所有二进制文件都会在打包前安装至系统中,因此您应该以普通用户身份打包,以防止系统被破坏。

2.1 配置 rpmbuild 工作目录

$ mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

$ echo "%_topdir %{getenv:HOME}/rpmbuild" > ~/.rpmmacros

2.2 下载源码包到 ~/rpmbuild/SOURCES 目录

$ wget -O ~/rpmbuild/SOURCES/openssl-1.1.1k.tar.gz https://www.openssl.org/source/openssl-1.1.1k.tar.gz

2.3 编写 openssl 1.1.1k 软件库包的spec文件

$ vim ~/rpmbuild/SPECS/openssl.spec

Name: openssl

Version: 1.1.1k

Release: 1%{?dist}

Summary: Utilities from the general purpose cryptography library with TLS implementation

Group: System Environment/Libraries

License: GPLv2+

URL: https://www.openssl.org/

Source0: https://www.openssl.org/source/%{name}-%{version}.tar.gz

BuildRequires: make gcc perl perl-WWW-Curl

Requires: %{name} = %{version}-%{release}

BuildRoot: %_topdir/BUILDROOT

%global openssldir /usr/openssl

%description

The OpenSSL toolkit provides support for secure communications between

machines. OpenSSL includes a certificate management tool and shared

libraries which provide various cryptographic algorithms and

protocols.

%prep

%setup -q

%build

./config --prefix=%{openssldir} --openssldir=%{openssldir}

make %{?_smp_mflags}

%install

[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}

%make_install

mkdir -p %{buildroot}%{_bindir}

mkdir -p %{buildroot}%{_libdir}

ln -sf %{openssldir}/lib/libssl.so.1.1 %{buildroot}%{_libdir}

ln -sf %{openssldir}/lib/libcrypto.so.1.1 %{buildroot}%{_libdir}

ln -sf %{openssldir}/bin/openssl %{buildroot}%{_bindir}

%clean

[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}

%files

%{openssldir}

%defattr(-,root,root)

%{_bindir}/openssl

%{_libdir}/libcrypto.so.1.1

%{_libdir}/libssl.so.1.1

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%changelog

* Sat May 08 2021 Hebin Wan - 1.1.1k

- Rebuilt for https://www.openssl.org/source/openssl-1.1.1k.tar.gz

2.4 使用 rpmlint 测试

为避免常见错误,请先使用 rpmlint 查找 SPEC 文件的错误:

$ rpmlint ~/rpmbuild/SPECS/openssl.spec

0 packages and 1 specfiles checked; 0 errors, 0 warnings.

如果返回错误/警告,使用 "-i" 选项查看更详细的信息。

2.5 从 SPEC 构建 RPM 包

$ rpmbuild -D "version 1.1.1k" -ba ~/rpmbuild/SPECS/openssl.spec

-ba 构建源代码rpm包和二进制rpm包

-bb 只构建二进制rpm包

-bs 只构建源代码rpm包

-bp 执行至%prep阶段(解压源并应用补丁)

-bc 执行至%build阶段(%prep,然后编译)

-bi 执行至%install阶段(%prep,%build,然后安装)

-bl 验证%files部分,查看文件是否存在

构建完成后,有类似下面的返回内容时,说明 RPM 包构建成功了

查看构建成功的 RPM 包$ tree ~/rpmbuild/*RPMS

在RPMS文件夹下生成了 RPM 包,在 x86_64 下,表示所应用的架构,由于没有指定arch为 noarch ,所以默认用本机架构。在SRPMS文件夹下生成了源码 RPM 包。

2.6 使用 rpmlint 测试已构建的 RPM 包

rpmlint 用于检查 SPEC/RPM/SRPM 是否存在错误。你需要在发布软件包之前,解决这些警告。此页面 提供一些常见问题的解释。

$ rpmlint ~/rpmbuild/SPECS/openssl.spec \

~/rpmbuild/RPMS/x86_64/openssl-1.1.1k-1.el7.x86_64.rpm \

~/rpmbuild/SRPMS/openssl-1.1.1k-1.el7.src.rpm

一般情况下,检测到的都是一些WARN信息,不影响软件使用,可以忽略。如果有ERROR信息,或许也不影响使用,但建议按照提示进行调整、修复。

三、安装升级 OpenSSL

一般情况下,系统都已经有openssl了,所以我们直接升级即可。

注意:

切记!在做openssl升级时,请先从测试机中操作,升级后,确定没有任何问题时,在根据线上环境陆续升级。

3.1 检查系统当前OpenSSL版本

查看当前系统中openssl的版本

$ openssl version

OpenSSL 1.0.2k-fips 26 Jan 2017

卸载openssl

$ rpm -e openssl --nodeps

3.2 升级OpenSSL版本

安装我们刚刚打包好的openssl 1.1.1k版本

$ rpm -ivh ~/rpmbuild/RPMS/x86_64/openssl-1.1.1k-2.el7.x86_64.rpm --nodeps

Preparing... ################################# [100%]

Updating / installing...

1:openssl-1.1.1k-2.el7 ################################# [100%]

再次查看系统中openssl版本

$ openssl version

OpenSSL 1.1.1k 25 Mar 2021

很幸运,成功升级!

但是否对系统环境、其他软件功能有影响,这个就需要我们进一步测试,笔者这里就省略了。

参考文献

linux制作openssl rpm,CentOS 7 定制 OpenSSL RPM 包相关推荐

  1. linux slf4j.rpm,Centos下安装nginx rpm包

    1 在nginx官方网站下载一个rpm包,下载地址是:http://nginx.org/en/download.html wget http://nginx.org/packages/centos/6 ...

  2. linux rpm安装openssl,[CentOS]离线安装OpenSSL

    环境 安装OpenSSL 安装openssl时更建议将openssl.openssl-devel一块儿安装,否则可能出现openssl不可用. OpenSSL 依赖包清单参考如下(镜像站下载) key ...

  3. linux升级tls,为CentOS升级OpenSSL 让Nginx支持TLS 1.2

    最近在调试微信小程序时,发现wx.request请求总是无法正确获取服务器端的数据,经过检查发现是因为服务器端https不支持微信要求的TLS 1.2版本. 登录到服务器上,用openssl vers ...

  4. linux更新ssl脚本,linux升级OpenSSL,Centos的OpenSSL漏洞补丁

    升级openssl环境至openssl-1.0.2h 1.查看源版本 openssl version -a 2.下载openssl-1.0.2h.tar.gz wget https://www.ope ...

  5. linux安装大批量rpm包,linux制作rpm安装包

    linux制作rpm二进制安装包 有好多朋友问到怎么制作rpm包,可不可把其它服务器上编译好的软件目录复杂到其它服务器上直接应用等等.这里通过案例由简单到高级来一一讲解. 此方法是通过编写spec文件 ...

  6. fpm定制化RPM包之nginx rpm包的制作

    fpm定制化RPM包之nginx rpm包的制作 1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资 ...

  7. linux nginx rpm 安装配置,Centos下安装nginx rpm包

    1 在nginx官方网站下载一个rpm包,下载地址是:http://nginx.org/en/download.html wget http://nginx.org/packages/centos/6 ...

  8. 以rpm为后端及以yum为前端工具的程序包管理器在Linux发行版系统centos中的使用...

    程序包管理: 应用程序的安装,实际上是解压缩并复制程序包中的文件到指定目录的过程: 程序包管理器: 方便终端用户进行程序的安装.卸载.升级.安装信息查询及校验等工作: 不同的Linux的发行版本中,有 ...

  9. Linux/CentOS安装MySQL(RPM安装、编译安装)

    2019独角兽企业重金招聘Python工程师标准>>> Linux/CentOS安装MySQL(RPM安装.编译安装) 目前最常用的MySQL安装方法也就是采用Yum安装RPM包,或 ...

最新文章

  1. 人工智能还给我们留多少空间?
  2. 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据...
  3. Hadoop学习笔记—18.Sqoop框架学习
  4. Citrix Provisioning Services 7.13企业实战
  5. Python Imaging Library: ImageFilter Module(图像滤波模块)
  6. html的版本适配,2.1.3 HTML 5确保了与之前HTML版本的兼容性
  7. 【渝粤教育】国家开放大学2018年春季 0008-21T简明现代汉语 参考试题
  8. eJOI2019 简要题解
  9. 0基础python笔记str/list/tuple/dict
  10. API v3版微信支付平台证书获取与自动更新
  11. shell脚本之国际象棋棋盘
  12. Android手机导出的已安装的APK到电脑
  13. 《Python编程快速上手——让繁琐工作自动化》第2版的中文版上市了
  14. AtCoder Beginner Contest 192
  15. 简易电子章制作小模块(VBA)
  16. 10亿内素数个数及总和
  17. 简单版四人扑克牌(python)
  18. Docker入门汇总
  19. postgres的时间转换
  20. weka 连接oracle 命令,Weka连接Oracle数据库

热门文章

  1. Flask框架(flask中的请求上下文和应用上下文,以及请求钩子的使用,Flask-Script 扩展命令行)
  2. 人工智能的本质:最优化 (神经网络优化算法python手写实现)
  3. VTK:量化多数据点用法实战
  4. JavaScript实现完整的matrix矩阵类(附完整源码)
  5. OpenCASCADE绘制测试线束:简单的向量代数和测量之测量命令
  6. OpenCASCADE:OCCT应用框架OCAF之TObj模型辅助类和包装
  7. OpenCASCADE可视化:3D演示之3D视图设施
  8. OpenCASCADE:可视化之基础概念
  9. wxWidgets:显示如何从 DLL 使用 wx 的示例
  10. 基于Boost::beast模块的HTTP客户端协程