SSL及OpenSSL使用
一、SSL簡介
1.SSL:securesocketlayer(安全套接層)為網路通訊提供安全及資料完整性的一種安全協議,囊括了主要的單向加密、對稱加密、非對稱加密演算法、常用的金鑰和證書封裝管理功能以及SSL協議。
2.常用加密演算法:
<1>對稱加密:DES,3DES,AES
<2>非對稱加密(公鑰加密):RSA,DSS,ECC
<3>單向加密:MD5,SHA1,SHA2,SHA256,SHA512,SHA3
3.SSL協議提供的安全通道三特性:
<1>資料的保密性:資訊加密就是把明碼的輸入檔案用加密演算法轉換成加密的檔案以實現資料的保密。加密的過程需要用到金鑰來加密資料然後再解密。主要通過對稱加密實現。
<2>資料的完整性:加密也能保證資料的一致性。訊息驗證碼(MAC),能夠校驗使用者提供的加密資訊,接收者可以用MAC來校驗加密資料,保證資料在傳輸過程中沒有被篡改過。主要通過單向加密實現。
<3>安全驗證:加密的另外一個用途是用來作為個人的標識,使用者的金鑰可以作為他的安全驗證的標識。SSL是利用公開金鑰(非對稱加密)的加密技術來作為使用者端與伺服器端在傳送機密資料時的加密通訊協定。主要通過非對稱加密實現。
二、OpenSSL主要命令
1.OpenSSL是SSL協議的一種實現
OpenSSL提供兩個函式庫和一個應用程式
libcrypto:實行加密解密功能。
libssl:實現ssl
openssl:應用程式
2.OpenSSL主要命令:
<1>opensslversion:顯示版本號
<2>opensslenc:指定加密法
opensslenc加密方法[-e|-d](加密、解密)-inFILE(指定要加密檔案)-outFILE(加密後的檔案)
<3>openssldgst(後加單向加密演算法)–md5FILE(獲取檔案的特徵碼)
md5sumFILE(獲取檔案特徵碼)|sha1sumFILE
<4>opennsslspeed[加密演算法](測試當前系統上的加密演算法的速度、不帶引數對所有演算法進行測試)
<5>opensslpasswd–1
<6>opensslrand-heax(十六進位制)#(制定生成的位數:2#):生成隨機數
<7>opensslrand–base64#:生成十六進位制隨機數位數為2#
<8>opensslgenrsa[-out](指定私鑰儲存檔案)[flie][#](指定位數:2的n次方):生成一個私鑰,預設512位
<9>opensslgenrsa加密演算法[#](指定位數:2的n次方):對私鑰加密
<10>opensslrsa–inFILE(私鑰檔案)-pubout:提取公鑰
<11>(umask077;opensslgenrsa–outFILE#):制定金鑰檔案許可權為600
三、OpenSSL使用:申請證書
1.生成一個私鑰
(umask077;opensslgenrsa–outFILE#)
2.製作一個證書籤署請求
opensslreq–new(指定證書請求)–keyFILE(私鑰檔案)–outFILE(儲存為字尾為csr格式的檔案:證書請求格式一般為.csr字尾)
填寫個人資訊
3.由CA負責簽名(簽署證書)
四、OpenSSL使用:自建CA
1.cd/etc/pki/CA/
2.生成一個私鑰
(umask077;opensslgenrsa–outprivate/cakey.pem#)
3.生成自簽證書
opensslreq–new–x509(自籤)–keyFILE(上步生成的私鑰檔案)–outcacert.pem–days#(指定使用時間預設為天)
個人資訊,和申請的個人資訊必須保持一致。
不一致
一致
4.建立資料庫檔案
touchserialindex.txt
echo01>serial(序列號從01開始)
五、OpenSSL使用:簽署證書
opensslca–inFILE(申請者私鑰檔案)–outFILE(證書儲存位置字尾為.crt)–days#(使用時間)
檢視檔案index.txtserial(證書資料庫)
修改資訊預設值:vim/etc/pki/tls/openssl.cnf
六、openssl專用客戶端測試工具
openssls_client–connect(指定連線主機)HOST:PORT–CAflile(指定證書檔案)/path/to/cacertfile|-CApath(指定某個目錄下的證書)/path/to/cacertfile_dir/-ssl1|ssl2|ssl3|tls1(指定協議)
七、補充內容
1.一次安全的會話經過的步驟(單向加密、對稱加密、非對稱加密的結合)
資料傳送方
<1>傳送方使用選定的單向加密演算法計算原始資料的特徵碼。
<2>傳送方使用自己的私鑰加密特徵碼,附加於原始資料後面。
<3>傳送方生成一次性對稱金鑰,並使用此金鑰加密資料(原始資料+加密後的特徵碼)。
<4>傳送方使用接收方的公鑰加密一次性對稱金鑰,附加於加密資料後面,傳送資料
資料接收方
<1>接收方使用自己的私鑰解密加密的一次性對稱金鑰。
<2>使用對稱金鑰解密資料,得到加密的特徵碼和原始資料。
<3>使用傳送方的公鑰解密加密的特徵碼。
<4>使用與傳送方相同的單向加密演算法重新計算資料的特徵碼,並與解密出的特徵做比較。
2.OpenSSL中字尾名各表示什麼檔案
.key格式:私有的金鑰
.crt格式:證書檔案,certificate的縮寫
.csr格式:證書籤名請求(證書請求檔案),含有公鑰資訊,certificatesigningrequest的縮寫
.crl格式:證書吊銷列表,CertificateRevocationList的縮寫
.pem格式:用於匯出,匯入證書時候的證書的格式,有證書開頭,結尾的格式
轉載於:https://blog.51cto.com/dreamwolf/1275712