OpenSSL 使用 RSA

openssl使用RSA

OpenSSL中有RSA的一些經常使用指令,使用它就能夠玩轉RSA。 其實主要用到三個命令:算法

genrsa: 生成並輸入一個RSA密匙
rsautl: 使用RSA密匙進行加密,解密,簽名和驗證等運算
rsa:   處理RSA密匙的格式轉換等問題
複製代碼
  • 使用genrsa生成私鑰
長度爲1024 bit
openssl genrsa -out private.pem 1024
複製代碼

  • 從私鑰中提取公鑰
openssl rsa -in private.pem -pubout -out public.pem
複製代碼

此時生成了兩個文件 private.pem public.pembash

  • 將私鑰轉換爲明文
openssl rsa -in private.pem -text -out private.txt
複製代碼
  • 經過公鑰加密數據,私鑰解密數據
加密:openssl rsautl -encrypt -in msg.txt -inkey public.pem -pubin -out enc.txt
解密:openssl rsautl -decrypt -in enc.txt -inkey private.pem -out dec.txt
複製代碼

  • 經過私鑰加密數據,公鑰解密數據
加密:openssl rsautl -sign -in msg.txt -inkey private.pem -out enc.txt
解密:openssl rsautl -verify -in enc.txt -inkey public.pem -pubin -out dec.txt
複製代碼

HTTPS證書的生成步驟

使用https的同志都知道,https是加密傳輸數據的。那麼就須要一個加密證書,下面咱們來看看證書的生成步驟。加密

// 從剛纔生成的證書中提取一個csr(請求證書文件)文件。
openssl req -new -key private.pem -out rsacert.csr
複製代碼

當你輸入這行命令時會提示你填入一下信息:spa

Country Name (2 letter code): // 城市名稱 
State or Province Name (full name): // 省名稱
Locality Name (eg, city): // 城市名稱
Organization Name (eg, company): // 公司名稱
Organizational Unit Name (eg, section): // 組織名稱
Common Name (eg, fully qualified host name):// host name
Email Address []: // email
A challenge password []: // 密碼
複製代碼

這樣csr就生成了。就能夠那這個csr去請求證書了。就能夠去請求籤名。 實際上,證書頒發機構也是這樣作的,只不過他們具備權威性。在1983年9月12日麻省理工學院在美國爲RSA算法申請了專利,因此咱們使用是須要付費的,實際上咱們拿着csr就是權威機構請求證書了。那麼具體是怎麼作的了。

// 拿着 rsacert.csr 簽名一個 rsacert.crt 證書
openssl x509 -req -days 3650 -in rsacert.csr -signkey private.pem -out rsacert.crt
複製代碼

https協議就是使用 rsacert.crt 證書來加密。 可是 rsacert.crt 是不能直接拿來使用的,最終仍是須要一次轉換;code

openssl x509 -outform der -in rsacert.crt -out rsacert.der
rsacert.der: 文件主要包含一個公鑰和一些信息
複製代碼

最終須要生產一個 p12,是 rsacert.der 對應的私鑰orm

openssl pkcs12 -export -out p.p12 -inkey private.pem -in rsacert.crt
輸入兩次密碼,就生成了p12
複製代碼

而後咱們就能夠用 p12,來作請求了。cdn

相關文章
相關標籤/搜索