原文來自靜雅齋,轉載請註明出處。javascript
不少時候開發者常常忘記備份私鑰公鑰,私鑰若是沒有保留,就沒法讓多個證書共享一個私鑰,而公鑰沒有保留則會致使沒法生成 CSR,不過咱們能夠經過私鑰從新生成公鑰。也可使用 openssl 產生 CSR 請求文件。java
private.p12
> openssl pkcs12 -in private.p12 -nocerts -nodes | openssl rsa -pubout > public.pem複製代碼
> security -v import public.pem -k ~/Library/Keychains/login.keychain複製代碼
注意這裏得指定 login.keychain,不然會致使找不到這個導入的密鑰,固然這裏也能夠更換爲其餘的鑰匙串注意,這裏也有一個坑,目前鑰匙串存在一個 bug,用戶不能對命令行導入的密鑰修更名稱,除非更改密鑰訪問控制權限,可是這又會致使另一個問題,就是若是改變了導入的密鑰,就會只能對這個導入的密鑰作一次操做,好比導出密鑰或者生成 CSR 請求文件,這一次操做事後就會令密鑰報廢,任何操做都會報錯,所以,建議在生成 CSR 文件事後就刪掉這個公鑰。node
openssl req -new -key <(openssl pkcs12 -in private.p12 -nocerts -nodes -passin pass:"") > new.certSigningRequest複製代碼