OpenSSL:俗稱安全套接字
它可以實作資料加密:
SSL全稱為:Secure Socket Layer可以在Internet上提供秘密性傳輸,其目标是保證兩個應用間通信的保密性和可靠性,SSL能使使用者/伺服器應用之間的通信不被***者竊聽,并且始終對伺服器進行認證,還可選擇對使用者進行認證。SSL協定要求建立在可靠的傳輸層協定(TCP)之上。SSL協定在應用層協定通信之前就已經完成加密算法、通信密鑰的協商及伺服器認證工作。在此之後應用層協定所傳送的資料都會被加密,進而保證通信的私密性。
一、OpenSSL加密解密的種類及對應的算法
1、對稱加密:使用同一種算法同一個密碼對資料進行加密解密;
算法:DES、3DES、AES、Blowfish、Towfish、IDEA、RC6、CAST5
2、非對稱加密之公鑰加密:公鑰從私鑰中提取而來,使用私鑰加密的檔案,隻能使用公鑰解密,反 之亦然;
算法:RSA、 DSA、 ELGamal、 DH
3、非對稱加密之單向加密:隻能加密,不能解密,用于提取資料的特征碼。
算法:md5、 sha系列256、384、512、128
二、OpenSSL一次加密通信的過程:
發送者:
1.使用單向加密算法提取資料特征碼
2.使用自己的私鑰加密特征碼附加在資料後面
3.生成用于對稱加密的臨時密鑰
4.用此臨時密鑰加密資料和已經使用私鑰加密後的特征碼
5.使用接收方的公鑰加密此臨時密鑰,附加在對稱加密後的資料後放
接受者:
- 使用自己的私鑰解密加密的臨時密鑰,進而擷取對稱密鑰
2.使用對稱密鑰解密對稱加密的資料和私鑰加密的特征碼密文,進而獲得資料和特征碼密文 3.使用對方發送的公鑰解密特征碼密文,進而獲得資料特征碼
4.使用與對方同樣的黨項加密算法計算出資料特征碼,并與解密而來的特征碼進行比較
三、OpenSSL
OpenSSL 是一個強大的安全套接字層密碼庫,包括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協定,并提供豐富的應用程式供測試或其它目的使用。
- 組成部分:
(1)libcrypto:加密、解密庫檔案;
(2)libssl: ssl協定實作
(3)openssl:多用途指令行工具,每種功能都使用專用的子指令來實作
2.openssl指令使用格式
openssl command [options] [csr_file] [options] [crt_file] [options]
#openssl+子指令+選項+參數
3.指令的分類:
标準指令
消息摘要指令
加密、解密相關的指令
4.可以通過輸入openssl a 回車可以檢視子指令
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmL5QTO39WVNF1SqtkQBF0SwkXaBdzNwFjVx02bpt0dvwFMz8CXFZzLcFDMN9CXyAzcml3dvwVbvNmLvR3YxUjLzM3Lc9CX6MHc0RHaiojIsJye.jpg)
可以再次使用man指令來檢視子指令的用法
四、使用OpenSSL加密、解密檔案
1.對稱加密
使用enc工具:
加密:# openssl enc -e -CIPHERNAME -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMECIPHERFILE
解密:# openssl enc -d -CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out /PATH/TO/SOMEFILE
單向加密:
提取檔案特征碼
# openssl dgst -CIPHER /PATH/TO/SOMEFILE...
生成使用者密碼:
# openssl passwd -1 -salt 8bits随機數
-1:預設為md5算法
生成随機數:
# openssl rand -hex|-base64 NUM
-base64:文本編碼
NUM:生成位數
可以使用生成的随機數來生成密碼:
密碼自動儲存在/etc/shadow
公鑰加密生成密鑰對兒:
操作過程:生成私鑰
# openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUM_BITS
從私鑰中手動提取公鑰:
# openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout
轉載于:https://blog.51cto.com/10086101/1659879