Java 升级安全提供程序后,未找到OpenSSLSocketImpl中的类异常

Java 升级安全提供程序后,未找到OpenSSLSocketImpl中的类异常,java,android,openssl,google-play-services,Java,Android,Openssl,Google Play Services,根据Android开发者和开发者的说法,Android 4.x操作系统中的安全提供商应该升级以避免已知的漏洞。使用Google Play服务的ProviderInstaller类,我们可以对其进行升级 当我们试图访问OpenSSLSocketImpl类时,如下面的代码片段所示,它抛出类notfound异常 Class.forName(“com.google.android.gms.org.conscrypt.OpenSSLSocketImpl”); 为什么OpenSSLSocketImpl会导

根据Android开发者和开发者的说法,Android 4.x操作系统中的安全提供商应该升级以避免已知的漏洞。使用Google Play服务的
ProviderInstaller
类,我们可以对其进行升级

当我们试图访问
OpenSSLSocketImpl
类时,如下面的代码片段所示,它抛出类notfound异常

Class.forName(“com.google.android.gms.org.conscrypt.OpenSSLSocketImpl”);
为什么
OpenSSLSocketImpl
会导致类未找到异常


要使用最新的OpenSSL库,我们还应该执行哪些操作?

实现类不是API的一部分,因此您不应该直接引用它们。

实现类不是API的一部分,因此您不应该直接引用它们。

@jww感谢您改进了这个问题。您好@jww,可能是因为播放服务被模糊了?@jww谢谢你改进了这个问题。嗨@jww,可能是因为播放服务被模糊了?谢谢你的回答。同意OpenSSLSocketImpl是一个内部类。但如下面的链接所示,OkHttp通过使用conscrypt和JSSE提供者在OpenSSlSocketImpl上的反射,提供了类似SNI的TLS模型特性。类似地,在GoogleGMS库的情况下,需要相同的实现才能拥有最新的TLS扩展。但正如前面提到的,当我们进行反射时,它抛出异常。尝试使用com.android.org.conscrypt包。是的,这是有效的。org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl也在较旧的Android操作系统中工作。但由于旧版OpenSSL中存在漏洞,谷歌在GMS Conscrypt中提供了补丁。此修补程序已安装在设备中。我检查了“GMSCore\u OpenSSL”提供程序是否存在。但正如上面的评论所说,这里的关注点是启用SNI,但不能,因为反射不成功。@user4756956-“这里的关注点是启用SNI,但不能,因为反射不成功…”也许下一步要采取的方法是在不依赖反射的情况下启用SNI?SNI函数
SSL\u CTX\u set\u tlsext\u servername\u回调
(服务器)和
SSL\u set\u tlsext\u主机名
(客户端)至少从1.0.1开始就存在了。@jww谢谢。但这些是openssl库的内部功能。不知道如何在Android中使用。谢谢你的回答。同意OpenSSLSocketImpl是一个内部类。但如下面的链接所示,OkHttp通过使用conscrypt和JSSE提供者在OpenSSlSocketImpl上的反射,提供了类似SNI的TLS模型特性。类似地,在GoogleGMS库的情况下,需要相同的实现才能拥有最新的TLS扩展。但正如前面提到的,当我们进行反射时,它抛出异常。尝试使用com.android.org.conscrypt包。是的,这是有效的。org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl也在较旧的Android操作系统中工作。但由于旧版OpenSSL中存在漏洞,谷歌在GMS Conscrypt中提供了补丁。此修补程序已安装在设备中。我检查了“GMSCore\u OpenSSL”提供程序是否存在。但正如上面的评论所说,这里的关注点是启用SNI,但不能,因为反射不成功。@user4756956-“这里的关注点是启用SNI,但不能,因为反射不成功…”也许下一步要采取的方法是在不依赖反射的情况下启用SNI?SNI函数
SSL\u CTX\u set\u tlsext\u servername\u回调
(服务器)和
SSL\u set\u tlsext\u主机名
(客户端)至少从1.0.1开始就存在了。@jww谢谢。但这些是openssl库的内部功能。不知道如何在Android中使用。