Openssl1.1.1s rpm包構建與升級

rpmbuild入門知識
openssh/ssl二進制升級


文章目錄

  • 前言
  • 一、資源準備
    • 1.下載openssh、openssl二進制包
    • 2.安裝rpmbuild工具
    • 3.拷貝源碼包到SOURCES目錄下
    • 4.系統開啟telnet,防止意外導致shh無法連接
    • 5.編譯工具安裝
    • 6.補充說明
  • 二、制作 OpenSSL RPM 包
    • 1.編寫 SPEC 文件
    • 2.驗證 SPEC 文件
    • 3.執行構建命令
    • 4.查看構建完成的rpm包
  • 三、通過RPM包更新 OpenSSL
    • 1.檢查并備份舊openssl相關文件
    • 2.卸載舊版本openssl
    • 3.安裝新版openssl
    • 4.驗證openssl版本


前言

2025年第一個漏洞登場,系統中目前在使用的是OpenSSH_7.4p1, OpenSSL 1.0.2k-fips,然后就收到了漏掃團隊的郵件,說該版本的openssh存在Openssh存在遠程代碼執行漏洞(CVE-2024-6387),因此需要升級到7.9版本及以上。在2024年8月份也寫過一篇通過二進制方式升級openssh的文章,也就是頂部的第二篇文章,但是過程比較繁瑣。本次將使用rpmbuild的知識,將源碼包構建為RPM包形式,實現一鍵部署升級,提高效率。


一、資源準備

系統 centos_7.6、x86架構
在這里插入圖片描述

oldnew
openssh_7.4p1openssh_9.8p1
OpenSSL 1.0.2k-fipsopenssl-1.1.1s

1.下載openssh、openssl二進制包

