注意:命令和值之間最好只有一個空格符,不然openssl會吧多餘的空格當成命令或值得一部分,導致出錯
消息摘要
openssl dgst -md5 1.txt //輸出到stdout
openssl md5 1.txt //輸出到stdout
openssl md5 -out 3.txt 1.txt //將1.txt的MD5值輸出到3.txt
對稱加密
openssl enc -e -des3 -in 1.txt -out 2.txt //加密,需要輸入密碼
openssl enc -e -des3 -in 1.txt -out 2.txt -pass pass:123 //加密,不需要輸入密碼
openssl enc -d -des3 -in 2.txt -out 3.txt //解密,需要輸入密碼
openssl enc -d -des3 -in 2.txt -out 3.txt -pass pass:123 //解密,不需要輸入密碼
openssl enc -e -des3 -salt -in 1.txt -out 2.txt -pass pass:456 //加鹽
RSA
生成的文件的後綴名其實可以隨意的更改,文件本身的格式取決於命令參數設置,而不是我們指定的文件名。生成的私鑰文件的後綴名我可以任意指定爲pem,key,abc但是查看這個文件本身的格式(file "file.xxx")時,展示的文件格式都是PEM RSA private key。生成的公鑰文件也不管後綴是什麼,本身的格式都是文本文件(ASCII text)
openssl genrsa -out privatekey.pem -des3 2048 //生成私鑰,帶密碼
openssl genrsa -out privatekey.pem 2048 //生成私鑰,不帶密碼
openssl rsa -in privatekey.pem -pubout -out publickey.pem //根據私鑰生成公鑰
openssl rsautl -encrypt -inkey publickey.pem -pubin -in 1.txt -out 2.txt //公鑰加密文件,生成的文件不能直接打開
openssl rsautl -decrypt -inkey privatekey.pem -in 2.txt -out 3.txt //私鑰解密文件
openssl rsautl -sign -inkey privatekey.pem -in 1.txt -out 2.txt //私鑰加密
openssl rsautl -verify -pubin -inkey publickey.pem -in 2.txt -out 4.txt //公鑰解密
證書
證書中包含了證書的基本信息,請求者的公鑰,CA的私鑰加密過後的數字簽名
證書請求包含了證書的基本信息,請求者的公鑰(可以直接使用私鑰,openssl會自動從私鑰中提取公鑰)
證書請求文件和根證書都有一個數字簽名,都是用自己的私鑰進行加密的
openssl genrsa -out privatekey.pem 2048 //生成私鑰,不帶密碼
openssl req -new -key privatekey.pem -out req.csr //生成證書請求,文件格式爲PEM certificate request
openssl req -in req.csr -text -noout //查看證書請求內容,-text和-noout都是可選項,證書請求內容分爲文本和頭部信息,-subject也可以只輸出subject部分(個人基本信息:subject=/C=CN/ST=SH/L=SH/CN=172.31.132.83),-pubkey可以輸出公鑰部分
openssl req -x509 -key privatekey.pem -in req.csr -out root.crt -days 365 //根據證書請求文件創建證書,文件格式爲PEM certificate
req -new -x509 -key privatekey.pem -out root1.crt -days 365 //直接創建證書,創建的過程中在內存中生成證書請求文件
openssl req -new -out req3.csr //可以自動創建私鑰和證書請求文件,在Mac下面會將私鑰打印的公屏上,生成請求文件
openssl x509 -req -CA root.crt -CAkey root.key.pem -CAserial ca.srl -CAcreateserial -in server.req.csr -out server.crt -days 365 //創建由根證書籤名的應用證書
openssl x509 -req -in req.csr -signkey privatekey.pem -out idsrv4.crt -days 365 //創建根證書自簽名證書
格式轉換
openssl x509 -outform der -in root.crt -out root.cer //將pem轉爲der 編碼格式是der,但是後綴一般取爲cer
openssl x509 -inform der -in root.cer -out root1.crt //將der轉爲pem
openssl pkcs12 -export -out cert.pfx -inkey privatekey.pem -in root.crt //將pem轉化成pfx
openssl pkcs12 -in cert.pfx -out tet.pem //將pfx專務pem,直接用cat file打開,將裏面的多份數據分別保存獲得私鑰和證書
1.祕鑰只有pem和der2中格式,pem是base64編碼,der是二進制編碼
2.PKCS12/PFX 將多個證書和私鑰存儲在一個加密文件中