1. 程式人生 > 實用技巧 >linux CA 加密解密技術

linux CA 加密解密技術

一、基礎知識

對稱加密:

加密和解密方使用同一個金鑰,用來解決資料機密性,但是金鑰通過何種方式傳遞給對方不容易實現;

公鑰加密:

金鑰是成對出現的,分別為Secret key(金鑰)和Public key(公鑰)公鑰加密必須使用與其相對應的

私鑰進行解密並且公鑰是從私鑰中提取出來的,有私鑰可以知道公鑰是什麼,但是知道公鑰是不能知

道私鑰的,公鑰是公開的,而私鑰是不公開的,但是公鑰加密比對稱加密慢3個數量級(1000倍),

加密速度相當的慢,所以單獨用此加密方式也比較困難;公鑰加密功能:

單向加密:

不是真正來實現加密,而是用來提取資料特徵碼,驗證資料完整性,他有雪崩效應((蝴蝶效應):

源資料有一點點不同,結果大不相同)和定長輸出(通過單相加密後的結果長度一樣)的特徵;

單向加密常見演算法:

md5:Message Degist,由麻省理工學院人工智慧實驗室研發,固定定長輸出

128bit;

md5sum:計算檔案md5格式的特徵值;

sha1:Secure Hash Algorithm 1,固定定長輸出160bit;

SHA256:長度越長變化越大;

SHA512: 長度越長變化越大;

二、加密過程:

wps_clip_p_w_picpath-22503

1、傳送方用單向加密演算法計算資料的特徵碼;

2、傳送方用自己的私鑰加密這段特徵碼,並加在資料尾部;

3、傳送方生成一個對稱金鑰;

4、傳送方用此對稱金鑰加密資料和加密後特徵碼;

5、傳送方用接收方的公鑰加密這個對稱金鑰,附加在密文的尾部,併發送之;

解密過程:

1、接收方用自己的私鑰解密加密過的對稱密碼;

2、接收方用密碼解密密文;

3、接收方用傳送方的公鑰解密傳送方私鑰加密的特徵碼;

4、接收方用同樣的單向加密演算法計算出原始資料的特徵碼;

5、接收方比較兩段特徵碼;

傳送方: 計算資料特徵值----> 使用私鑰加密特徵值 ---> 隨機生成密碼對稱

加密整個資料 ---> 使用接受方公鑰加密密碼
接收方: 使用私鑰解密密碼 ----> 解密整個資料 ----> 使用公鑰驗證身份

----> 比較資料特徵值

三、CA證書的作用

wps_clip_p_w_picpath-30525

Ca 證書模型

1、金鑰交換金鑰交換,也稱為IKE:Internet Key Exchange 網際網路金鑰交換;

2、數字簽名,用於身份驗證,防抵賴;

我們發現上述加密方式中嚴重依賴對方的公鑰,而怎樣才能確定是對方的公鑰呢,所以這就

需要有一個專門機構來確保公鑰來源的合法性並給予對方一個數字證書,其實數字證書就像

我們自己的***一樣,而那個專門機構就像是給我們頒發***的公安機關一樣,下面來

說一下

數字證書和CA(證書頒發機構);

數字證書(Digital Certificate)包含證書擁有者資訊及公鑰還有CA的簽名並且附加CRL(證

書吊銷列表);

CA(證書頒發機構):對證書利用單向加密的演算法提取證書資料的特徵碼,然後用自己的私

鑰加密特徵碼並附加在資料的尾部發送之;CA分為公共CA和私有CA兩類

PKI:

Public Key Infrastructure 是實現現代網際網路電子商務的核心框架,只是一種規範,其核心

就是CA,還有金鑰驗證和密碼交換機制,保證驗證過程是可靠的。

ssl(Secure Socket Layer)安全套接字層;

四、linux加解密技術

在pcp5層模型中的AL(應用層)和TL(傳輸層)中間增加了半層就是ssl,其實ssl只是一種

協議,需要靠其它軟體來現,這種軟體在linux中最通用和流行的就是openssl,目前openssl

軟體版本

有一下幾種:

sslv1 已經廢棄;

sslv2 目前再用;

