sslSocketFactory, final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) { URI sslSocketFactory, final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) { this sslSocketFactory, final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) { this sslSocketFactory, final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) { this sslSocketFactory, final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) { this
private CfgService cfgService; public void initService() { SSLSocketFactory sslSocketFactory = null; try { sslSocketFactory = SSLUtils.getSSLSocketFactory(); } catch = null) { Log.d(TAG, "sslSocketFactory ! = null"); builder.sslSocketFactory(sslSocketFactory); } else { Log.w( getSSLSocketFactory() throws Exception { SSLSocketFactory sslSocketFactory = null; SSLContext
,newSslSocketFactory(), 443)); return new SingleClientConnManager(getParams(), registry); } private SSLSocketFactory R.raw.keystore); try { truststore.load(in, “qwerty1234”.toCharArray()); } finally { in.close(); } return new SSLSocketFactory ,newSslSocketFactory(), 443)); return new SingleClientConnManager(getParams(), registry); } private SSLSocketFactory to use the certificates SSLSocketFactory socketFactory = null; socketFactory = new SSLSocketFactory( SSLSocketFactory.TLS, keyStore, “qwerty1234”, trustStore, null, null); return socketFactory; } catch
(sslParams.sSLSocketFactory,sslParams.trustManager) //其他配置 .build(); (sslParams.sSLSocketFactory,sslParams.trustManager) //其他配置 .build(); getAssignInputStreams(cer), getAssignInputStream(Mcer), psaaword); mOkHttpClient.newBuilder().sslSocketFactory (sslParams.sSLSocketFactory,sslParams.trustManager) //其他配置 .build(); socketFactory = new SSLSocketFactory(keyStore); Scheme sch = new Scheme("https", socketFactory
sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); final javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); OkHttpClient.Builder builder = new OkHttpClient.Builder (); builder.sslSocketFactory(sslSocketFactory,(X509TrustManager)(trustAllCerts[0]));
binaryJedis.png"> ```java public BinaryJedis(final String host, final int port, final boolean ssl, final SSLSocketFactory sslSocketFactory, final SSLParameters sslParameters, final HostnameVerifier hostnameVerifier) { client = new Client(host, port, ssl, sslSocketFactory, sslParameters, hostnameVerifier); } BinaryJedis
其实,HttpsURLConnection通过SSLSocket来建立与HTTPS的安全连接,SSLSocket对象是由SSLSocketFactory生成的。 HttpsURLConnection提供了方法setSSLSocketFactory(SSLSocketFactory)设置它使用的SSLSocketFactory对象。 SSLSocketFactory通过SSLContext对象来获得,在初始化SSLContext对象时,可指定信任管理器对象。下面用一个图简单表示这几个JSSE类的关系: ? 对象 SSLSocketFactory ssf = sslContext.getSocketFactory(); //创建HttpsURLConnection对象,并设置其SSLSocketFactory SSLSocketFactory ssf= BZX509TrustManager.getSSFactory(); 调用对象方法获取SSLSocketFactory对象。
socket相关 socketFactory(SocketFactory socketFactory) sslSocketFactory(SSLSocketFactory sslSocketFactory ) sslSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager) 设置相关的socket工厂。
://chls.pro/ssl 或者扫描如下二维码 下载证书后安装 安装方式参见上文 代码中的配置 Retrofit/okhttp 客户端不对服务器证书做任何验证 public static SSLSocketFactory private void onHttps(OkHttpClient.Builder builder) { try { builder.sslSocketFactory (getSSLSocketFactory()).hostnameVerifier(org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER ); } catch (Exception e) { e.printStackTrace(); } } 客户端验证证书 public static SSLSocketFactory (sslParams1.sSLSocketFactory, sslParams1.trustManager);
final InternalCache internalCache; final SocketFactory socketFactory; @Nullable final SSLSocketFactory sslSocketFactory; @Nullable final CertificateChainCleaner certificateChainCleaner; final private final OkHttpClient client; public CustomTrust() { X509TrustManager trustManager; SSLSocketFactory sslSocketFactory; try { trustManager = trustManagerForCertificates(trustedCertificatesInputStream (sslSocketFactory, trustManager) .build(); } public void run() throws Exception { Request
org.springframework.context.annotation.Configuration; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory public OkHttpClient okHttpClient() { return new OkHttpClient.Builder() .sslSocketFactory (sslSocketFactory(), x509TrustManager()) // 是否开启缓存 .retryOnConnectionFailure return new X509Certificate[0]; } }; } @Bean public SSLSocketFactory sslSocketFactory() { try { // 信任任何链接 SSLContext sslContext = SSLContext.getInstance
}; log.info("---"); ctx.init(null, new TrustManager[]{tm}, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
properties.getPassword())); // 开启SSL(生产环境建议配置) if (properties.isSsl()) { SslSocketFactory sslSocketFactory = (SslSocketFactory) SslSocketFactory.getDefault(); LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder() .useSsl().sslSocketFactory(sslSocketFactory
str = "X509"; String str2 = "BKS"; Application b = MyApplication.m5574b(); SSLSocketFactory sSLSocketFactory = null; try { KeyStore instance = KeyStore.getInstance(str2); instance3.init(instance5.getKeyManagers(), C2639d.m8197a(instance4.getTrustManagers()), null); sSLSocketFactory = instance3.getSocketFactory();// 完成了sslsocketfactory return sSLSocketFactory; }
设置OkHttpClient校验证书 然后使用上面的trustManager构建OkHttpClient SSLSocketFactory sslSocketFactory = null; try { SSLContext.getInstance("TLS"); sslContext.init(null, new TrustManager[]{trustManager}, new SecureRandom()); sslSocketFactory return true; } }; OkHttpClient client = new OkHttpClient.Builder() .hostnameVerifier(hostnameVerifier) .sslSocketFactory (sslSocketFactory, trustManager) .build();复制代码 使用这个配置好的OkHttpClient与服务端交互,就可以支持自定义https证书加密通信了,如果服务端证书不符
SSLConfig sslConfig = new SSLConfig(); public HttpConfig httpConfig = new HttpConfig(); private SSLSocketFactory sslSocketFactory; //3,ssl证书初始化方法实现类,下面有重点解释 public void initSSL(String keyStorePath, char[] = sslContext.getSocketFactory();//创建sslSocketFactory //至此,对ssl安全证书的双向验证的所有操作都完成了。 同时,可以看出上面的所有操作都是为了得出sslSocketFactory } //6,connect实现方法,把初始化好的ssl配置加入到http中,让http变成https,至此下面的步骤可以看做 = null) {//承接上面的init()初始化方法,如果sslSocketFactory为null说明没有ssl证书验证,那么就可以看做http通讯了 HttpsURLConnection
sslSocketFactory, SSLParameters sslParameters, HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap sslSocketFactory, SSLParameters sslParameters, HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap sslSocketFactory, SSLParameters sslParameters, HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap sslSocketFactory, SSLParameters sslParameters, HostnameVerifier hostnameVerifier, JedisClusterHostAndPortMap sslSocketFactory, SSLParameters sslParameters, HostnameVerifier hostnameVerifier) { for (HostAndPort
org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.ssl.SSLSocketFactory () { return null; } }; ctx.init(null, new TrustManager[] { tm }, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager
socketFactory; 安全套接字工厂 : 使用 HTTPS 协议时 , 创建 SSLSocket ; 涉及到 HTTPS 证书信任问题 , 如果证书不收信任 , 会报异常 ; @Nullable SSLSocketFactory sslSocketFactory; 证书链清洁器 : 使用 HTTPS 协议时 , 使用 Java TSL 相关 API , 获取有效证书 , 清除不相关证书 ; @Nullable CertificateChainCleaner Cache cache; @Nullable InternalCache internalCache; SocketFactory socketFactory; @Nullable SSLSocketFactory sslSocketFactory; @Nullable CertificateChainCleaner certificateChainCleaner; HostnameVerifier
addInterceptor(logging) .addNetworkInterceptor(new TokenHeaderInterceptor()) .sslSocketFactory addInterceptor(logging) .addNetworkInterceptor(new TokenHeaderInterceptor()) .sslSocketFactory param context * @param certificatesFiles 本地文件(通过下载到本地) * @return */ public static SSLSocketFactory 资源中读取 * @param context * @param certificates rawIds * @return */ public static SSLSocketFactory