一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux OpenSSL介紹

馬哥Linux運維 ? 來源:博客園 ? 2025-06-26 14:12 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Linux openssl介紹

SSL和TLS

了解openssl之前,我們首先要了解SSLTLS是什么。

SSL(Secure Sockets Layer)是一個協(xié)議,叫作安全套接層協(xié)議。旨在為應用層數(shù)據(jù)提供加密的傳輸層通道。,即數(shù)據(jù)從應用層去往傳輸層,會首先被ssl給加密。

但是隨著時間的發(fā)展,SSL的繼任者TLS(Transport Layer Security)傳輸層安全協(xié)議被引入,為網(wǎng)絡連接提供了更高級的安全性,TLS提供更多的加密算法和選擇,所以開始逐漸取代了早期的SSL版本。

ca533c4a-4f6a-11f0-b715-92fbcf53809c.png

例如:

在引入SSL和TLS之前,使用HTTP協(xié)議的請求和響應是明文的,這意味著數(shù)據(jù)包在傳輸過程中容易被第三方竊聽、抓取或篡改。引入SSL/TLS之后,當數(shù)據(jù)從應用層發(fā)送至傳輸層時,它會被SSL或TLS加密。這樣,一個安全的通道被建立,確保數(shù)據(jù)從發(fā)送方(一個端)到接收方(另一個端)的整個路徑都是加密的,從而實現(xiàn)端到端的安全性。

應用層數(shù)據(jù)在前往傳輸層加密的原因;

一直有一個疑問,為什么應用層的數(shù)據(jù)要在傳輸層加密,而不是在網(wǎng)絡層或者其它層進行加密。剛開始以為應用層數(shù)據(jù)肯定要從傳輸層經(jīng)過,如果在傳輸層已經(jīng)被別人捕獲了,在下一層加密沒意義了。后面才認識到這是有考慮的:

1. 在傳輸層對應用層數(shù)據(jù)進行加密,具有很強的選擇性,因為傳輸層加密允許為不同的應用選擇是否需要加密,可以給指定的應用加密,如果在網(wǎng)絡層或者數(shù)據(jù)鏈路層,全部都會被加密。

2. 傳輸層加密能保證端到端的安全性,網(wǎng)絡層或數(shù)據(jù)鏈路層加密可能只會在兩個設備或兩個網(wǎng)絡之間提供加密

3. 將數(shù)據(jù)從傳輸層加密了,在網(wǎng)絡層或數(shù)據(jù)鏈路層被捕獲了別人耶看不懂。

openssl

OpenSSL是一個開源的工具庫和工具集,用于處理SSL和TLS協(xié)議以及對數(shù)據(jù)進行加密和解密的各種操作。

openssl中文網(wǎng)

一般我們最常用的工具,就是這個軟件包里面提供的一個叫作 openssl 的命令行工具,通過它可以實現(xiàn)一些加密算法,像SSL、TLS等等。

在Linux發(fā)行版系統(tǒng)中,一般默認就安裝了openssl工具,通過 openssl verson 就可以查看openssl的版本信息。

ca658c56-4f6a-11f0-b715-92fbcf53809c.png

openssl基礎用法

實現(xiàn)對稱加密

對稱加密就是加密和解密使用的是同一個密鑰,是通過將原始數(shù)據(jù)分割成若干塊來逐個進行加密,所以效率高、速度快

openssl enc -e 算法類型  -a -salt -in 需要加密的文件 -out 存放加密生成的結果的文件

例如:

openssl enc -e -des3 -a -salt -infile1 -outfile1.cipher

ca75d282-4f6a-11f0-b715-92fbcf53809c.png

說明:

? 使用 -salt 來加鹽(加鹽就是在進行哈希加密的時候加上隨機字符串)的時候,openssl會自動生成一個隨機的鹽,并在加密過程中使用它

? 除了 -des3 這種堆成加密類型,還有-des等類型。使用 man openssl enc 可以看到其它的一些加密類型應該使用的對應參數(shù)

? 使用 -a 參數(shù)可以將加密后的內容通過base64這種彪馬格式來顯示

實現(xiàn)對稱解密

