OpenSSL中有RSA的一些經常使用指令,使用它就能夠玩轉RSA。 其實主要用到三個命令:算法
genrsa: 生成並輸入一個RSA密匙
rsautl: 使用RSA密匙進行加密,解密,簽名和驗證等運算
rsa: 處理RSA密匙的格式轉換等問題
複製代碼
長度爲1024 bit
openssl genrsa -out private.pem 1024
複製代碼
openssl rsa -in private.pem -pubout -out public.pem
複製代碼
此時生成了兩個文件 private.pem
public.pem
bash
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是加密傳輸數據的。那麼就須要一個加密證書,下面咱們來看看證書的生成步驟。加密
// 從剛纔生成的證書中提取一個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 []: // 密碼
複製代碼
// 拿着 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