macOS 生成 RSA 公鑰和私鑰
如果你沒有安裝 openssl
,請先使用 brew 安裝它。
生成 RSA 私鑰
在 macOS 終端輸入下面命令,會生成1024位的私鑰,如下:
openssl genrsa -out rsa_private.pem 1024
執行成功後,在當前目錄會生成 rsa_private.pem
檔案了。
注意:這裡生成的是 PKCS1
格式的檔案,也稱之為傳統的私鑰格式。
生成 RSA 公鑰
得到私鑰後,執行如下命令可以得到公鑰,命令如下:
openssl rsa -in rsa_private.pem -out rsa_public.pem -pubout
執行成功後,在當前目錄會生成 rsa_public.pem
的檔案,這個就是公鑰。
格式轉換
有些後端服務需要 PKCS8
格式的金鑰,可以使用 openssl 工具把 PKCS1
和 PKCS8
進行互轉。
PKCS
全稱是 Public-Key Cryptography Standards
,是由 RSA 實驗室與其它安全系統開發商為促進公鑰密碼的發展而制訂的一系列標準。
把 RSA 私鑰轉 PKCS1
轉換為 PKCS8
格式,執行如下:
openssl pkcs8 -topk8 -inform PEM -in rsa_private.pem -outform PEM -nocrypt -out rsa_private_pkcs8.pem
把 RSA 私鑰 PKCS8
格式轉換為 PKCS1
格式,執行如下:
openssl rsa -in rsa_private_pkcs8.pem -out pkcs1.pem
以上生成的 RSA(pem) 檔案,可以使用 vim、vscode 等文字編輯器開啟檢視。
無論是 PKCS1
還是 PKCS8
,它們都是 PEM 編碼儲存的格式。
PEM 格式
PEM 格式既是對 DER 編碼轉碼為 Base64
字元格式,通過解碼,將會還原為 DER 格式。即 PEM 是建立在 DER 編碼之上的一種格式。
總之,PEM 是明文格式,可以包含證書或者是金鑰,其內容通常是以類似 —–BEGIN …—–
開頭,以 —–END …—–
為結尾的這樣的格式,如下示例:
-----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDX+VXh+9zZBC3jRLcLyGGygb/vuiQj13x9ElH9pQmUg29UJ0q1 hcSFuoKmt4id8jyj82fI2PMISzoGucqQFm9HXIV65UcgeUx7REDhgZOBmSCWZ2lW e2Fnf/htyiy9YVEN4jL7H+b67cIcEDHgYZLtPvSZgyr0UyOMC+E40kTcnQIDAQAB AoGBAKKsYD7l6VPgrPuY31LVrJi62ComB2Cjx1WhffZR3+RoF2vImNtkB0E+2Xff l9x3/6ry1IMove3KTzadrHBZJZi1Y6lmHE95uv0O4p16ETnqvKzO8MkcH3qVQe1Z EyNd/wXr4A8DW3ZlNP/QIPOgzK949yTiP53wapiRwExEf7nhAkEA7CbbdoslRzhQ 9YY1Sdbmc7NHpZdKhkgZwOVJZBoRwfHtSnFcpQUlOzLGCOxP+tGn5mpzhmpDFeUR bv7mgaQvtQJBAOogUtiJbffk0p3uu7r5nCBmC6BqbG8yVqBVk+r/gS5iHBeBQVyp FGYYLPQ9daHWluNku07MhqarPcXytEk7ekkCQDBjofK/fmsCkixNTNwNiflJUiVO W/n6CjTphslZQhIGNb5cTkSOMlvYApZPffACR+pCA9wWKBrzbkgVOTx1XUUCQQDE KJLg47wkLy6brhLss6ewqW7iV3hEfhuAOFM3WB1mvEKnGt+lf/AcXfMEK54sGzvO h2475jaG3ABkoiWVGeUpAkAgckc/Pf7KVRF/mDVruMJBbJLYL4H4s78nssFQ4d9V yXKsIM/AHUxZ5ZKiC7vtEtaGrTLAiuIuQZzBgGpSHX/e -----END RSA PRIVATE KEY-----
以下是證書檔名稱,來自維基百科 X.509 的截圖。

要始終保持學習的激情~