1、下載openssh源碼包
[root@localhost ~]# wget  https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
--2025-01-06 11:02:15--  https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.8p1.tar.gz
Resolving cdn.openbsd.org (cdn.openbsd.org)... 146.75.115.52, 2a04:4e42:15::820
Connecting to cdn.openbsd.org (cdn.openbsd.org)|146.75.115.52|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1910393 (1.8M) [application/octet-stream]
Saving to: ‘openssh-9.8p1.tar.gz’38% [=========================================>               729,088     49.9KB/s  eta 22s2、下載openssl源碼包
[root@localhost ~]# wget https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1s.tar.gz

2.安裝rpmbuild工具

[root@localhost ~]# yum install -y rpm-build
[root@localhost ~]# yum install rpmdevtools
[root@localhost ~]# yum install rpmlint -y #spec文件檢查工具
[root@localhost ~]# vim /root/.rpmmacros
%_topdir /export/rpmbuild  #/root/.rpmmacros文件是存儲各種宏定義,比如_topdir宏的值來自定義打包路徑

創建rpmbuild目錄

[root@localhost ~]# cd /export/
[root@localhost /export]# rpmdev-setuptree
[root@localhost /export]# cd rpmbuild && ls
BUILD  RPMS  SOURCES  SPECS  SRPMS

在這里插入圖片描述

3.拷貝源碼包到SOURCES目錄下

[root@localhost ~]# mv openssh-9.8p1.tar.gz /export/rpmbuild/SOURCES
[root@localhost ~]# mv OpenSSL_1_1_1s.tar.gz /export/rpmbuild/SOURCES

在這里插入圖片描述

4.系統開啟telnet,防止意外導致shh無法連接

[root@localhost ~]# yum install -y telnet-server
[root@localhost ~]# yum install -y telnet
[root@localhost ~]# yum install -y xinetd #也可以不裝
[root@localhost ~]# systemctl start telnet.socket && systemctl start xinetd.service#因為默認情況下系統是不允許root用戶telnet遠程登錄的。如果要使用root用戶直接登錄,需設置如下內容
[root@localhost ~]# echo  'pts/0'  >> /etc/securetty 
[root@localhost ~]# echo  'pts/1'  >> /etc/securetty#開啟telnet連接
[root@localhost ~]# telnet localhost
輸入用戶名
輸入密碼
完成登錄

在這里插入圖片描述

5.編譯工具安裝

[root@localhost ~]# yum install -y gcc make  gcc-c++ perl perl-WWW-Curl

至此,前期資源準備完成

6.補充說明

1、OpenSSH-9.8p1依賴OpenSSL-1.1.1及以上版本, 因此需要先升級openssl2、OpenSSH-8.6后默認為不允許root登錄3、較新版本的CentOS7中 pam_stack.so模塊已經被棄用刪除, 請備份 /etc/pam.d/sshd4、默認允許使用PAM登錄認證;5、默認允許使用X11Forwarding圖形模塊;6、需修改ssh_host_rsa_key、ssh_host_ecdsa_key、ssh_host_ed25519_key這三個文件的權限,OpenSSH-8.6之后縮小了這三個文件的權限為0600, 大于該權限將會導致SSHD啟動失敗

二、制作 OpenSSL RPM 包

1.編寫 SPEC 文件

代碼如下(示例):

Name:       openssl
Version:    1.1.1s
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.%package devel
Summary: Secure Sockets Layer and cryptography static libraries and headers
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description devel
The OpenSSL devel tool%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}# 安裝man手冊
mkdir -p %{buildroot}%{_mandir}/man1
cp -p man/man1/openssl.1 %{buildroot}%{_mandir}/man1/%clean
[ "%{buildroot}" != "/" ] && %{__rm} -rf %{buildroot}%files
%{openssldir}
%defattr(-,root,root)
%{_bindir}/openssl
%{_libdir}/libcrypto.so.1.1
%{_libdir}/libssl.so.1.1
%{_mandir}/man1/openssl.1   # 確保man頁面文件被列出%files devel
%{openssldir}/include/*
%defattr(-,root,root)%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig

2.驗證 SPEC 文件

代碼如下(示例):

errors為0則驗證通過

[root@localhost SPECS]# rpmlint openssl.spec 
openssl.spec: W: invalid-url Source0: https://www.openssl.org/source/openssl-1.1.1s.tar.gz <urlopen error ('_ssl.c:602: The handshake operation timed out',)>
0 packages and 1 specfiles checked; 0 errors, 1 warnings.

3.執行構建命令

[root@localhost SPECS]# rpmbuild  -D "version 1.1.1s" -ba openssl.spec

在這里插入圖片描述
在這里插入圖片描述

4.查看構建完成的rpm包

在這里插入圖片描述
注意事項: 上述 SPEC文件只構建了 openssl,openssl-devel和openssl-debuginfo三個包, 而且 更新之后 man openssl 會提示找不到手冊,對比網上其他的SPEC文件少了很多內容,總之不影響使用

三、通過RPM包更新 OpenSSL

1.檢查并備份舊openssl相關文件

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

找到幾個就備份幾個

[root@localhost SPECS]# cp -rp /usr/bin/openssl  /usr/bin/openssl.old
[root@localhost SPECS]# cp -rp /usr/lib64/openssl /usr/lib64/openssl.old
[root@localhost SPECS]# cp -rp /usr/include/openssl  /usr/include/openssl.old
[root@localhost SPECS]# cp -rp /usr/share/man/man1/openssl.1ssl.gz /usr/share/man/man1/openssl.1ssl.gz.old

2.卸載舊版本openssl

[root@localhost SPECS]# rpm -e openssl --nodeps

3.安裝新版openssl

升級openssl注意事項

1、只需要升級 openssl-1.1.1s 
2、openssl-devel可以不升級
3、openssl-libs 切記不能升級

升級

[root@localhost SPECS]# rpm -ivh ../RPMS/x86_64/openssl-1.1.1s-1.el7.x86_64.rpm --nodeps
準備中...                          ################################# [100%]
正在升級/安裝...1:openssl-1.1.1s-1.el7             ################################# [100%]

在這里插入圖片描述

4.驗證openssl版本

在這里插入圖片描述
至此,openssl升級完成.緊接著下篇文章升級openssh


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65517.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65517.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65517.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

patchwork++地面分割學習筆記

參考資料&#xff1a;古月居 - ROS機器人知識分享社區 https://zhuanlan.zhihu.com/p/644297447 patchwork算法一共包含四部分內容&#xff1a;提出了以下四個部分&#xff1a;RNR、RVPF、A-GLE 和 TGR。 1&#xff09;基于 3D LiDAR 反射模型的反射噪聲消除 (RNR)&#xff…

基于Spring Boot的海濱體育館管理系統的設計與實現

風定落花生&#xff0c;歌聲逐流水&#xff0c;大家好我是風歌&#xff0c;混跡在java圈的辛苦碼農。今天要和大家聊的是一款基于springboot的海濱體育館管理系統的設計與實現。項目源碼以及部署相關請聯系風歌&#xff0c;文末附上聯系信息 。 項目簡介&#xff1a; 寵物醫院…

通過Android Studio修改第三方jar包并重新生成jar包

最近接手了來自公司其他同事的一個Unity項目,里面有一個封裝的jar包要改動一下,無奈關于這個jar包的原工程文件丟失了,于是自己動手來修改下jar包,并做下記錄。 一、導入第三方jar包 1、新建項目EditJarDemo(項目名隨便取) 2、新建libs文件夾,把你要修改的third.jar 復制…

淺嘗Selenium自動化框架

淺嘗Selenium自動化框架 Selenium基本介紹Selenium原理Selenium學習要點寫個Selenium Demo結束 Selenium基本介紹 Selenium 是一個開源的自動化測試工具&#xff0c;只用于測試 Web 應用程序。它支持多種編程語言&#xff08;如 Java、Python、C# 等&#xff09;來編寫測試腳本…

計算機網絡之---物理層設備

什么是物理層設備 物理層設備是指負責數據在物理媒介上傳輸的硬件設備&#xff0c;它們主要處理數據的轉換、信號的傳輸與接收&#xff0c;而不涉及數據的內容或意義。常見的物理層設備包括網卡、集線器、光纖收發器、調制解調器等。 物理層設備有哪些 1、網卡&#xff08;N…

SQL中的數據庫對象

視圖&#xff1a;VIEW 概念 ① 虛擬表&#xff0c;本身不存儲數據&#xff0c;可以看做是存儲起來的SELECT語句 ② 視圖中SELECT語句中涉及到的表&#xff0c;稱為基表 ③ 針對視圖做DML操作&#xff0c;對影響到基表中的數據&#xff0c;反之亦然 ④ 創建、刪除視圖本身&#…

flink的EventTime和Watermark

時間機制 Flink中的時間機制主要用在判斷是否觸發時間窗口window的計算。 在Flink中有三種時間概念&#xff1a;ProcessTime、IngestionTime、EventTime。 ProcessTime&#xff1a;是在數據抵達算子產生的時間&#xff08;Flink默認使用ProcessTime&#xff09; IngestionT…

web服務器架構,websocket

1. 非前后端分離架構 1. 前端html后端servlet 被tomcat服務器打包&#xff0c;統一指定根目錄入口。通過原生表單發送到后端&#xff0c;后端根據請求數據進行重定向或請求轉發&#xff0c;這樣就不能進行動態渲染&#xff0c;也就必須存在很多靜態html對應每一個請求。 這里…

Ubuntu 下測試 NVME SSD 的讀寫速度

在 Ubuntu 系統下&#xff0c;測試 NVME SSD 的讀寫速度&#xff0c;有好多種方法&#xff0c;常用的有如下幾種&#xff1a; 1. Gnome-disks Gnome-disks&#xff08;也稱為“Disks”&#xff09;是 GNOME 桌面環境中的磁盤管理工具&#xff0c;有圖形界面&#xff0c;是測試…

SpringBoot之核心配置

學習目標&#xff1a; 1.熟悉Spring Boot全局配置文件的使用 2.掌握Spring Boot配置文件屬性值注入 3.熟悉Spring Boot自定義配置 4.掌握Profile多環境配置 5.了解隨機值設置以及參數間引用 1.全局配置文件 Spring Boot使用 application.properties 或者application.yaml 的文…

后端服務集成ElasticSearch搜索功能技術方案

文章目錄 一、為什么選用ElasticSearch二、ElasticSearch基本概念1、文檔和字段2、索引和映射3、倒排索引、文檔和詞條4、分詞器 三、ElasticSearch工作原理1、Term Dictionary、Term index2、Stored Fields3、Docs Values4、Segment5、Lucene6、高性能、高擴展性、高可用①高性…

舉例說明AI模型怎么聚類,最后神經網絡怎么保存

舉例說明怎么聚類,最后神經網絡怎么保存 目錄 舉例說明怎么聚類,最后神經網絡怎么保存K - Means聚類算法實現神經元特征聚類劃分成不同專家的原理和過程 特征提取: 首先,需要從神經元中提取有代表性的特征。例如,對于一個多層感知機(MLP)中的神經元,其權重向量可以作為特…

ocrmypdf使用時的cannot import name ‘PdfMatrix‘ from ‘pikepdf‘問題

最近在做pdf的ocr,之前使用過ocrmypdf&#xff0c;打算再次使用&#xff0c;發現它更新了&#xff0c;所以就打算使用最新版 環境&#xff1a;win11anaconda 創建虛擬環境后安裝語句&#xff1a; pip install ocrmypdf -i https://pypi.tuna.tsinghua.edu.cn/simple pip in…

【JavaEE進階】獲取Cookie/Session

&#x1f340;Cookie簡介 HTTP協議自身是屬于 "?狀態"協議. "?狀態"的含義指的是: 默認情況下 HTTP 協議的客?端和服務器之間的這次通信,和下次通信之間沒有直接的聯系.但是實際開發中,我們很多時候是需要知道請求之間的關聯關系的. 例如登陸?站成…

Oracle:ORA-00904: “10“: 標識符無效報錯詳解

1.報錯Oracle語句如下 SELECT YK_CKGY.ID,YK_CKGY.DJH,YK_CKGY.BLRQ,YK_CKGY.ZBRQ,YK_CKGY.SHRQ,YK_CKGY.YT,YK_CKGY.ZDR,YK_CKGY.SHR,YK_CKGY.BZ,YK_CKGY.JZRQ,YK_CKGY.ZT,YK_CKGY.CKLX,(case YK_CKGY.CKLXwhen 09 then藥房調借when 02 then科室退藥when 03 then損耗出庫when…

Linux 磁盤管理命令:使用xfs 管理命令

文章目錄 Linux磁盤管理命令使用xfs 管理命令1.命令說明2&#xff0e;建立 XFS 文件系統4&#xff0e;調整 XFS 文件系統各項參數5&#xff0e;在線調整 XFS 文件系統的大小6&#xff0e;暫停和恢復 XFS 文件系統7&#xff0e;嘗試修復受損的 XFS 文件系統8&#xff0e;備份和恢…

《Spring Framework實戰》3:概覽

歡迎觀看《Spring Framework實戰》視頻教程 Spring Framework 為基于現代 Java 的企業應用程序提供了全面的編程和配置模型 - 在任何類型的部署平臺上。 Spring 的一個關鍵要素是應用程序級別的基礎設施支持&#xff1a;Spring 專注于企業應用程序的 “管道”&#xff0c;以便…

借助免費GIS工具箱輕松實現las點云格式到3dtiles格式的轉換

在當今數字化浪潮下&#xff0c;地理信息系統&#xff08;GIS&#xff09;技術日新月異&#xff0c;廣泛滲透到城市規劃、地質勘探、文化遺產保護等諸多領域。而 GISBox 作為一款功能強大且易用的 GIS 工具箱&#xff0c;以輕量級、免費使用、操作便捷等諸多優勢&#xff0c;為…

均值濾波從圖像復原角度的解釋

廖老師說若將圖像生成看作一個隨機過程&#xff0c;均值濾波&#xff08;Mean Filtering&#xff09;可以視為在高斯噪聲模型下的線性最小均方估計&#xff08;Linear Minimum Mean Squared Error, LMMSE&#xff09;或者極大似然估計&#xff08;Maximum Likelihood Estimatio…

高等數學學習筆記 ? 一元函數微分的基礎知識

1. 微分的定義 &#xff08;1&#xff09;定義&#xff1a;設函數在點的某領域內有定義&#xff0c;取附近的點&#xff0c;對應的函數值分別為和&#xff0c; 令&#xff0c;若可以表示成&#xff0c;則稱函數在點是可微的。 【 若函數在點是可微的&#xff0c;則可以表達為】…