openssl3.2 - update debian12‘s default openssl to openssl3.2

文章目录

    • openssl3.2 - update debian12's default openssl to openssl3.2
    • 概述
    • 笔记
    • 回到debian12自带的openssl版本
    • 从源码编译安装最新版的openssl
    • 配置ssl访问
    • END

openssl3.2 - update debian12’s default openssl to openssl3.2

概述

在debian12虚拟机中编译了openssl3.2(openssl3.2 - 编译)
只做openssl3.2的实验没问题, 但是用SSH连接就不行了. 原因在于系统中的openssl还是旧版.

lostspeed@debian12d4x64:~$ apt show openssl
Package: openssl
Version: 3.0.11-1~deb12u2
Priority: optional
Section: utils
Maintainer: Debian OpenSSL Team <pkg-openssl-devel@alioth-lists.debian.net>
Installed-Size: 2,346 kB
Depends: libc6 (>= 2.34), libssl3 (>= 3.0.9)
Suggests: ca-certificates
Homepage: https://www.openssl.org/
Tag: implemented-in::c, interface::commandline, protocol::ssl, role::program,scope::utility, security::cryptography, security::integrity,use::checking
Download-Size: 1,419 kB
APT-Sources: http://mirrors.tuna.tsinghua.edu.cn/debian bookworm/main amd64 Packages
Description: 安全套接字层工具箱 - 加密工具本软件包是 OpenSSL 项目对应用于在互联网上进行安全通信的 SSL 和 TLS 加密协议的一个实现。.它包含了通用命令行工具 /usr/bin/openssl,主要用于各类加密操作,例如:* 创建 RSA、DH 和 DSA 密钥选项;* 创建 X.509 证书、CSR 和 CRL;* 计算消息摘要;* 对密文的加密和解密;* 测试 SSL/TLS 客户端和服务端;* 处理 S/MIME 签名和加密的邮件。lostspeed@debian12d4x64:~$ openssl version -a
OpenSSL 3.2.0 23 Nov 2023 (Library: OpenSSL 3.2.0 23 Nov 2023)
built on: Sat Jan 20 13:03:36 2024 UTC
platform: linux-x86_64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL
OPENSSLDIR: "/usr/local/openssl_3d2/common"
ENGINESDIR: "/usr/local/openssl_3d2/lib64/engines-3"
MODULESDIR: "/usr/local/openssl_3d2/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfffa32034f8bffff:0x18405f5ef1bf27eb
lostspeed@debian12d4x64:~$ 

从以上命令可以看出:

  • debian12系统中看到的openssl还是3.0.11-1~deb12u2
  • 但是我自己编译后, 可以在本地运行的openssl是最新的稳定版 3.2.0

今天查了一下资料, 准备将debian12系统中的openssl也换成最新版的openssl3.2

笔记

查看libssl-dev也是旧版

lostspeed@debian12d4x64:~$ apt show libssl-dev
Package: libssl-dev
Version: 3.0.11-1~deb12u2
Priority: optional
Section: libdevel
Source: openssl
Maintainer: Debian OpenSSL Team <pkg-openssl-devel@alioth-lists.debian.net>
Installed-Size: 12.6 MB
Depends: libssl3 (= 3.0.11-1~deb12u2)
Suggests: libssl-doc
Homepage: https://www.openssl.org/
Tag: devel::lang:c, devel::library, implemented-in::TODO, implemented-in::c,protocol::ssl, role::devel-lib, security::cryptography
Download-Size: 2,430 kB
APT-Sources: http://mirrors.tuna.tsinghua.edu.cn/debian bookworm/main amd64 Packages
Description: Secure Sockets Layer toolkit - development filesThis package is part of the OpenSSL project's implementation of the SSLand TLS cryptographic protocols for secure communication over theInternet..It contains development libraries, header files, and manpages for libssland libcrypto.lostspeed@debian12d4x64:~$ 