sslv3 目前再用;

TLS:

Transport Layer security(傳輸層安全)協議,最常用的是tlsv1版本(與 sslv3同時代);

linux上常用的加解密的工具有兩個:

1、gpg 實現rpm包簽名比較常用;

2、openssl ssl的開源版本的實現,一共有一下三個元件組成:

1)libcrypto 通用庫;

2)libssl 實現ssl和tls協議的;

3)openssl 多用途的加密元件;

這裡我們重點講解openssl:

openssl 是多用途的加密元件,命令列工具,其可以實現對稱加密演算法、非對稱加密演算法、

單向加密演算法、作為一個簡單的CA (OpenCA),其依賴的配置檔案預設在/etc/pki/tls/

openssl.cnf中,也可以自己定義;openssl作為簡單的CA其頒發的證書格式有x509

(比較通用,定義了證書的格式,類似於pkcs#10),pkcs#12和pkcs#17定義了

如何將證書存諸的格式;openssl也可以實現證書格式的轉換。

openssl的常用工具:

1.資料的保密性
資訊加密就是把明碼的輸入檔案用加密演算法轉換成加密的檔案以實現資料的保密。

加密的過程需要用到密匙來加密資料然後再解密。沒有了金鑰,就無法解開加密的

資料。資料加密之後,只有密匙要用一個安全的方法傳送。加密過的資料可以公開

地傳送。

2.資料的一致性
加密也能保證資料的一致性。例如:訊息驗證碼(MAC),能夠校驗使用者提供的加密

資訊,接收者可以用MAC來校驗加密資料,保證資料在傳輸過程中沒有被篡改過。

3.安全驗證
加密的另外一個用途是用來作為個人的標識,使用者的密匙可以作為他的安全驗證的

標識。SSL是利用公開金鑰的加密技術(RSA)來作為使用者端與伺服器端在傳送機

密資料時的加密通訊協定。

五、實驗

openssl建立私有CA:

1、生成金鑰

2、自簽署證書

節點:

1、生成金鑰對兒

2、生成證書籤署請求

3、把請求傳送給CA

CA:

1、驗正請求者資訊;

2、簽署證書;

3、把簽好的證書傳送給請求者;

一、建立CA伺服器:

1、生成金鑰

# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)

wps_clip_p_w_picpath-5736

wps_clip_p_w_picpath-974

2、自簽證書

req: 生成證書籤署請求

-news: 新請求

-key /path/to/keyfile: 指定私鑰檔案

-out /path/to/somefile:

-x509: 生成自簽署證書

-days n: 有效天數

wps_clip_p_w_picpath-21401

3、初始化工作環境

# touch /etc/pki/CA/{index.txt,serial}

# echo 01 > /etc/pki/CA/serial

wps_clip_p_w_picpath-29234

二、節點申請證書:

(一) 節點生成請求

1、生成金鑰對兒

# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)

wps_clip_p_w_picpath-10920

2、生成證書籤署請求

# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr

wps_clip_p_w_picpath-18927

3、把簽署請求檔案傳送給CA服務

# scp

(二) CA簽署證書

1、驗正證書中的資訊;

2、簽署證書

# openssl ca -in /path/to/somefile.csr -out /path/to/somefile.crt -days N

wps_clip_p_w_picpath-16850

3、傳送給請求者;

三、吊銷證書

(一)節點

1、獲取證書serial

# openssl x509 -in /path/to/certificate_file.crt -noout -serial -subject

(二) CA

2、根據節點提交的serial和subject資訊來驗正與index.txt檔案中的資訊是否一致;

3、吊銷證書

# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

4、生成吊銷證書的編號(如果是第一次吊銷)

# echo 00 > /etc/pki/CA/crlnumber

5、更新證書吊銷列表

# cd /etc/pki/CA/crl/

# openssl ca -gencrl -out thisca.crl

wps_clip_p_w_picpath-2546

如果需要,檢視crl檔案的內容:

# openssl crl -in /path/to/crlfile.crl -noout -text

wps_clip_p_w_picpath-20327

wps_clip_p_w_picpath-24061

轉載於:https://blog.51cto.com/1983939925/1538390