Xcode
iOS
keychain
Push通知

Keychainで The specified item could not be found in the keychain. が出たときの対処法

More than 1 year has passed since last update.

iOSでPush通知証明書を発行しようとする時にでたエラー

Push通知のために証明書を発行しようとKeychainAccessで証明書署名リクエスト (CSR) ファイルを作成しようとすると、以下のようなエラーが出てきた。指定された項目がキーチェーン内に見つかりませんでしたと書いてある。
image.png

原因

秘密鍵に対応する公開鍵が、KeychainAccessに登録されていないためだそう。

解決策

  1. KeychainAccessを開いて、利用するprivateキーをExportする。ここではprivate.p12とする。パスワードは入力せずに作成しても問題ない。
  2. 先程Exportしたファイルと同じ場所に移動する。openssl pkcs12 -in private.p12 -out private.pemで、.p12から.pemにする。Exportする時に設定したパスワードと新しいパスワード(ここは4文字以上)設定する。
  3. openssl rsa -in private.pem -pubout > public.pemを実行する。
  4. security import public.pem -k login.keychainでKeychainAccessにインポートする。
  5. ローカルに作成した.p12ファイルや.pemファイルを削除する。