iOS 只使用私鑰生成證書請求文件

原文來自靜雅齋,轉載請註明出處。javascript

0x00

不少時候開發者常常忘記備份私鑰公鑰,私鑰若是沒有保留,就沒法讓多個證書共享一個私鑰,而公鑰沒有保留則會致使沒法生成 CSR,不過咱們能夠經過私鑰從新生成公鑰。也可使用 openssl 產生 CSR 請求文件。java

0x01

  1. 從鑰匙串導出私鑰爲 private.p12
  2. 使用 openssl 轉換爲 pem 格式而且直接根據私鑰生成公鑰,這裏須要輸入第一步的密碼
    > openssl pkcs12 -in private.p12 -nocerts -nodes | openssl rsa -pubout > public.pem複製代碼
  3. 導入鑰匙串,因爲鑰匙串存在一個 bug,不能直接導入 pem 格式的密鑰,所以必須經過命令行導入
    > security -v import public.pem -k ~/Library/Keychains/login.keychain複製代碼
    注意這裏得指定 login.keychain,不然會致使找不到這個導入的密鑰,固然這裏也能夠更換爲其餘的鑰匙串

注意,這裏也有一個坑,目前鑰匙串存在一個 bug,用戶不能對命令行導入的密鑰修更名稱,除非更改密鑰訪問控制權限,可是這又會致使另一個問題,就是若是改變了導入的密鑰,就會只能對這個導入的密鑰作一次操做,好比導出密鑰或者生成 CSR 請求文件,這一次操做事後就會令密鑰報廢,任何操做都會報錯,所以,建議在生成 CSR 文件事後就刪掉這個公鑰。node

0x02

  1. 同樣先是導出 p12 文件
  2. 將其轉換爲 pem 格式而且據今生成 CSR 證書請求文件
    openssl req -new -key <(openssl pkcs12 -in private.p12 -nocerts -nodes -passin pass:"") > new.certSigningRequest複製代碼
  3. 根據提示符要求填入各項內容(實際上蘋果不看這些內容,隨便填)
相關文章
相關標籤/搜索