OpenSSL是壹個安全的套接字層密碼庫,它包括主要的密碼算法、常用的密鑰和證書封裝管理函數以及SSL協議,並提供了豐富的用於測試或其他目的的應用程序。
OpenSSL是壹個加密工具包,用於實現安全套接字層(SSL v2/v3)和傳輸層安全性(TLS v1)網絡協議以及相關的加密標準。
OpenSSL:開源項目
三個組件:
Openssl:多用途命令行工具,包括openssl。
Libcrypto:加密算法庫,包openssl-libs
Libssl:加密模塊應用庫,實現ssl和tls,包括nss。
。openssl命令:
兩種操作模式:交互模式和批處理模式。
Opensslversion:程序版本號。
標準命令、消息摘要命令、加密命令
標準命令:enc,ca,req,...
查看幫助:openssl?
可以通過openssl創建CA,頒發證書,文章/7759574/1964754。
是的,本文只介紹openssl toolkit的其他常用功能。
2案例介紹
2.1對稱加密
工具:openssl?Enc,gpg,文章/7759574/1964887已介紹。
算法:3des,aes,blowfish,twofish。
。enc命令:
對稱密碼命令允許根據密碼或明確提供的密鑰,使用各種塊密碼和流密碼對數據進行加密或解密。Base64編碼或解碼也可以單獨執行或加密或解密。
對稱密碼命令允許使用基於密碼或明確提供的密鑰,使用各種塊和流密碼對數據進行加密或解密。Base64編碼或解碼也可以單獨執行,或者與加密或解密壹起執行。
幫助:man enc
例子
加密文件
您需要輸入密碼來運行以下命令,並且您需要輸入相同的密碼來解密它。這裏新生成文件的後綴不壹定是cipher,可以自己指定。
openssl enc?-e -des3 -a -salt -in測試文件?-out testfile.cipher
解密文件
openssl?enc?-d-des 3-a-salt–輸入測試文件。密碼輸出測試文件
2.2公鑰加密
公鑰加密生成非對稱密鑰。
算法:RSA,ELGamal
工具:gpg,openssl?rsautl(人工rsautl)
數字簽名:
算法:RSA,DSA,ELGamal
密鑰交換:
算法:dh
DSA:數字簽名算法
DSS:數字簽名標準
RSA公鑰加密算法是由羅恩·裏維斯特、阿迪·阿迪·薩莫爾和倫納德·阿德曼於1977年提出的。命名就是將其名字的首字母組合成RSA。
RSA公鑰和私鑰主要用於數字簽名和認證,也稱為非對稱加密/解密。
2.2.1生成密鑰對
求助:曼根莎
生成私鑰,應該掌握生成密鑰的過程。
openssl genrsa?-out /PATH/TO/PRIVATEKEY。文件數量_位
私鑰文件生成後,建議把權限改成600,保護好,放在密碼信息裏讓別人看。
私鑰中的文件,如果是獲取的,沒有用關鍵字des加密,就相當於明文。
執行這個命令的時候需要輸入壹個八位密碼,想要使用這個私鑰的時候也需要輸入密碼。
(umask 077OpenSSL gen RSA–out test . key?–des 2048)
括號表示子進程。結束後,umask將恢復默認值。umask的值使其他人和組沒有權限,以保護生成的私鑰。
2.2.2從私鑰中提取公鑰,導出公鑰。
公鑰不能推導出私鑰,但私鑰可以推導出公鑰。
openssl?rsa?-in private keyfile–pub out?–out public keyfile
Openssl?rsa?–測試中。鑰匙?pubout?–out test . key . pub
公鑰是公開的,可以不設置權限。以上是生成公鑰。
2.2.3公鑰加密文件
OpenSSL rsautl-encrypt-in input . file-in key pubkey . PEM-pubin-out output . file
-in指定加密文件。
-inkey指定加密的公鑰文件。
-pubin surface用純公鑰文件加密。
-out指定加密的文件。
示例:
OpenSSL rsautl-encrypt-in FTP back-inkey test . key . pub-pubin-out ftpssl
2.2.4解密文件的私鑰
OpenSSL rsautl-decrypt-in input . file-in key key . PEM-out output . file
-in指定要解密的文件。
-inkey指定私鑰文件。
-out指定解密的文件。
示例:
OpenSSL rsautl-decrypt-in ftpssl-inkey test . key-out?ftpdec
2.3單向加密
單向加密意味著獲取摘要。
工具:md5sum,sha1sum,sha224sum,sha256sum …
openssl dgst
dgst:summary函數以十六進制形式輸出所提供文件或文件的消息摘要。它們也可以用於數字簽名和驗證。
digest函數以十六進制形式輸出所提供的壹個或多個文件的消息摘要。它們也可以用於數字簽名和驗證。
。dgst命令:
幫助:man dgst
openssl?dgst?-MD5[-十六進制默認值]?/PATH/SOMEFILE
openssl dgst?-md5測試文件
上面的命令從文件中生成壹個定長的匯總值,算法是md5,大小是128 bit。
md5sum /PATH/TO/SOMEFILE
上面兩個md5結果是壹樣的。
。MAC:消息認證碼(Message Authentication Code),是單向加密(hash)的擴展應用,用於實現網絡通信中保證傳輸數據完整性的機制。
MAC消息認證碼可以基於哈希或對稱加密算法構造,HMAC是基於哈希的消息認證碼。數據和密鑰作為輸入,抽象信息作為輸出,常用於認證。
源文件
2.4生成用戶密碼
Passwd命令:
幫助:man sslpasswd
openssl?passwd?-1-鹽鹽
-1對應哈希的md5算法。
salt:這裏是SALT值,是人為指定的,使得同壹個密碼生成的加密值不壹樣。最多是8位數,超過8位數就沒有意義了。比如前8位是壹樣的,後面還有幾位是不壹樣的,所以生成的密碼值是壹樣的。
openssl?passwd?-1-鹽厘斯
grb-md5-crypt也生成MD5加密密碼,centos是鹽值。
比如我這裏所有密碼都輸入123,但是salt值不壹樣,壹個是centos,壹個是centos6,生成的加密值不壹樣。
2.5生成隨機數
求助:曼斯蘭德
rand命令在播放壹次隨機數生成器後輸出num個偽隨機字節。像其他openssl命令行工具壹樣,PRNG種子使用文件$ HOME/。rnd或者。除了-rand選項中給出的文件之外。如果從這些來源獲得足夠的種子,壹個新的$ HOME/。rnd或者。rnd文件將被寫回。
rand命令在隨機數發生器播種壹次後輸出num個偽隨機字節。?與其他openssl命令行工具壹樣,PRNG播種使用文件$HOME/。rnd或者。除了中給定的文件?-蘭德期權。?壹個新的$HOME/。rnd或者。如果從這些文件中獲得了足夠的種子,rnd文件將被寫回。來源。
openssl?rand-base64 |-十六進制數
指定壹個數字以生成隨機數。如果是-hex之後的數,比如6,那麽生成的長度是12位,因為hex生成的隨機數是16組合的數,hex之後的num是字節數,壹個十六進制數16占用4位半字節。
基數後可以生成隨機密碼。
Base64生成隨機數,妳可以使用任何字符,也可以用base64格式保存圖片。由base64生成的圖片可以
使用base64恢復圖片。
NUM:表示字節數;-hex,每個字符都是十六進制,相當於4位二進制,出現的字符數是NUM*2。
3摘要
openssl的用途有很多,本文只介紹其中的壹部分。請使用幫助手冊openssl查看更多用途。