特定ドメインの TLS バージョンや Cipher Suite を調べたい
iOS 9 の App Transport Security いわゆる ATS はなかなか厳しい条件かもしれませんが、Info.plist の定義次第ではその条件を緩和することができます。(Info.plist の定義方法については資料を参照ください。)
※2017年以降からはATSが必須になるとWWDC16でアナウンスされました。
そしてそのためには TLS プロトコルのバージョン、Cipher Suite を把握する必要があります。身内のサービスであればサーバー管理者に聞けば良いのですが、外部の API を利用しているという場合にはそれが ATS に対応する条件なのかどうかはなかなか判断しづらいところがあります。そこで、以下のツール、サービスを利用してみるとよいかもしれません。
nscurl
nscurl コマンドを使えば簡単に調べられます。Result : PASS
となった項目は成功です。
nscurl は OS X 10.11 El Capitan 以降で使えます。
$ nscurl --ats-diagnostics https://…/
================================================================================
Default ATS Secure Connection
---
ATS Default Connection
Result : PASS
---
================================================================================
SSL Server Test
フォームにドメインを入力すると諸々を検証できます。Cipher Suite の内容とプロトコル(TLS バージョン)を列挙してくれます。
ログが残るようなので注意してください。
CipherScan
CipherScan
https://github.com/jvehent/cipherscan
指定ドメインの Cipher Suite の内容とプロトコルを検証できるコマンドです。coreutils
の導入を促されたらまず brew で入れましょう。(OS X)
使い方
$ ./cipherscan google.com
...................
Target: google.com:443
prio ciphersuite protocols pfs curves
1 ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 ECDH,P-256,256bits prime256v1
2 ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 ECDH,P-256,256bits prime256v1
3 ECDHE-RSA-AES128-SHA TLSv1.1,TLSv1.2 ECDH,P-256,256bits prime256v1
4 ECDHE-RSA-RC4-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 ECDH,P-256,256bits prime256v1
5 AES128-GCM-SHA256 TLSv1.2 None None
6 AES128-SHA256 TLSv1.2 None None
7 AES128-SHA TLSv1.1,TLSv1.2 None None
8 RC4-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 None None
9 RC4-MD5 SSLv3,TLSv1,TLSv1.1,TLSv1.2 None None
10 ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 ECDH,P-256,256bits prime256v1
11 ECDHE-RSA-AES256-SHA384 TLSv1.2 ECDH,P-256,256bits prime256v1
12 ECDHE-RSA-AES256-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 ECDH,P-256,256bits prime256v1
13 AES256-GCM-SHA384 TLSv1.2 None None
14 AES256-SHA256 TLSv1.2 None None
15 AES256-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 None None
16 ECDHE-RSA-AES128-SHA256 TLSv1.2 ECDH,P-256,256bits prime256v1
17 ECDHE-RSA-DES-CBC3-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 ECDH,P-256,256bits prime256v1
18 DES-CBC3-SHA SSLv3,TLSv1,TLSv1.1,TLSv1.2 None None
Certificate: trusted, 2048 bit, sha1WithRSAEncryption signature
TLS ticket lifetime hint: 100800
OCSP stapling: not supported
Cipher ordering: server
参考資料
https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/
http://dev.classmethod.jp/smartphone/iphone/ios-9-intro-ats/
http://kanny.hateblo.jp/entry/2015/09/08/001903
http://www.atmarkit.co.jp/ait/articles/0106/16/news001_2.html
http://blog.kishikawakatsumi.com/entry/2015/10/19/121257
http://stackoverflow.com/questions/32723623/how-do-i-install-nscurl-on-mac-os-x-10-10-yosemite