- public class TLSSocketFactory extends SSLSocketFactory {
- private SSLSocketFactory internalSSLSocketFactory;
- public TLSSocketFactory() throws KeyManagementException, NoSuchAlgorithmException {
- SSLContext context = SSLContext.getInstance("TLS");
- context.init(null, null, null);
- internalSSLSocketFactory = context.getSocketFactory();
- }
- public TLSSocketFactory(SSLSocketFactory delegate) throws KeyManagementException, NoSuchAlgorithmException {
- internalSSLSocketFactory = delegate;
- }
- ......
- @Override
- public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
- return enableTLSOnSocket(internalSSLSocketFactory.createSocket(address, port, localAddress, localPort));
- }
- // 开启对TLS1.1和TLS1.2的支撑
- private Socket enableTLSOnSocket(Socket socket) {
- if(socket != null && (socket instanceof SSLSocket)) {
- ((SSLSocket)socket).setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"});
- }
- return socket;
- }
- }
(1) 通信应用明文可能会被窃听
- if (JarConfig.__self_signed_https) {
- SSLContextByTrustAll mSSLContextByTrustAll = new SSLContextByTrustAll();
- MySSLContext mSSLContext = new MySSLContext(mSSLContextByTrustAll);
- SSLSocketFactory noSSLv3Factory;
- if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
- noSSLv3Factory = new TLSSocketFactory(mSSLContext.getSSLSocket().getSocketFactory());
- } else {
- noSSLv3Factory = mSSLContext.getSSLSocket().getSocketFactory();
- }
- httpsURLConnection.setSSLSocketFactory(noSSLv3Factory);
推荐阅读
涉及体系范围之广泛尚属初次:本次整合共享涵盖了大年夜中心到处所的各个部分,纳入整合共享范畴的┞服务信息体系包含由当局投资扶植、当局与社会企业结合扶植、当局向社会购大班事或须要当局资金运行保护的,用于支>>>详细阅读
本文标题:HTTPS 原理浅析及其在 Android 中的使用
地址:http://www.17bianji.com/lsqh/35390.html
1/2 1