98

API のエンドポイントに自己署名証明書があります。シミュレーターを使用していくつかのことをテストしようとしていますが、「信頼されていないサーバー証明書」を取得しています。

シミュレーターで safari を使用して .crt ファイルをダウンロードしようとしましたが、うまくいかないようです。

iPhone Simulator はどこからキーチェーンを取得しますか? アプリケーションが機能するように、信頼できる証明書を追加するにはどうすればよいですか?

アップデート

CA を作成し、iPhone プロビジョニング ツールを使用して CA 証明書を追加することで、機能するようになりました。その後、API サーバーでその CA 証明書によって署名された証明書を取得でき、NSConnection が機能しました。何らかの理由で、自己署名証明書を使用して機能させることができませんでした。プロビジョニング ソフトウェアを使用して、これを再試行する必要があります。

私の本当の質問は、これをシミュレーターで動作させるにはどうすればよいですか? シミュレーターは実際のコンピューターのキーチェーンを使用していると思います。

4

9 に答える 9

120

参考までに、誰かがまだその問題に遭遇した場合:

実行中のシミュレータ ウィンドウに .cer ファイルをドラッグ アンド ドロップするだけです。Safari が点滅し、証明書 (または認証局) のインポート ダイアログが表示されます...

iOS 7 シミュレーターで動作します (iOS 6 でも動作したと思います)。

于 2013-11-18T12:29:41.487 に答える
23

私はこの同じ問題を何ヶ月も抱えていましたが、今日、最終的に次の方法で解決しました。

ADVトラストストア

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 を使用していて、シミュレーターに証明書が正しくインストールされていることに気付きましたが、 [設定] - [プロファイル]セクションに表示されませんでした。その後、いくつかの検索の後、このツールを発見しました。おそらく他にもいくつかのツールがありますが、私の場合、ドラッグアンドドロップはすべてのケースで正しく機能しませんでした. Safari は問題ありませんが、私のアプリケーションでは問題ありません。

于 2017-09-08T16:34:57.607 に答える
9

Charles が自己署名証明書をシミュレーターのキーチェーンにインストールするために使用するシェル スクリプトを見てみましょう。http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

以下も参照してください。

独自の証明書をシミュレーターにインストールするには、Safari 経由でデバイスにインストールし、結果の行をデバイスからTrustStore.sqlite3シミュレーターにコピーする必要があるようです。

于 2012-09-12T16:23:35.307 に答える
2

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うまくいきました。

于 2012-12-17T22:41:18.387 に答える
1

iostrustRuby gemを見てみましょう: http://github.com/yageek/iostrust

于 2015-04-16T19:38:07.083 に答える