職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

久々の実機デバッグでトラブル

iOS Developer Program 2年目に突入してしばらくの間、実機でのデバッグをしていなかった。
先日、久し振りにデバッグしようとしたら、開発者証明書(Development Certificate) や Provisioning Profile が expire していたので、新たに作成することにした。

Development Certificate の再作成

鍵ペアや証明書署名要求(CSR)、更にはオレオレ証明書まで、OS付属のユーティリティ「キーチェーンアクセス」の「証明書アシスタント」で作る事ができる。Development Certificate を作成するためにはCSRを作成してそれをAppleに送る必要があるため、この証明書アシスタントのお世話になることになる。
公式のヘルプによると、英語で「証明書アシスタントから『認証局に証明書を要求…」を選んでね」と書いてある。去年、初めて Development Certificate を作った時も同じような手順だったので、鵜呑みにした。

f:id:t_motooka:20110721150350p:image

その後、指示通りにCSRを作成すると、次のような状態になった。

f:id:t_motooka:20110721150351p:image

orz...

まさか鍵ペアが同名で2つ作られることになるなんて!しかも、どうやら作成日や変更日なんかの情報は記録されていないらしく、どっちが今作ったやつなのか見分けがつかない。削除しようにも、誤って古いの消したらとても困るし、これじゃ管理できないじゃないか。せめて作る前に警告くらい発してくれよ…。

まあ、出来てしまったものはどうしようもないので諦める。
それでは、既存の鍵ペアを使ってCSRを作るには、どうすれば良いのだろうか?試したところ、案外簡単だった。

  1. 既存の鍵ペアの秘密鍵の方を右クリック
  2. コンテキストメニューに「[秘密鍵の名前]を使って認証局に証明書を要求…」が出てくるので、選択
  3. あとは通常のCSR作成とほぼ同じ。違いはダイアログの中に「鍵ペア情報を指定」ってチェックボックスが表示されないことくらいかな。

こんなに簡単な手順でできるんなら、公式ヘルプにも注意書きを書いて欲しいな〜と愚痴りつつも、きちんと Development Certificate が作成されたのでほっと一息。

それでもビルド時にエラー

Development Certificate の再作成後、Xcode の Organizer で Provisioning Profile 一覧を Refresh すると、Team Provisioning Profile が更新されていたので、早速プロジェクトをビルドしてみた。すると…

CodeSign error: Certificate identity 'iPhone Developer: [なまえ] (ID)' appears more than once in the keychain. The codesign tool requires there only be one.

と怒られた。ふむふむ、同名の証明書はkeychainに1つしか置いたらダメなのね。古くて有効期限切れの証明書を削除したら、今度はビルド成功!さぁ、これから実機デバッグ頑張ろうか。

開発環境

MacOS X 10.6.8
Xcode 4.0.2
iOS 4.3.4 on iPhone 3GS