自己署名証明書をiphoneSimulatorに追加しますか?


87

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

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

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

更新

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

私の本当の質問は、これをシミュレーターでどのように機能させるかです。シミュレーターは実際のコンピューターのキーホルダーを使っていると思います。


1
私は最近、開発用MacのログインキーチェーンにインポートされたCA証明書によって信頼されているホストでこれをヒットしました。(つまり、私のローカルSafariはサイトを信頼しますが、シミュレーターは信頼しません。)シミュレーターでは機能しないことに驚きました。iPhoneプロビジョニングツールを使用して、シミュレーターで信頼できる証明書を操作するにはどうすればよいですか?
mpontillo 2012年

回答:


113

情報のためだけに、誰かがまだその問題に遭遇した場合:

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

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


3
ドラッグアンドドロップは、iOS7シミュレーターでは十分に機能します。iOS 6.0 /6.1シミュレーターでは動作しないことを確認できます。
ジョンバウアーズ2014年

2
それは私なのか、それともXcode 6にアップグレードしたので、このドラッグアンドドロップ機能はiOS8バージョンのシミュレーターでのみ機能するようになりました。iPhone 5s iOS7およびiOS7.1シミュレーターを試しましたが、証明書をシミュレーターウィンドウにドラッグしても何も起こりません。そして今、私はこだわっています、何で私のアプリをテストすることはできませんが、iOSの8
フレッド

2
iOS 7および7.1の回避策を見つけました:到達可能なWebサーバーに.cerファイルを配置し(必要に応じてapplication / x-x509-ca-cert mimeタイプを追加)、シミュレーターでSafariを使用して証明書をダウンロードしますWebサーバーから。次に、ドラッグアンドドロップした場合と同じようにインストールするように求められます。
フレッド

3
あなたは私の友達の神です
CommaToast 2015

1
あなたは男です!私はこれを行うための速い方法がなければならないことを知っていました。
pqsk 2016年

44

シミュレーターでの証明書のドラッグアンドドロップが機能しないことに気付いた人のために、追加の手順を追加する最近の変更がありました

シミュレータは、ルートCAを信頼するように明示的に指示する必要があります。次の場所に移動してこれを行います。

一般->バージョン情報->証明書の信頼設定->特定の証明書の「ルート証明書の完全信頼を有効にする」

ここで完全な答えを参照してください:


13
「ルート証明書の完全な信頼を有効にする」オプションは、iOS 10.3を実行しているシミュレーターにはまったくありません
イエスロドリゲス

1
この問題を解決したことがありますCertificate Trust Settingsか?ルート証明書が下にリストされていませんか?これはた-私のプロフィールが追加され、証明書が含まれているだけ少ないヶ月前より取り組んでいます。シミュレーターのキャッシュをリセットします。証明書が追加されますが、完全に信頼するオプションはありません。
chrisp 2017

3
私の場合、「ルート証明書の完全信頼を有効にする」オプションは、ルート証明書に対してのみ表示されます。中間証明書またはリーフ証明書には表示されません。
John Girata 2017

1
またbasicConstraints = CA:TRUE、opensslを使用して証明書を生成する場合、証明書のCA基本制約オプションをtrueに設定する必要があることもわかりました。そうしないと、信頼できるように表示されません。
sandinmyjoints

3
12.2(だけでなく、おそらくそれ以前のバージョン)上の手順は、一般的に行くことになりました>プロファイル、証明書を選択し、右上にインストールヒットであることが表示されます
MaxPRafferty

23

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

ADVTrustStore

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は問題ありませんが、私のアプリケーションでは問題ありません。


3
ヒント:シミュレータを再起動して、新しい証明書をインストールします。
清城喜子

1
これは、Xcode10.1とiPhone5s12.1シミュレーターで私にとってトリックを行いました。適切なシミュレーターに証明書をインストールするようにスクリプトに指示する必要があります。これをbadssl.test(つまり、dockerでローカルに実行されているbadssl)と組み合わせて使用​​している場合は、.pemをハックして、実際の証明書以外のすべてを削除する必要があります。
AndrewEbling19年

これは私の命を救った。自己署名証明書をiOSにインストールするためのコミュニティサポートはほとんどありません。ありがとうございました!
lsimonetti

iOS12.4を搭載したiPhoneX用のSimulator10.3で動作することを確認しました。
セルゲイバシャロフ

9

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

参照:

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


TrustStore.sqlite3のblobの形式が不透明である(そして変更される可能性がある)ことを知っている限り、@ nailerの回答はいくつかの参照で更新されているため、他の人が取ったアプローチは、Safariを介してデバイスに証明書をインストールすることです。結果のTrustStore行をシミュレータにコピーします。
ヨナ

8

OS X Catalinaを使用している場合は、https//forums.developer.apple.com/thread/124056を確認してください

Catalinaは現在、デスクトップ、ドキュメント、ダウンロードフォルダへのアクセスをブロックしています。証明書ファイルを共有フォルダーに移動し、そこからシミュレーターにファイルをドラッグアンドドロップしました。


3
神はあなたに健康を与えます:)
ブーハリン

2

使用してiPhoneのバックアップ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バックアップからシミュレーターに全体をコピーすることは問題なく機能しました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.