回到debian12自带的openssl版本

sudo apt update
sudo apt install openssl libssl-dev

现在查看openssl版本, 已经是linux自带的旧版本.
但是环境变量(OPENSSLDIR, ENGINESDIR, MODULESDIR)还是自己编译的新版的路径

openssl version -a
OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.2.0 23 Nov 2023)
built on: Sat Jan 20 13:03:36 2024 UTC
platform: linux-x86_64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL
OPENSSLDIR: "/usr/local/openssl_3d2/common"
ENGINESDIR: "/usr/local/openssl_3d2/lib64/engines-3"
MODULESDIR: "/usr/local/openssl_3d2/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfffa32034f8bffff:0x18405f5ef1bf27eb

到现在为止, 就回到了debian12自带的openssl环境.

从源码编译安装最新版的openssl

sudo apt update
sudo apt install build-essential checkinstall zlib1g-devmkdir /home/lostspeed/openssl
cd /home/lostspeed/openssl# 现在最新版本为3.2.1了, 不过为了自己学习openssl, 还是下载3.2.0版本
wget --no-check-certificate https://www.openssl.org/source/openssl-3.2.0.tar.gztar -xf openssl-3.2.0.tar.gzcd openssl-3.2.0/./config --debug --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib# 指定用和CPU数量一样的线程数来干活(锦上添花, 直接用make就可以)
make -j$(nproc)make testsudo make install# openssl3.2 已经安装到了 /usr/local/ssl, 看一下
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ ls -l /usr/local/ssl
总计 68
drwxr-xr-x 2 root root  4096  2612:38 bin
drwxr-xr-x 2 root root  4096  2612:38 certs
-rw-r--r-- 1 root root   412  2612:38 ct_log_list.cnf
-rw-r--r-- 1 root root   412  2612:38 ct_log_list.cnf.dist
drwxr-xr-x 3 root root  4096  2612:38 include
drwxr-xr-x 5 root root  4096  2612:38 lib64
drwxr-xr-x 2 root root  4096  2612:38 misc
-rw-r--r-- 1 root root 12328  2612:38 openssl.cnf
-rw-r--r-- 1 root root 12328  2612:38 openssl.cnf.dist
drwxr-xr-x 2 root root  4096  2612:38 private
drwxr-xr-x 4 root root  4096  2612:39 share

配置openssl库选项, 配置目录在 /etc/ld.so.conf.d

lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ ls -l /etc/ld.so.conf.d
总计 16
-rw-r--r-- 1 root root  38 20233月18日 fakeroot-x86_64-linux-gnu.conf
-rw-r--r-- 1 root root  44 20229月23日 libc.conf
-rw-r--r-- 1 root root  91  1月20日 14:59 openssl.conf
-rw-r--r-- 1 root root 100  9月30日 16:31 x86_64-linux-gnu.conf

里面有我以前失败实验创建的openssl.conf, 删掉.

sudo rm /etc/ld.so.conf.d/openssl.conf 

建立编辑新的openssl库配置文件

sudo vi /etc/ld.so.conf.d/openssl-3.2.0.conf# 添加库路径
/usr/local/ssl/lib64# 关闭保存
:wq# 重新载入so
sudo ldconfig -v

可以看到自己编译的openssl.so已经被载入了

/usr/local/ssl/lib64: (from /etc/ld.so.conf.d/openssl-3.2.0.conf:1)libssl.so.3 -> libssl.so.3libcrypto.so.3 -> libcrypto.so.3

配置路径
先备份一下

sudo cp /etc/environment /etc/environment.bk
# 这个文件在我这默认是空的
# 但是直接看PATH变量是有内容的
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

编辑配置文件

sudo vi /etc/environment# 添加如下内容
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/snap/bin:/usr/local/ssl/bin"

比较$PATH和添加的内容, 可以发现, 多添加了一些路径, 如下:

