0

JB が TLSv1.2 をサポートしていることをこの投稿で知りました。次のテストコードを実行すると、ジレンマになります。サポートされているプロトコルを TLSv1.2 ではなく TLS1.0 として取得します。何か間違ったことをしていますか?

public class SSLTest extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ssltest);
        SSLSocketFactory mSslSocketFactory = null;
        SSLContext sslContext = null;
        try {
            sslContext = SSLContext.getInstance("Default");
        } catch (NoSuchAlgorithmException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        mSslSocketFactory = sslContext.getSocketFactory();
        SSLSocket sock = null;
        try {
            sock = (SSLSocket)mSslSocketFactory.createSocket();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String[] prots = sock.getEnabledProtocols();
        for(int i=0;i<prots.length;i++){
            Log.d("TEMP","$$$$$$$$$$$$$$$$$$$$$$$ ::: " + prots[i]);
        }
        SSLParameters sslp = sock.getSSLParameters();
        String[] newprots = sslp.getProtocols();
        for(int i=0;i<newprots.length;i++){
            Log.d("TEMP","$$$$$$$$$$$$$$$$$$$$$$$ ::: " + newprots[i]);
        }
    }

出力:

10-11 11:57:53.280: D/TEMP(7928): $$$$$$$$$$$$$$$$$$$$$$$ ::: SSLv3
10-11 11:57:53.280: D/TEMP(7928): $$$$$$$$$$$$$$$$$$$$$$$ ::: TLSv1
10-11 11:57:53.280: D/TEMP(7928): $$$$$$$$$$$$$$$$$$$$$$$ ::: SSLv3
10-11 11:57:53.280: D/TEMP(7928): $$$$$$$$$$$$$$$$$$$$$$$ ::: TLSv1
4

1 に答える 1

4

enabledsupported を混同しています。プロトコルがサポートされているという事実は、それがデフォルトで有効になっているという意味ではありません。

TLS 1.2 を使用する場合はsetEnabledProtocols、最初に を使用して有効にします。これは、でサポートされている場合に機能しgetSupportedProtocolsます。

于 2012-10-11T19:20:50.917 に答える