openssl enc -d 算法類型 -a -salt -in需要解密的文件 -out解密后的問題

例如:

openssl enc -d -des3 -a -salt -infile1.cipher -outfile1_new

ca8778ac-4f6a-11f0-b715-92fbcf53809c.png

說明:

? 算法類型需要和加密時使用的保持一致

? 使用對稱加密的時候會要求提示輸入密碼。因為對稱加密算法使用同一個密碼進行加密和解密

實現(xiàn)非對稱加密

非對稱加密的特點是密鑰成對出現(xiàn),加密和解密用的密鑰不相同,并且通信雙方都需要各自的密鑰和私鑰

? 如果使用公鑰加密、私鑰解密。加密的數(shù)據(jù)只能自己解開,能充分保證數(shù)據(jù)的安全

? 如果使用私鑰加密,公鑰解密。這樣能確定數(shù)據(jù)的來源性,這就是我們所說的數(shù)字簽名

生成私鑰:

openssl genrsa -out存放私鑰的文件 使用的加密算法類型

例如:

openssl genrsa -outb.enc

ca971f32-4f6a-11f0-b715-92fbcf53809c.png

說明:

? 不指定密鑰的長度,默認長度就是2048,密鑰長度越長,其加密強度就越高,加密何解密時間越長,一般使用默認的就可以了

? 不指定加密算法的類型,默認使用的非對稱加密算法是RSA

? 生成的密鑰默認是按照 PEM格式 輸出,即以base64格式顯示文本信息。

生成公鑰:

公鑰鑰是隱藏在私鑰內部的,可以通過私鑰的到公鑰

openssl rsa -in私鑰文件 -pubout -out提取出來保存的公鑰文件

例如:



caacded0-4f6a-11f0-b715-92fbcf53809c.png

實現(xiàn)非對稱解密

公鑰加密:

openssl rsautl -encrypt -pubin -inkey 公鑰文件 -in需要加密的文件 -out加密后的文件

私鑰解密:

openssl rsautl -decrypt -inkey 私鑰文件 -in需要解密的文件 -out解密后的文件

實現(xiàn)單向哈希

hash是一種單向的加密算法,是不可逆的。使用哈希算法加密出來的結果就叫做摘要,這玩意兒有個特點就是長度固定,內容不同。一旦原數(shù)據(jù)發(fā)生改變,摘要也會隨之發(fā)生改變,所以一般用來確認數(shù)據(jù)的完整性,看有沒有被人篡改。

在這里有一個叫作指紋的概念,指紋是每個人獨一無二的,不同的人(數(shù)據(jù))有不同的指紋(摘要),但是只知道了指紋(摘要),也不能知道是誰(不能通過摘要推出原數(shù)據(jù))。

openssl dgst 使用的哈希算法 對哪個文件生成摘要

例如:

openssl dgst file1

cabaad4e-4f6a-11f0-b715-92fbcf53809c.png

說明:

? 不指定哈希算法,默認使用的是 SHA256算法,可以使用 man openssl dgst查看對應選項代表的哈希算法

? 不指定顯示的類型,默認顯示的是十六進制的字符

生成用戶密碼

可以使用openssl來給用戶生成密碼,使用 useradd 命令創(chuàng)建用戶的時候可以指定用戶的密碼,但是這個密碼必須是加密的密碼才行,這個時候就可以使用openssl來生成一個。

其實就是利用哈希算法來給密碼生成一個摘要值

openssl passwd 算法類型 用戶密碼

不指定任何哈希算法選項,那么默認使用的是傳統(tǒng)的UNIX crypt() 方法,比 MD5 還老

算法類型說明:

? -6:表示采用sha512這種加密算,也會默認使用隨機的鹽

? -5:sha256算法,也會默認使用隨機的鹽

? -1:md5算法,會默認生成一個隨機的鹽來與密碼一起哈希

這三種都是UNIX密碼哈希方案的一部分

例如:

useradd bob -m -s /bin/bash -p $(openssl passwd -6 redhat)

cacb3c54-4f6a-11f0-b715-92fbcf53809c.png