$PATH                 /usr/local/bin:          /usr/bin:      /bin:/usr/local/games:/usr/gamesPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/snap/bin:/usr/local/ssl/bin"

现在看openssl版本还是旧的.

将opessl的预安装文件改名

sudo mv /usr/bin/c_rehash /usr/bin/c_rehash.bk# 用openssl看版本时, 用的就是下面的旧openssl
sudo mv /usr/bin/openssl /usr/bin/openssl.bk

更新环境变量

sudo source /etc/environment

这时, 再看openssl版本, 已经是新版的. 而且用的openssl位置, 也是自己源码编译安装后的位置.

lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ openssl version -a
OpenSSL 3.2.0 23 Nov 2023 (Library: OpenSSL 3.2.0 23 Nov 2023)
built on: Tue Feb  6 04:26:44 2024 UTC
platform: linux-x86_64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DZLIB
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/ssl/lib64/engines-3"
MODULESDIR: "/usr/local/ssl/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfffa32034f8bffff:0x18405f5ef1bf27eb
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ which openssl
/usr/local/ssl/bin/openssl
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ 

确认更新后的环境变量

echo "$PATH" | tr ':' '\n'/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/local/games
/usr/games
/snap/bin
/usr/local/ssl/bin

可以看到自己编译安装的openssl路径, 已经在PATH变量值的尾巴上.
确认现在系统中用的openssl位置和版本

lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ which openssl
/usr/local/ssl/bin/openssl
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ type openssl
openssl 已被录入哈希表 (/usr/local/ssl/bin/openssl)
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ openssl version
OpenSSL 3.2.0 23 Nov 2023 (Library: OpenSSL 3.2.0 23 Nov 2023)
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ 

重启开机后, 发现环境变量不好使, 必须自己手工执行一下才行.
将环境变量开机启动.

cd /etc
sudo cp ./profile ./profile.bk
sudo vi ./profile# 在export PATH 上面加一行改掉, 将openssl路径加上去.
if [ "$(id -u)" -eq 0 ]; thenPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else# 将这句话改为包含openssl路径, 要改的和上面手工运行的环境变量文件(/etc/environment)内容相同PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/snap/bin:/usr/local/ssl/bin"
fi
export PATH# :wq
#重新开机启动

这回开机重启后, 进入桌面, 可以正常运行自己编译安装好的openssl.

配置ssl访问

如果只能在虚拟机桌面操作, 那太难受了, 配置为可以用SSH客户端远程访问.
最好是升级openssl之前, 就将ssh访问配好.
debian12.4配置

然后按照这篇笔记, 升级到openssl3.2

运行ssh --version时, 会出现下面的报错.

lostspeed@debian12d4x64:/$ ssh --version
OpenSSL version mismatch. Built against 300000a0, you have 30200000

此时, 只需要运行以下一句话就能搞定.

sudo mv /etc/ld.so.cache /etc/ld.so.cache_bak

此时, 再将SSH配置执行执行一下. 确认SSH配置的没问题.

sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh

然后确定debian12所在的IP.

ip addr

然后去win10主机上, 先ping通debian12, 然后用SSH连接, 搞定.

重启后, 运行openssl3.2, 发现so用的是旧版本.
做软连接, 替换掉/usr/lib/x86_64-linux-gnu中的openssl so

cd /usr/lib/x86_64-linux-gnu
sudo mv ./libssl.so.3 ./libssl.so.3_bk
sudo ln -s /usr/local/ssl/lib64/libssl.so.3 /usr/lib/x86_64-linux-gnu/libssl.so.3sudo mv ./libcrypto.so.3 ./libcrypto.so.3.bk
sudo ln -s /usr/local/ssl/lib64/libcrypto.so.3 /usr/lib/x86_64-linux-gnu/libcrypto.so.3

现在openssl是新版的了.

现在看看ssh

ssh -V
OpenSSL version mismatch. Built against 300000a0, you have 30200000

