javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted

背景

项目问题报错如下图,用exoplayer播放网络视频发现了如下图问题,于是开始翻资料查找,发现是个通用问题,在Android 4.4的机器上https网络请求失败,但是测试时用Android5.0以上的手机没有发现这个问题。



问题原因:

https单向认证问题

android 4.4没有启用TLSv1.1 和 TLSv1.2 传输层安全协议

https://developer.android.com/reference/javax/net/ssl/SSLSocket


解决方案:

Application  onCreate方法中添加一下代码,

try {

// 解决android 4.4没有启用TLSv1.1 和 TLSv1.2 传输层安全协议

    ProviderInstaller.installIfNeeded(getApplicationContext());

SSLContext sslContext;

sslContext = SSLContext.getInstance("TLSv1.2");

sslContext.init(null,null,null);

sslContext.createSSLEngine();

}catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException

| NoSuchAlgorithmException | KeyManagementException e) {

e.printStackTrace();

}


参考:

android - Javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: Failure in SSL library, usually a protocol error - Stack Overflow

你可能感兴趣的:(javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted)