https 相關知識 (openssl)

2021-07-13 16:50:30 字數 4328 閱讀 9787

秘鑰演算法和協議

對稱加密 加密和解密使用同乙個秘鑰

des:data encryption standard(不安全,容易被破解) 56位秘鑰

3des:triple des

aes:advanced encryption standard;(安全性特別高)秘鑰128bits 192bits 256bits,384bits

。。。特性:1、加密和解密使用同乙個秘鑰

2、將原始資料分割成固定大小的塊,逐個進行加密;

缺陷:1、秘鑰過多;伺服器要和每個訪問者都要生成乙個秘鑰

2、秘鑰分發困難;

公鑰加密 :秘鑰分為公鑰和私鑰 (比對稱加密效率低很多)

公鑰:從私鑰中提取產生,公開給所有人:pubkey

私鑰:通過工具建立,secret key;

特點:公鑰加密私鑰解密   私鑰加密公鑰解密

用途:數字簽名:讓接收方確認傳送方的身份

秘鑰交換:傳送方用對方的公鑰加密乙個對稱秘鑰,傳送對方

資料加密

演算法:rsa(可以作為簽名也可以作為加密)、dsa(只能做簽名)、elgamal

單向加密:即提出資料指紋;只能加密,不能解密;

特徵:定長輸出

功能:完整性驗證

演算法:md5 128 bits  

sha1 160bits 

金鑰交換: ike

公鑰秘鑰,缺點是加密後的秘鑰還是通過網路傳給對方,有風險

dh演算法 工作原理:假設a b兩個要共同約定乙個對稱加密的秘鑰。        

首先 a要自己定義乙個x數(隨機的),同時和b約定一組數p和g(這兩個數是公開的),然後a利用資料公式p^x%g=a1 得到a1這個數,然後把a1發給b,這個時候,雖然別人知道p和g和計算公式,但是也無法又a1反過來得到x。接著b收到了a1,b自己也定義乙個只有自己知道的數y,然後跟a的做法一樣,根據公式 p^y%g=b1 得到乙個數b1發給a。這個時候,a擁有了b發給自己的b1,b擁有了a發給自己的a1,注意,這個時候a1和b1是不相等的,然後,a拿著b1再用公式 b1^x(其實就是p^y%g^x)得到乙個b2,同理,b拿著a1也用公式a1^y(其實就是p^x%g^y)得到乙個a2,然後大家就會發現其實b2是等於a2的,然後,a2,b2就是我們要的加密的秘鑰,而且在整個過程中,a2或b2沒有在網路上傳輸過,所以顯得非常安全。

pki:public key infrastructure(公鑰基礎設施)

簽證機構:ca

序號產生器構:ra

證書吊銷列表:crl

證書訪問庫:

x.509:定義了證書的結構以及認證協議標準

版本號序列號

簽名演算法id

發行者名稱

有效期限

主體名稱

主體公鑰

發行者的唯一標識

主體的唯一標識

擴充套件發行者簽名

ssl:secure sockets layer

網景公司開發1994

tls:transport layer secutity

ietf:1999 年發布

v1.0 v1.1 v1.2 v1.3

開源實現openssl

對於linux系統:openssl ,gpg(pgp)

openssl 由三部分組成:

libencrpt庫

libssl庫

openssl 多用途命令列工具

ssl主要有三步:

客戶端向伺服器端索要證書並驗證證書;

雙方協商生成「會話秘鑰」;

雙方採用會話秘鑰進行加密通訊

第一階段:clienthello

支援的協議版本,比如tls1.2 

客戶端生成乙個隨機數,稍後使用者生成「回話秘鑰」

支援的加密演算法,比如aes、rsa

支援的壓縮演算法

第二階段:serverhello(伺服器回應)

確認使用的加密通訊協議版本,比如tls1.2;

伺服器端生成乙個隨機數,稍後用於生成「會話秘鑰」

確認使用的加密方法

第三階段:

驗證伺服器證書;

傳送一下資訊給伺服器端

乙個隨機數

編碼變更通知

客戶端握手結束通知

第四階段:

收到客戶端發來的第三個隨機數,計算生成本次會話所有的會話秘鑰

服務端握手結束。

openssl

眾多子命令,分為三類

標準命令

訊息摘要(dgst 子命令)

加密命令 (enc子命令)

標準命令:enc ca req genrsa 。。。。

對稱加密

工具:openssl enc

//加密

openssl enc -e -des3 -a -salt -in aaa -out aaa.cipher

//解密

openssl enc -d -des3 -a -salt -in aaa.cipher -out ccc.plain

單向加密

openssl dgst

openssl dgst -md5 bbb.palin

生成隨機數:

工具openssl rand

openssl rand -base64 10  ==》3f38ii5b3bqkea==

openssl rand -hex 10 == 》af7b04d09c1743a17ba7

生成私鑰

openssl genrsa 1024 -out /tmp/mykey.private

提出公鑰

openssl rsa  -in /tmp/mykey.private -pubout

ca:公共ca 和私有 ca

openssl ca配置檔案

/etc/pki/tls/openssl.cnf

構建私有的ca

在確定配置為ca的服務上生成乙個自簽證書,並為ca提供所需要的目錄及檔案即可;

步驟:(1) 生成私鑰

openssl genrsa -out /etc/pki/ca/private/cakey.pem 4096

(2) 生成自簽證書

openssl req -new -key -x509 /etc/pki/ca/private/cakey.pem -out /etc/pki/ca/cacert.pem -days 3655

(3) 為ca提供所需的目錄及檔案

mkdir -pv /etc/pki/ca/

touch /ect/pki/ca/

echo 01 > /etc/pki/ca/serial

要用到證書進行安全通訊的伺服器,需要向ca請求簽署證書;

步驟:以httpd為例

(1) 用到的證書的主機生成私鑰;

(2)生成證書簽署的請求

(3)將請求通過可靠方式傳送給ca主機;

(4) 在ca主機上簽署證書;

檢視證書中的資訊

吊銷證書

步驟(1) 客戶端獲取要吊銷證書的serial(在使用證書的主機執行)

(2) ca主機吊銷證書

先根據客戶提價的serial和subject資訊,對比其與本機資料庫index.txt中儲存的是否一致

吊銷:    openssl ca -revoke /etc/pki/ca/newcerts/serial.pem

其中的serial要換成證書真正的序列號;

(3)生成吊銷證書的吊銷編號(第一次吊銷證書時執行)

echo 01  > /etc/pki/ca/crlnumber

(4) 更新證書吊銷的列表

openssl ca -gencrl -out thisca.crl

檢視crl檔案:

openssl crl -in /path/from/crl_file.crl -noout -text

關於HTTPS的相關知識點

本文參考 掘金 沐華 20分鐘助你拿下http和https,鞏固你的http知識體系 個人學習用,侵刪 是個啥玩意呢!說白了就是https ssl罷了 對稱加密演算法 加密解密使用同一金鑰 過程 非對稱加密 存在一對金鑰,公鑰和私鑰,乙個金鑰加密後的資料,只能讓另外乙個金鑰解密。注意 使用公鑰反推出...

https知識整理

最近在做和https相關的工作,因此把工作中遇到的問題及知識做一下梳理和總結。在網際網路時代,資訊互動存在著不安全性,你無法判斷你訪問的 是真實的還是中間服務,https就是為了解決這個問題而產生的。在說https具體的知識之前,先要普及2個知識,對稱演算法和非對稱演算法。對稱加密演算法 加密方和解...

HTTPS知識小結

internet上的兩台機器a,b要建立起http連線了,在這之前要先建立tcp連線,情景大概是這樣子的 網路上有個關於tcp的笑話,大概就是上面的意思。當然事實上的情景要比這個複雜 tcp握手本質上是在約定一次二進位制通訊的引數,使得網路上的兩台機型能夠基於這個約定交換二進位制資料。因為大家也知道...