0

1.2 より前のバージョンの TLS を実行しているサーバーとのアプリの通信を制限しようとしています。ドキュメントから、 を呼び出すことSSLSetProtocolVersionMinでこれを行うことができるように見えるので、次のようにしました。

SSLContextRef context = SSLCreateContext(NULL, kSSLClientSide, kSSLStreamType);
SSLSetProtocolVersionMax(context, kTLSProtocol12);
SSLSetProtocolVersionMin(context, kTLSProtocol12);

への呼び出しがSSLSetProtocolVersionMinエラーを返さないことを確認しましたが、SSLv3 にネゴシエートするサーバーに接続できます。

SSLSetProtocolVersionMaxTLSv1.1 に設定し、サーバーを TLSv1.2 のみに設定すると、サーバーに接続できないため、正しく動作しているように見えます。

これは iOS 9 で期待どおりに動作するようです。これが iOS 8 でサポートされていないかどうか、または他に必要な手順があるかどうかを知っている人はいますか?

4

1 に答える 1

0

iOS 9 の Apple の新しいアプリケーション トランスポート セキュリティを使用して、最小 TLS バージョンを満たすサーバーにのみ接続するように iOS を構成できます。

次のようなコードを Info.plist ファイルに追加できます。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>mydomain.com</key>
        <dict>
            <key>NSThirdPartyExceptionMinimumTLSVersion</key>
            <string>1.2<string/>
        </dict>
    </dict>
</dict>

WWDC ビデオをご覧ください。

編集:

ATS を持たない iOS 8 でこれを達成する必要があることを示すために、質問に追加されたようです。ただし、元の質問にはこの制限が含まれていなかったため、この回答がiOS 9を使用していて、これを行う必要がある人に役立つことを願っています.

于 2016-02-05T21:37:08.387 に答える