質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

2回答

12662閲覧

【swift】自己認証SSLと通信できない

mACS

総合スコア19

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

1クリップ

投稿2016/01/08 02:55

サーバーとhttps通信しようとしています。
自己認証のSSLの場合、kCFStreamErrorDomainSSLのエラーが発生するので、
以下のコードで無視しようとしたのですが、結果は変わりませんでした。
何が足りないのかご教授いただけませんか。

swift

1extension NSURLRequest { 2 static func allowsAnyHTTPSCertificateForHost(host: String)->Bool{ 3 return true 4 } 5}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40016240
のNSExceptionAllowsInsecureHTTPLoadsの説明に
「For example, to connect to an HTTPS server that uses a self-signed certificate and a TLS version lower than 1.2, set the NSExceptionAllowsInsecureHTTPLoads value to YES and also set an appropriate value for the NSExceptionMinimumTLSVersion key.」
と書いてある通り、自己署名の証明書を使うにはATSのNSExceptionAllowsInsecureHTTPLoadsの設定が必要なはずです。

これらの設定なしで自己署名の証明書を使いたい場合、
https://origin-discussions-jp.apple.com/thread/10168125?start=0&tstart=0
にあるように、自己認証局のルート証明書をテスト用端末にインストールすればたぶん使えると思います。
(つまり自己署名ではないと端末に認識させればよい)

投稿2016/01/08 08:22

TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mACS

2016/01/08 09:15 編集

回答ありがとうございます。 ATSの設定を以下のようにして実行してみましたが、 相変わらずkCFStreamErrorDomainSSLが発生します。 ``` <key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>サーバーのIPアドレス</key> <dict> <key>NSExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict> ```
mACS

2016/01/11 23:35

わかりました。ドメインが用意できるまではATSを無効にしておきます。 ありがとうございました。
guest

0

ATSは設定済みでしょうか。

投稿2016/01/08 04:32

YasuhiroMiyake

総合スコア1336

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mACS

2016/01/08 05:09 編集

info.plistのNSAppTransportSecurityでしょうか。 基本的にATSは有効にしたいので、何も設定はしておりません。
YasuhiroMiyake

2016/01/08 05:20 編集

> info.plistのNSAppTransportSecurityでしょうか はい。 接続先(サーバ)のTLS1.2対応やApple指定の暗号化方式が利用されているかなどは確認されたのでしょうか。 また接続時に利用しているURLはドメイン経由でしょうか。それとも直接IPアドレスを指定していますでしょうか。
mACS

2016/01/08 07:09

サーバはTLSv1.2対応しており、暗号スイートもApple指定のものになっています。 URLはIPアドレスを指定しています。
YasuhiroMiyake

2016/01/08 09:08

> URLはIPアドレスを指定しています。 不確かですが、ATS要件を満たすにはドメインが必要だった気がします。 問題の切り分けを行うためにも、一度ATSを無効にして動作するのかを確かめることをお勧めします。
mACS

2016/01/11 23:33

ATSを無効にした場合は通信できております。 やはりIPアドレスのままだとダメみたいですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問