2 waterful 1984 waterful_1984 于 2015.06.16 23:03 提问

HttpClient如何指定CipherSuites 3C

代码如下:
HttpClient httpclient = new DefaultHttpClient();

        SSLContext ctx = SSLContext.getInstance("TLS");
        X509TrustManager tm = new X509TrustManager() {  
            public void checkClientTrusted(X509Certificate[] xcs,  
                    String string) throws CertificateException {  
            }  
            public void checkServerTrusted(X509Certificate[] xcs,  
                    String string) throws CertificateException {  
            }
            public X509Certificate[] getAcceptedIssuers() {  
                return null;  
            }  
        };
        ctx.init(null, new TrustManager[]{tm},null );  

                    System.out.println("缺省安全套接字使用的协议: " + ctx.getProtocol());  
        // 获取SSLContext实例相关的SSLEngine  
        SSLEngine en = ctx.createSSLEngine();  
        System.out  
                .println("支持的协议: " + Arrays.asList(en.getSupportedProtocols()));  
        System.out.println("启用的协议: " + Arrays.asList(en.getEnabledProtocols()));  
        System.out.println("支持的加密套件: "  
                + Arrays.asList(en.getSupportedCipherSuites()));  
        System.out.println("启用的加密套件: "  
                + Arrays.asList(en.getEnabledCipherSuites()));  

本机运行结果:
缺省安全套接字使用的协议: TLS
支持的协议: [SSLv2Hello, SSLv3, TLSv1]
启用的协议: [SSLv2Hello, SSLv3, TLSv1]
支持的加密套件: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_RSA_WITH_NULL_MD5, SSL_RSA_WITH_NULL_SHA, SSL_DH_anon_WITH_RC4_128_MD5, TLS_DH_anon_WITH_AES_128_CBC_SHA, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_DES_CBC_SHA, SSL_DH_anon_EXPORT_WITH_RC4_40_MD5, SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA, TLS_KRB5_WITH_RC4_128_SHA, TLS_KRB5_WITH_RC4_128_MD5, TLS_KRB5_WITH_3DES_EDE_CBC_SHA, TLS_KRB5_WITH_3DES_EDE_CBC_MD5, TLS_KRB5_WITH_DES_CBC_SHA, TLS_KRB5_WITH_DES_CBC_MD5, TLS_KRB5_EXPORT_WITH_RC4_40_SHA, TLS_KRB5_EXPORT_WITH_RC4_40_MD5, TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA, TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5]
启用的加密套件: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA]

这里如何指定启用的加密套件为TLS_RSA_WITH_AES_128_CBC_SHA,而不是默认的SSL_RSA_WITH_RC4_128_MD5

1个回答

u011606457
u011606457   2016.06.06 14:31

en.setEnabledCipherSuites(new String[]{"TLS_RSA_WITH_AES_128_CBC_SHA"});

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
终极解决:iOS 与 Java 服务器之间 SSL 握手失败的解决:Cipher Suites
终极解决:iOS 与 Java 服务器之间 SSL 握手失败的解决:Cipher Suites
ECC Cipher Suites 加密套件在TLS中的应用 RFC 4492
原文地址:http://blog.csdn.net/dyrou/article/details/10329311 简介  本文档介绍了ECC算法在TLS协议中的使用方法,是对RFC 4492文档进行的翻译。由于翻译本文档时,对协议的认识有限,请大家指出错误和建议。   摘要        本文档介绍了基于ECC的密钥交换算法在TLS协议中的应用,在协议的握手过程中使用ECDH
OkHttp wiki官方文档翻译(二)
拦截器 拦截器是一个很强大的机制,可以监视、重写、重试请求。下面的例子是打印请求和响应的日志。 class LoggingInterceptor implements Interceptor { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Request requ
httpclient设置本机出口IP
通过getparams方法取得params对象再设置属性的方法在httpclient4.3中已经被废弃: * @deprecated (4.3) use * {@link org.apache.http.client.config.RequestConfig}.CloseableHttpClient client = ...;byte ip[] = new byte[] { (byte) 1
使用HttpClient设置自定义的DNS
要想使 DefaultHttpClient 对象使用自定义的 DNS 解析(比如将 blogjava.net 关联到 127.0.0.1,使其访问 "http://blogjava.net" 时请求本地服务器),可以用下面的办法(我在官网上没找到相关文章,是看了源代码自己琢磨出来的,也不是道是不是标准做法) import org.apache.http.HttpResponse; i
通过 HttpClient 从指定服务器获取数据
第一步:在POM.xml中添加dependency org.apache.httpcomponents httpclient compile org.apache.httpcomponents httpmime compile org.apache.httpcomponents httpcore-nio compile 第二步
HttpClient正确设置Host的姿势(不需要自定义DNS解析类)
因为有负载均衡的考虑,前端用了nginx动态代理。 两个域名虽然IP相同,但是如果不设置hosts文件,直接通过IP,是会返回404的。 所以需求就是这样,不设置hosts文件,而正确访问到对应的域名。 其实访问的IP是一样的,只是request header的Host不一样。 搜索到的解决方式:http://my.oschina.net/mikewei/blog/88606 这样有些不
使用httpClient访问指定网址遇到的问题
使用httpClient访问指定网址遇到的问题 2015-01-20 10:55 3896人阅读 评论(0) 收藏 举报  分类:   Java(19)  对于httpClient     访问指定页面 注意:对于URL必须使用 http://开始,否则会有如下报错信息: Caused by: org.apache.http.Pro
HttpClient/HttpURLConnection + HttpDns最佳实践
如果使用`HttpClient`或`HttpURLConnection`发起网络请求,尽管无法直接自定义Dns服务,但是由于`HttpClient`和`HttpURLConnection`也通过`InetAddress`进行域名解析,通过修改`InetAddress`的DNS缓存,同样可以比通用方案更为优雅地使用HttpDns。
HttpClient4.x调用指定证书访问https
代码如下: package com.lala.http; import java.io.FileInputStream; import java.io.InputStream; import java.security.KeyStore; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManagerFactory; i