【https】openssl的常用操作

前言

  • 最近補了https的知識。感覺收穫很大,不知道爲啥那麼多人推薦圖解http,感覺這書實現上都沒說,跟啓蒙書一樣。。
  • 這篇如果讀者看不懂建議先看一下讀書筆記

環境

  • 實踐系統爲centos8,反正7應該也可以。
  • 首先寫入一段文本,作爲加解密的案例:
echo yehuozhili > msg.txt
  • 這樣創建了個txt文本。

摘要加密

openssl dgst -md5 msg.txt
  • dgst就是digest縮寫,表示摘要。
  • 中間的-sha1可以換成別的加密方式比如sha256 md5什麼的。

對稱加密

openssl enc -e -aes128 -k 123456 -a -in msg.txt -out enc_msg.txt
  • 其中,enc -e 表示加密, -k表示密碼,-a表示base64 -in 表示來源文件 -out表示輸出文件
  • 有可能會出現警告:
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
  • 它意思就是這個方法不安全,建議加上迭代次數和pbkdf2的算法來增加安全性:
openssl enc -e -aes128 -k 123456 -a -iter 100 -pbkdf2 -in msg.txt -out iter_enc_msg.txt
  • 這樣就不會有警告了。
  • 解密方法就是enc -d
openssl enc -d -aes128 -k 123456 -a -in enc_msg.txt -out dee_msg.txt
  • 如果是有迭代次數加密的這種解法無法解密,需要增加迭代次數。
openssl enc -d -aes128 -k 123456 -a  -iter 100 -in iter_enc_msg.txt -out dee_msg.txt

非對稱加密

  • 先生成私鑰:
openssl genrsa -out private.key 1024
  • 最後的數字代表生成多少位的。
  • 然後根據私鑰生成公鑰:
openssl rsa -pubout -in private.key -out public.key
  • 這2就是一對了,然後使用公鑰加密私鑰解密:
openssl rsautl -encrypt -inkey public.key  -pubin -in msg.txt  -out rsa_msg.txt
  • 解密:
openssl rsautl -decrypt -inkey private.key -in rsa_msg.txt -out dersa_msg.txt
  • 私鑰加密公鑰解密實際一般是用簽名,算摘要:
openssl dgst -sign private.key -sha256 -out sign.msg.txt msg.txt 
  • 公鑰驗證簽名,需要對比源文件驗證:
openssl dgst -verify public.key  -sha256 -signature sign.msg.txt msg.txt

自建ca機構

  • 一般證書都是別的機構頒發的,其實自己建一個只要敲幾個命令就行了。有讀者不懂得可以看一下讀書筆記
  • 先生成ca得私鑰:
openssl genrsa -out ca.priviate.key 2048
  • 使用ca私鑰生成證書:
openssl req -new -x509 -key ca.priviate.key  -out ca.crt -days 365 -subj /C=CN/ST=Beijing/L=Beijing/O=ca/OU=ca/CN=www.ca.com/[email protected]
  • 這個參數名基本上一猜就知道是啥了。不給主題會以對話方式問你,也一樣。

自建ca給自己頒證書

  • 然後我們需要用服務器私鑰生成請求證書:
openssl req -new -key private.key -out server.csr  -subj /C=CN/ST=Beijing/L=Beijing/O=yehuozhili/OU=yehuozhili/
  • 這樣就生成了個server.csr文件。
  • 再使用ca私鑰給服務器請求證書籤名:
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.priviate.key  -CAcreateserial -in server.csr -out server.crt
  • 這樣簽名完成。拿到了服務器證書。
  • nginx配置證書:
    ssl_certificate  證書地址
    ssl_certificate_key 私鑰地址
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章