您好,登錄后才能下訂單哦!
OpenSSL原理
SSL:SSL是Secure Sockets Layer(安全套接層協議)的縮寫,可以在Internet上提供秘密性傳輸。Netscape(網景)公司在推出第一個Web瀏覽器的同時,提出了SSL協議標準。其目標是保證兩個應用間通信的保密性和可靠性,可在服務器端和用戶端同時實現支持。已經成為Internet上保密通訊的工業標準。
SSL能使用戶/服務器應用之間的通信不被***者竊聽,并且始終對服務器進行認證,還可選擇對用戶進行認證。SSL協議要求建立在可靠的傳輸層協議(TCP)之上。SSL協議的優勢在于它是與應用層協議獨立無關的,高層的應用層協議(例如:HTTP,FTP,TELNET等)能透明地建立于SSL協議之上。SSL協議在應用層協議通信之前就已經完成加密算法、通信密鑰的協商及服務器認證工作。在此之后應用層協議所傳送的數據都會被加密,從而保證通信的私密性。
OpenSSL開放式安全套接層協議:是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用的密鑰和證書封裝管理功能及SSL協議,并提供豐富的應用程序供測試或其它目的使用。
OpenSSL整個軟件包大概可以分成三個主要的功能部分:SSL協議庫、應用程序以及密碼算法庫。OpenSSL的目錄結構自然也是圍繞這三個功能部分進行規劃的。
基本功能有:主要的密碼算法(MD5、SHA、DH、BASE64等等)、常用的密鑰和證書封裝管理功能以及SSL協議,并提供了豐富的應用程序供測試或其它目的使用。
輔助功能:如從口令生成密鑰的API,證書簽發和管理中的配置文件機制等
OpenSSL支持多種不同的算法
對稱加密:
AES, Blowfish, Camellia, SEED, CAST-128, DES, IDEA, RC2, RC4, RC5, Triple DES, GOST 28147-89[3]
單向加密:
MD5, MD2, SHA-1, SHA-2, RIPEMD-160, MDC-2, GOST R 34.11-94[3]
非對稱加密:
RSA, DSA, Diffie–Hellman key exchange, Elliptic curve, GOST R 34.10-2001[3]
這些都為官方解釋,簡單的理解為openssl就是一個集合,這個集合里面集成了許多的加密算法,而這些加密算法的使用方式都不同,所以openssl就用自己的功能來調用它們從而達到數據加密的效果。
OpenSSL基本使用
OpenSSL程序包由:openssl、libcrypto、libssl三個軟件包組成
openssl:多用途的命令行工具,各功能分別使用子命令實現
libcrypto:公共加密庫(存放了各種加密算法)
libssl:ssl協議的實現
OpenSSL命令行使用方法:
openssl command [command_options] [args]
查看openssl版本:openssl version
可以看出當前centos系統內置版本為1.0.1e(未升級前的版本,此版本帶有漏洞,如需生產環境使用請自行下載1.0.1g版本以后的版本)
OpenSSL實現對稱加密,使用enc這個子命令,使用方法 :
加密方法:
openssl enc -e -算法 -a -salt -in 原文件 -out 加密后保存的文件
解密方法:
openssl enc -d -算法 -a -salt -in 加密文件 -out 解密后保存的文件
-e:encrypt加密
-d:decrypt解密
-a:基于base64
-salt:加“鹽”,可以理解為添加了一個隨即數,每次生成的隨機數都是不同的就算使用相同 密碼結果也是不同的。
注:加密和解密算法必須使用相同的算法,不然會導致解密出來的內容為亂碼
示例1:加密etc目錄下的passwd文件并保存到當前目錄下
openssl enc -e -des -a -salt -in /etc/passwd -out ./passwd.crypt
加密完后繼續編輯文件會發現是一堆密碼
解密文件
openssl enc -d -des -a -salt -in passwd.crypt -out passwd
再次打開此文件會發文件正常使用
OpenSSL 實現非對稱加密,也就是所說的公鑰和私鑰,使用genrsa子命令,非對稱加密是通過生成私鑰來提取公鑰因此私鑰不可以讓除當前用戶以外的任何用戶可以查看到。
加密方法:
(umask 077;openssl genrsa -out 私鑰保存位置 加密長度)
這里的括號代表在子進程中運行因為要修改umask值并且這行命令運行完成后子shell就會退出并不會影響到當前系統中的umask值,使用分號代表在同一行執行命令
提取公鑰
openssl rsa -in 私鑰 -pubout
實例2:生成私鑰文件并且提取出公鑰
(umask 077; openssl genrsa -out crypt.key 2048)
提取公鑰:
openssl rsa -in crypt.key -pubout > pub.key
OpenSSL實現單向加密一般用于校驗文件完整性操作,常用有md5和sha1等。(文件被修改后md5值和sha值都會改變)
加密方法:
openssl dgst -加密算法 文件路徑
示例3:獲取文件md5值
openssl dgst -md5 passwd
以上加密方法都可以使用--help來獲取幫助信息也可以使用man手冊頁查看幫助信息
openssl enc | genrsa | dgst --help或者man enc | genrsa | dgst
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。