web-dev-qa-db-ja.com

自己署名証明書を使用したHTTPSiOS

自己署名証明書を備えたサーバーがあります。 httpsフォームを使用してデバイスをサーバーに接続したい。接続を受け入れる必要があると聞きました。しかし、私は方法がわかりません。テストサーバーであるため、自己署名証明書を持っています。しかし、httpsフォームでアクセスしたいですか? httpsでアクセスしようとすると、エラーが発生します:

SURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

次に、それは自己署名証明書です。

誰かが私を助けることができますか?

8
Mcr67

デフォルトでは、証明書が無効な場合、CocoaはすべてのSSL接続を拒否します。

ただし、無効な証明書も受け入れるように強制することができます。方法は、使用しているライブラリ/フレームワークによって異なります。例えば:

  • NSURLConnectionについては、 この回答 を確認してください。
  • ASIHTTPRequestの場合、プロパティvalidatesSecureCertificateをNOに設定する必要があります。
  • AFNetworkingの場合、使用するコードを確認できます このページ
  • 低レベルのFoundationフレームワークであるCFNetworkの場合は、 このサンプルコード を確認してください。
  • 使用しているように見えるSURLConnectionの場合、NSURLConnectionの場合と同じ手順に従う必要があります。実際、SURLConnectionはNSURLConnectionの単なるサブクラスです。

重要な注意:
無効な場合でも、あらゆる種類のSSL証明書を受け入れるための上記のコードは、重大なセキュリティリスクです。基本的に、SSL全体が役に立たなくなります。結果として、SSL接続で本当にテストする必要がある場合は、そのコードを使用する必要があります開発中のみ
Appleは、無効なSSL証明書を受け入れるAppStoreに送信されたアプリケーションを拒否することにも注意してください。

20
ItalyPaleAle

証明書の構成:

デバイスが信頼するためには、デバイスに自己署名証明書または[〜#〜] ca [〜#〜]をインストールする必要があります。そうすると、デバイスのみが信頼します。 SSL接続。

自己署名証明書をインストールする場合は、ドメイン名[〜#〜] url [〜#〜]が-と同じであることを確認してください一般名証明書の。

ドメイン名がない場合は、IPアドレスで問題ありません。

証明書のインストール:

Webサーバーでホストして、Safariからアクセスしようとすると、iOSはiOSデバイスへの証明書のインストールを要求します。

証明書の作成:

自己署名証明書を作成して、Webサーバーのすべての詳細とホストを入力できるようにする方法は次のとおりです。

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 1001 -nodes

(一般名の値を入力する際は注意してください)

2
Durai Amuthan.H