現在NSURLConnectionを使用してWebサーバーへのhttps接続を開いています。すべてが正常に動作し、私は後のページコンテンツを取得することができます。証明書はVeriSignによって発行されていますが、NSURLConnectionは証明書の信頼性をある程度検証するためにいくつかの作業を行っています。モバイルサファリを使用して同じウェブサイトに接続した場合、証明書から抽出し、ナビゲーションバーに組織(ウェブサイトの)を表示します。 Cocoa Touchでこれらの詳細を抽出することは可能でしょうか?私はユーザーにそれらを提示したいのですか?また、その証明書に対するサーバーのホスト名が合理的であることを検証して、ウェブサイトが合法であると見なすことができるでしょうか?Cocoa Touchでウェブサイト証明書を確認する方法は?
6
A
答えて
5
NSURLConnection
は、無効な証明書を持つサーバーに接続しようとするとエラー(NSURLErrorDomain
)を返します(自己署名、期限切れ、間違ったホストなど)。したがって、実際に検証する必要はありません。なぜなら、それはすべてあなたのために処理されるからです。
UIにSSL証明書の概要を表示したい場合は、レイヤーをNSURLConnection
から削除し、代わりに低レベルのCFNetwork
APIを使用する必要があります。あなたは(あなたのストリームハンドルがreadStream
と呼ばれていると仮定して)次のことを行うことができるはずkCFStreamEventEndEncountered
状態でだCFReadStreamRef
を、持っていたら:
NSArray* certificates = [(NSArray*)CFReadStreamCopyProperty(readStream, kCFStreamPropertySSLPeerCertificates) autorelease];
if ([certificates count] > 0) {
SecCertificateRef certificate = (SecCertificateRef)[certificates objectAtIndex:0];
NSString* description = [(NSString*)SecCertificateCopySubjectSummary(certificate) autorelease];
NSData* data = [(NSData*)SecCertificateCopyData(certificate) autorelease];
}
したい場合は、data
で開催された情報をデコードする必要があります証明書のさまざまなプロパティにアクセスできますが、description
に保存されている要約で十分です。
関連する問題
- 1. Windows証明書ストアで証明書を明確に認識
- 2. SAML証明書を確認する方法は?
- 3. CRLで証明書チェーンを確認する方法
- 4. Pythonでルート証明書なしでSSL証明書を確認する方法は?
- 5. 証明書の確認
- 6. SSLのJava証明書を確認する方法
- 7. 証明書の確認エラーを特定する方法
- 8. AWS Lambdaのクライアント証明書を確認する方法
- 9. Java Cardで証明書の有効性を確認する方法は?
- 10. WCF証明書チェーン、プログラムで確認
- 11. ウェブサイトを確認する方法は、CA証明書またはSSL証明書を使用していますか?
- 12. 証明書が個人証明書またはルート証明書であるかどうかを確認するためのプログラム的方法
- 13. Simple.OData.Clientで証明書認証を使用する方法
- 14. Azure AppServiceでクライアント証明書認証をオプションにする方法
- 15. powershellスクリプトでドメイン証明書を認証する方法
- 16. opensslを使用してP12証明書を確認する方法は?
- 17. keytoolを使用して証明書のキーサイズを確認する方法は?
- 18. boost :: asio SSLを使用してクライアント証明書を確認する方法は?
- 19. ウェブサイトHTTPS証明書
- 20. Cocoa Touch:アクセサメソッド+メモリの必要性を明確に
- 21. Cocoa TouchでX.509証明書の内容を操作する機能はありますか?
- 22. Libcurl SSL証明書の確認
- 23. urllib2 - 能力スキップ証明書の確認
- 24. x 509ルート証明書確認
- 25. Android SSLソケット証明書失効確認
- 26. Java SSL証明書失効確認
- 27. 機械ストアに対するSignedXmlの証明書を確認する方法
- 28. システムにインストールされているクライアント証明書を確認する方法
- 29. Snapを使用してクライアント証明書を確認する方法
- 30. Nginx; OCSPを使用してSSLクライアント証明書を確認する方法
助けてくれてありがとうNathan、あなたが提案したようなレイヤーを落とすことはそのトリックをやった!実際問題ではありませんが、あなたのNSDictionary *キャストは代わりにNSArray *であるべきですか? – dbotha
コードサンプルDeonを投稿できますか? – Pripyat
@Deonそうですよ!私はサンプルコードを更新しました。 –