NSStreamでクライアントとしてTCPソケット通信を行う おまけ TLSに対応
その3のおまけ
プレーンな通信ができるようになったので、いよいよ次の段階、TLS(むかしはSSLって呼んでました)で通信できるように改造しました。
といっても、ROOT証明書がiOS側に組み込まれているサーバーに対する、クライアント認証なしの普通の通信だけですけど…
クライアント認証とか勝手サーバー証明書に対応するとかには、Securityフレームワークの力を借りて、いろいろとやらないといけないのですが、今はそこまで必要としていませんのでパス。 (Javaでの実装経験はありますが、調べるのがめんどくさい…)
で、やり方は至ってかんたん。
NSInputStreamをopenする前に、SSLのLevelをセットしてやるだけ。
[_readStream setProperty:NSStreamSocketSecurityLevelNegotiatedSSL forKey:NSStreamSocketSecurityLevelKey];
こう書いてやれば、サーバーとiOSが使える中で一番強力なレベルが設定されます。 (関係ありませんが、TLSのネゴシエートがどんな風に行われるかを調べるとなかなか面白いですよ。)
ということで、一連のソケット通信の記事はおしまい。