使用useradd創(chuàng)建用戶的時候,如果沒指定相關屬性,會默認使用 /etc/default/useradd中定義的屬性信息。

生成隨機數(shù)

opensslrand顯示格式(主要有hex和base64) 輸出的隨機字節(jié)數(shù)量

例如:生成16個隨機字節(jié)并以十六進制格式輸出

opensslrand-hex16

cad6d94c-4f6a-11f0-b715-92fbcf53809c.png

說明:一個十六機制數(shù)由4個二進制數(shù)組成,一個字節(jié)8位,所以一個十六進制數(shù)等于兩個字節(jié)??偣矔敵鋈€字符

例如:以base64編碼形式顯示隨機數(shù)

opensslrand-base6416

base64編碼介紹

base64是一種用64個字符來表示任意二進制數(shù)據(jù)的方法。在一些早期的協(xié)議中,例如smtp、http。他們只設計了ASCII字符數(shù)據(jù)的傳輸,當需要包含非ASCII字符或者二進制數(shù)據(jù)時就會出問題,因為雖然二進制數(shù)據(jù)都是由于0和1組成,但是難點在于如何表示和傳輸這些0和1。

這個時候使用base64編碼完美解決問題,將二進制數(shù)據(jù)轉為一個僅由ASCII字符組成的安全字符串,這樣可以避免由于二進制數(shù)據(jù)的傳輸而導致的任何解釋或傳輸問題

編碼原理

1. 先將要三個字節(jié)的二進制數(shù)據(jù)(一共24位),重新分為4組,每組6位。(每6位就可以表示一個值,范圍從0到63)

2. 然后將每個6位的數(shù)據(jù)(一個組)轉換為十進制數(shù)字,然后根據(jù)base64的字符集得到相應的字符。

3. 再重復這個過程直到所有的輸入數(shù)據(jù)都被處理完

4. 如果原始數(shù)據(jù)(即待編碼的數(shù)據(jù))的長度不是3個字節(jié)的整數(shù)倍(base64將每3個字節(jié)作為一個單元來處理),會添加填充字符,即=,來使其長度滿足要求。這就是看到等號的原因

鏈接:https://www.cnblogs.com/heyongshen/p/17787948.html

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11496

    瀏覽量

    213224
  • 網(wǎng)絡
    +關注

    關注

    14

    文章

    7795

    瀏覽量

    90617
  • 傳輸層
    +關注

    關注

    0

    文章

    31

    瀏覽量

    11062