看看重新配置一下ssh行不行

sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh

没报错.
重新启动试试.
查看ssh状态, 失败
重新用上面3条语句配置试试.
不行啊

lostspeed@debian12d4x64:~$ sudo systemctl start ssh
Job for ssh.service failed because the control process exited with error code.
See "systemctl status ssh.service" and "journalctl -xeu ssh.service" for details.
lostspeed@debian12d4x64:~$ ssh -V
OpenSSL version mismatch. Built against 300000a0, you have 30200000

好像必须要从源码编译ssh才行.
已经从源码编译安装配置了openSSH(debian12 - openssh-9.6.P1的编译安装)
debian12重启后, 已经可以从win10用SSH客户端链接debian12 😛

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/672305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android.mk 语法详解

一.Android.mk简介 Android.mk 是Android 提供的一种makefile 文件,注意用来编译生成&#xff08;exe&#xff0c;so&#xff0c;a&#xff0c;jar&#xff0c;apk&#xff09;等文件。 二.Android.mk编写 分析一个最简单的Android.mk LOCAL_PATH : $(call my-dir) //定义了…

常见web安全漏洞和解决思路

一、常见安全漏洞 服务器类安全漏洞&#xff1a; 服务器含服务器软件类型较多&#xff0c;此次不再一一列举&#xff1b; WEB访问类安全漏洞&#xff1a; XSS漏洞检测 (key: xss) SQL 注入检测 (key: sqldet) 命令/代码注入检测 (key: cmd-injection) …

解决计算机“缺失ffmpeg.dll”报错?修复ffmpeg.dll文件方案

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“ffmpeg.dll丢失”。ffmpeg.dll是FFmpeg多媒体框架中的一个重要组件&#xff0c;它负责处理音频和视频的编解码。当打开某些软件时&#xff0c;如果系统找不到该文件&#xff0c;就会出现这…

okgo引入失败 (failed to resolve: com.lzy.net:okgo:)

