APIのエンドポイントに自己署名証明書があります。シミュレータを使用していくつかのことをテストしようとしていますが、「信頼できないサーバー証明書」を取得しています。
私はシミュレータでサファリを使用して.crtファイルをダウンロードしようとしましたが、うまくいかないようです。
IPhone Simulatorはどこからキーチェーンを取得しますか?アプリケーションが機能するように、信頼できる証明書を追加するにはどうすればよいですか?
[〜#〜] update [〜#〜]
CAを作成し、iPhoneプロビジョニングツールを使用してCA証明書を追加することで、機能するようになりました。その後、APIサーバーでそのCA証明書によって署名された証明書を取得でき、NSConnectionが機能しました。何らかの理由で、自己署名証明書を使用して動作させることができませんでした。プロビジョニングソフトウェアを使用してこれを再試行する必要があります。
私の本当の質問は、シミュレータでこれをどのように動作させるのですか?シミュレーターは実際のコンピューターのキーチェーンを使用すると思います。
ちょうど情報のために、誰かがまだその問題に遭遇した場合:
実行中のシミュレータウィンドウに.cerファイルをドラッグアンドドロップするだけです。 Safariが点滅し、証明書(または認証局)のインポートダイアログが表示されます...
IOS 7シミュレーターでの作業(およびi ThinkはiOS 6でも機能しました)。
シミュレーターでの証明書のドラッグアンドドロップが機能しないことがわかった場合は、最近の変更があり、追加のステップが追加されました。
シミュレータには、ルートCAを信頼するように明示的に指示する必要があります。これを行うには:
一般->概要->証明書の信頼設定->特定の証明書の「ルート証明書の完全信頼を有効にする」
完全な回答はこちら を参照してください。
私はこの同じ問題を何ヶ月も抱えていましたが、今日私は最終的にそれを解決しました:
Githubの ADVTrustStore というプロジェクトを使用することになります。ちょっとした魔法をしますが、証明書をシミュレーターのルートトラストストアに正しくインストールします。
# Clone the repo
git clone https://github.com/ADVTOOLS/ADVTrustStore.git
# Enter the repo directory
cd ADVTrustStore/
# Copy your .crt file
cp somewhere/something.crt my.crt
# conver to a .pem file
openssl x509 -in my.crt -out my.pem -outform PEM
# Install the pem in the simulators
./iosCertTrustManager.py -a my.pem
このプロセスを使用して、自己署名証明書によるSSL再署名を使用して、企業のファイアウォールの内側でGoogleStreetView画像を正しくレンダリングすることができました
CharlesProxyを使用していて、証明書がシミュレータに正しくインストールされていることに気付きましたが、Settings-Profilesセクションに表示されませんでした。その後、いくつかの検索の後、このツールを発見しました。おそらく他にもいくつかのツールがありますが、私の場合、ドラッグアンドドロップはすべての場合に正しく機能しませんでした。 Safariは問題ありませんが、私のアプリケーションはそうではありません。
Charlesが自己署名証明書をシミュレーターのキーチェーンにインストールするために使用するシェルスクリプトを見てください。 http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/
こちらもご覧ください:
シミュレータに独自の証明書をインストールするには、Safari経由でデバイスに証明書をインストールし、デバイスのTrustStore.sqlite3
シミュレーターに。
iPhone Backup Extractor を使用して、iPhoneのTrustStore.sqlite3
を~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains
にコピーし、既存のファイルを上書きしました。次のsqliteで1つの行のみを挿入しようとしましたが、機能しませんでした。
sqlite3 ~/backup/iOS\ Files/TrustStore.sqlite3
sqlite3>.mode insert
sqlite3>.output working.sql
sqlite3>select * from tsettings;
sqlite3>.quit
これで、working.sql
にはtsettingsテーブルの内容全体が含まれます(私の場合は1行)。
sqlite3 ~/Library/Application\ Support/iPhone\ Simulator/6.0/Library/Keychains/TrustStore.sqlite3
sqlite3>INSERT INTO tsettings VALUES(X'...
sqlite3>.quit
繰り返しますが、上記のsqliteコマンドは私にとってはうまくいきませんでしたが、他の誰かにとっては良い出発点かもしれません。 TrustStore.sqlite3
全体をバックアップからシミュレーターにコピーしても問題なく機能しました。
iostrust
Ruby gem: http://github.com/yageek/iostrust をご覧ください。