原文標題:OpenSSL完全指南:Linux系統(tǒng)安全通信的終極武器

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    嵌入式學習-ElfBoard ELF 1板卡-移植openssl

    openssl是一個開放源代碼的軟件庫包,應用程序可以使用這個包來進行安全通信,避免竊聽,同時確認另一端連線者的身份。這個包被廣泛應用于互聯(lián)網(wǎng)的網(wǎng)頁服務器上。下面這篇文章就給各位小伙伴介紹一下如何在
    發(fā)表于 12-28 08:53

    openssl移植到arm-linux全過程相關資料分享

    本文章記錄了將openssl移植到arm-linux下的全部過程移植環(huán)境編譯環(huán)境:Ubuntu18.04-amd64模板環(huán)境:i.mx6ul Linux 4.1.15編譯鏈
    發(fā)表于 07-01 12:22

    怎樣將openssl移植到arm-linux下呢

    怎樣將openssl移植到arm-linux下呢?有哪些操作流程?
    發(fā)表于 10-22 06:55

    openssl有哪些應用呢

    1、環(huán)境配置在me.h文件里修改以下宏定義ME_COM_MBEDTLS 0ME_COM_MATRIXSSL 0ME_COM_NANOSSL 0ME_COM_OPENSSL 12、添加
    發(fā)表于 12-16 07:41

    介紹移植openssl庫到嵌入式設備中的具體方法

    本篇文章是介紹國密算法在嵌入式設備中應用方法系列文章的第三篇,介紹移植openssl庫到嵌入式設備中的具體方法,當然最終的目的還是使我們的設備能支持國密算法。同上一篇文章中介紹的mir
    發(fā)表于 12-21 06:19

    Openssl嵌入式arm移植筆記分享,絕對實用

    openssl-1.1.1-stable-SNAP-20190915.tar.gz3、輸入命令 ./config no-asm shared --prefix=$(pwd)/install_arm4、設置交叉編譯工具鏈接92 行設置CROSS_COMPILE = arm-linu
    發(fā)表于 12-27 06:51

    交叉編譯openssl時出現(xiàn)找不到編譯器的問題怎么辦

    交叉編譯ffmpeg時是沒出現(xiàn)該問題的,但是在交叉編譯openssl-1.1.0f時卻出現(xiàn)了如下錯誤,實在是頭疼?。oot@ubuntu:/home/openssl/openssl
    發(fā)表于 12-01 06:00

    OpenSSL在電子商務安全中的應用

    基于公共密鑰技術的SSL 協(xié)議已經(jīng)成為Internet 上廣泛應用的安全通信標準,源碼開放的OpenSSL是對SSL 協(xié)議的完整實現(xiàn)。介紹OpenSSL 在電子商務安全中的應用。
    發(fā)表于 08-31 15:58 ?12次下載

    如何才能使用OpenSSL實現(xiàn)一個基本的安全連接的詳細概述

    OpenSSL API 的文檔有些含糊不清。因為還沒有多少關于 OpenSSL 使用的教程,所以對初學者來說,在 應用程序中使用它可能會有一些困難。那么怎樣才能使用 OpenSSL 實現(xiàn)一個基本的安全連接呢? 本教程將幫助您解決
    的頭像 發(fā)表于 05-27 10:26 ?6355次閱讀
    如何才能使用<b class='flag-5'>OpenSSL</b>實現(xiàn)一個基本的安全連接的詳細概述

    密碼學OpenSSL的入門基礎知識整理合集

    本文是使用 OpenSSL 的密碼學基礎知識的兩篇文章中的第一篇,OpenSSL 是在 Linux 和其他系統(tǒng)上流行的生產級庫和工具包。(要安裝 OpenSSL 的最新版本,請參閱 這
    的頭像 發(fā)表于 02-07 15:29 ?3983次閱讀
    密碼學<b class='flag-5'>OpenSSL</b>的入門基礎知識整理合集

    嵌入式Linux系統(tǒng)openssl庫移植

    openssl庫移植1 什么是openssl可以這么說,只要你的應用程序和網(wǎng)絡安全有關系,不管是http還是mqtt,那么都需要依賴到openssl;首先openssl是一個開源庫,功
    發(fā)表于 11-01 16:31 ?8次下載
    嵌入式<b class='flag-5'>Linux</b>系統(tǒng)<b class='flag-5'>openssl</b>庫移植

    openssl】從openssl的常用接口淺談【內存泄漏】

    使用openssl有內存泄露風險嗎?從openssl的常用接口調用淺談【內存泄漏】的風險和規(guī)避。
    的頭像 發(fā)表于 08-31 11:24 ?3723次閱讀
    【<b class='flag-5'>openssl</b>】從<b class='flag-5'>openssl</b>的常用接口淺談【內存泄漏】

    openssl】利用openssl命令行快速生成RSA私鑰

    openssl】如何利用openssl命令行快速生成RSA私鑰?
    的頭像 發(fā)表于 08-31 12:58 ?3759次閱讀
    【<b class='flag-5'>openssl</b>】利用<b class='flag-5'>openssl</b>命令行快速生成RSA私鑰

    OpenSSL安裝常見問題

    OpenSSL安裝常見問題
    的頭像 發(fā)表于 07-07 11:17 ?1151次閱讀
    <b class='flag-5'>OpenSSL</b>安裝常見問題

    linux系統(tǒng)通過OpenSSL工具自簽https證書

    工具介紹 OpenSSL是SSL/TLS協(xié)議的實現(xiàn)工具 key是私鑰文件,用于對發(fā)送給客戶端的數(shù)據(jù)加密,以及對從客戶端接收的數(shù)據(jù)進行解密。 csr是證書簽名請求文件,用于提交給證書頒發(fā)機構(CA
    的頭像 發(fā)表于 12-09 13:53 ?1121次閱讀