現在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. 証明書の確認
- 3. WCF証明書チェーン、プログラムで確認
- 4. keytoolを使用して証明書のキーサイズを確認する方法は?
- 5. boost :: asio SSLを使用してクライアント証明書を確認する方法は?
- 6. opensslを使用してP12証明書を確認する方法は?
- 7. urllib2 - 能力スキップ証明書の確認
- 8. Libcurl SSL証明書の確認
- 9. x 509ルート証明書確認
- 10. 機械ストアに対するSignedXmlの証明書を確認する方法
- 11. Nginx; OCSPを使用してSSLクライアント証明書を確認する方法
- 12. Snapを使用してクライアント証明書を確認する方法
- 13. RubyでSSL証明書の確認を無効にする
- 14. javaキーストアで証明書の有効期限を確認する
- 15. iOSでSSL証明書を確認する
- 16. ウェブサイトPKSC#11スマートカード認証およびSSLクライアント証明書
- 17. HTTPWebRequestでクライアント証明書認証要求を検出する方法は?
- 18. Cocoa TouchでX.509証明書の内容を操作する機能はありますか?
- 19. Cocoa Touch:アクセサメソッド+メモリの必要性を明確に
- 20. 相互認証(クライアント証明書、サーバー証明書)Java EEの構成の正確性を検証する方法は?
- 21. X509証明書を使用してSOAPリクエストを確認する
- 22. ASP.NET Webサービスで証明書を使用してクライアントを認証する方法
- 23. SSL証明書の有効期限を確認する
- 24. SSL証明書の有効期限を確認する
- 25. HTTPSリクエストがiOS Safariで証明書を確認できない
- 26. サービスのみのWCF証明書認証(クライアント証明書なし)
- 27. Cocoa/Cocoa Touchでディレクトリを監視する
- 28. Pythonの企業認証局を使用したHTTPS証明書の確認
- 29. 証明書による認証
- 30. 信頼できる内部CA証明書を使用してクライアント証明書を検証する方法は?
助けてくれてありがとうNathan、あなたが提案したようなレイヤーを落とすことはそのトリックをやった!実際問題ではありませんが、あなたのNSDictionary *キャストは代わりにNSArray *であるべきですか? – dbotha
コードサンプルDeonを投稿できますか? – Pripyat
@Deonそうですよ!私はサンプルコードを更新しました。 –