setting.gradle.kts配置 dependencyResolutionManagement {repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories {google()mavenCentral()maven { setUrl("https://maven.aliyun.com/repository/public") }maven { setUrl("https://mave…

已经设置密码的情况下连接不上linux下redis服务的,解决办法

1.服务器防火墙请放行端口6379 systemctl start firewalld.service firewall-cmd --add-port6379/tcp --permanent firewall-cmd --reload 3.修改redis的配置文件 打开redis配置文件redis.conf进行编辑&#xff0c;修改一些参数 将 bind 127.0.0.1修改为bind 0.0.0.0,原因是…

每天分享5款软件,让大家工作学习更顺心

​ 快乐不是在于拥有什么,而在于我们和别人分享什么。每天分享五款工具&#xff0c;让大家工作办公更顺心就是我最大的快乐。 1.图片放大增强——Upscayl ​ Upscayl是一款图片放大增强软件&#xff0c;可以利用人工智能技术将低分辨率的图片转换为高分辨率的图片&#xff0c…

Java应用中各类环境变量的优先级及最佳实践

1.引言 Java应用程序的开发和部署过程中&#xff0c;合理利用各类环境变量是关键之一。不同类型的环境变量&#xff0c;如系统环境变量、进程级环境变量、Java启动参数设置的系统属性以及Spring Boot配置文件中的环境变量&#xff0c;它们之间存在优先级差异。 深入理解这些环…

《Docker极简教程》--Docker环境的搭建-在Windows上搭建Docker环境

Docker是一种开源的容器化平台&#xff0c;它可以帮助开发人员更轻松地构建、发布和运行应用程序。在Windows上搭建Docker环境&#xff0c;可以提供一个可靠的容器化开发和部署平台。下面将详细介绍在Windows上搭建Docker环境的步骤、注意事项和常见问题解决方法。 一、步骤 …

【C生万物】C语言数据类型、变量和运算符

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有…

【日志记录】——单片机可执行文件合并

一&#xff1a;需求场景 现在有一片单片机&#xff0c;执行程序包括自定义boot和应用程序app, 在将打包好的固件给到生产时有以下问题&#xff0c;由于要通过jlink烧录boot&#xff0c;然后上电启动boot&#xff0c;通过boot烧录初始化程序&#xff0c;过程过于复杂&#xff0…

Java Map HashMap集合的基本操作与使用

Java Map HashMap集合的基本操作与使用 package com.zhong.mapdemo.map;import jdk.jfr.Description;import javax.swing.plaf.synth.SynthOptionPaneUI; import java.util.*;/*** ClassName : MapDemo* Description : map 的基本使用* Author : zhx* Date: 2024-02-07 10:29*/…

jsp课程管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 课程管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

Vue运行报错:this[kHandle] = new _Hash(algorithm, xofLen)

问题描述 在github拉取vue项目到本地运行时&#xff0c;出现报错: this[kHandle] new _Hash(algorithm, xofLen) 报错原因 出现这个问题是node.js 的版本问题&#xff0c;因为 node.js V17开始版本中发布的是OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制&…

[每周一更]-(第85期):NLP-实战操作-文本分类

NLP文本分类的应用场景 医疗领域 - 病历自动摘要&#xff1a; 应用&#xff1a; 利用NLP技术从医疗文档中自动生成病历摘要&#xff0c;以帮助医生更快速地了解患者的状况。 法律领域 - 法律文件分类&#xff1a; 应用&#xff1a; 使用文本分类技术自动分类法律文件&#xf…

Maven - 编译报错:程序包 XXX 不存在(多模块项目)

问题描述 编译报错&#xff1a;程序包 XXX 不存在&#xff08;多模块项目&#xff09; 原因分析 检查依赖模块 pom 文件&#xff0c;看是不是引入了如下插件 <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-pl…

大语言模型微调数据集(2)

CLUE 数据集 CLUE 是一个中文语言理解测评基准,包括分类、命名实体识别和机器阅读理解任务。CLUE中的数据集为JSON格式。对于分类和命名实体识别数据集,我们将JSON格式转换为TSV格式,以便TencentPretrain可以直接加载它们;对于机器阅读理解数据集,我们保留原始格式,并将数…

VOL_常用记录!!

目录 前端1.js如何获取当前时间(yy-MM-dd HH:MM:SS)2.http请求3.grid扩展js常用 后端1.待补充 前端 1.js如何获取当前时间(yy-MM-dd HH:MM:SS) getCurrentTime() {const now new Date();return ${now.getFullYear()}-${(now.getMonth() 1).toString().padStart(2, "0&…

C++学习:string的了解

1.string的介绍 #include<string> 对于字符串的操作 自动处理内存的分配和释放 2.string的声明与初始化 1.std::string str1;空的 2.string str2 "afhsihsa" 3.string str3 str2 4.string str3 str2.substr(0,5) .substr(位置&#xff0c;长度) 5.c…

如何为Kafka加上账号密码(一)

Kafka认证基本概念 一直以来&#xff0c;我们公司内网的Kafka集群都是在裸奔&#xff0c;只要知道端口号&#xff0c;任何人都能连上集群操作一番。直到有个主题莫名消失&#xff0c;才引起我们的警觉&#xff0c;是时候该考虑为它添加一套认证策略了。 认证和授权就是一对孪生…

搜索引擎DuckDuckGo代理指南

DuckDuckGo作為一款搜索引擎&#xff0c;同時擁有自己的流覽器&#xff0c;高度保護用戶隱私&#xff0c;使其有別於其他收集和利用用戶數據進行定向廣告的搜索引擎。然而&#xff0c;單獨使用DuckDuckGo並不能保證線上完全匿名。如果你想進一步保護隱私&#xff0c;那就需要使…