Technical Q&A QA1745に出ていた。
以下、ポイント(抄訳)
- Mobile Safari 経由で取り込んだクライアント証明書はアプリで使えない
- 理由は取り込み先の Keychain Access Groupsが Appleのグループになる為(*1)
- アプリは自前のインポート処理を行う必要がある
- インポートには SecPKCS12Import が使える
- メールに証明書ファイルを添付する場合には PKCS#12 MIMEタイプを使わない。また拡張子を .p12 にしない。これら標準のものを使うと iOSが処理してしまう。
- メールに証明書ファイルを添付する場合には独自の MIMEタイプ、拡張子にしておいて、それをアプリで処理できるように登録しておく(そして SecPKCS12Importで取り込む)。
(*1) Keychain Services へ格納した情報には自分が所属するグループのものにしかアクセスできない。→関連情報を参考のこと
確かに。
関連情報
Cocoaの日々: [iOS] Keychain Services とは
Keychain Access Group の記述あり → 「3.1 Keychain Access Group(グループ)」
AdvancedURLConnections
Apple提供のサンプルプログラム。SecPKCS12Import を使っている。これを見るとネットワークから *.p12 ファイルを取り込んでいるようだ。