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);
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
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
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; }
}; 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
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
设置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
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
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
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