解决 JDK1.7 不支持 VCenter 6.7 的问题(涉及到Https TLS1.2协议)
解决 JDK1.7 不支持 VCenter 6.7 的问题
问题描述
原项目工程是使用JDK 1.7,可以连接 5.X版本和 6.0版本的 VCenter资源池。
但是,现在VCenter已经升到 6.7版本,原程序对于高版本的 VCenter 6.7 不再试用。
连接 VCenter 6.7 版本的资源池的时候,一直报 SSLHandshakeException 的异常错误。
报错信息如下:

问题处理
1、背景介绍
JDK1.7 默认是 TSLv1, 但是可以支持 TSLv1.1,TSLv1.2;
JDK1.8 默认是 TSLv1.2
2、解决方案
1)如果是脚本访问,可以在连接参数里增加 -Dhttps.protocols=TLSv1.2
2)如果是Java程序处理,想使用 JDK 1.7 访问 VCenter 6.7 资源池,需要对VCenter 6.7版本单独处理
a)根据资源池类型,设置不同的 https.protocols
if (type.equals("VC67")){
java.lang.System.setProperty("https.protocols", "TLSv1.2");
}else{
java.lang.System.setProperty("https.protocols", "TLSv1");
}
b)对于连接VC的认证处理如下:
if (type.equals("VC67")){
trustAllHttpsCertificatesTLS12();
}else {
trustAllHttpsCertificates();
}
trustAllHttpsCertificates() 方法如下
private static void trustAllHttpsCertificates() throws Exception {
javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
javax.net.ssl.TrustManager tm = new TrustAllTrustManager();
trustAllCerts[0] = tm;
javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL");
javax.net.ssl.SSLSessionContext sslsc = sc.getServerSessionContext();
sslsc.setSessionTimeout(20);// add time out 20 t for session
sc.init(null, trustAllCerts, null);
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
trustAllHttpsCertificatesTLS12() 方法如下
private static void trustAllHttpsCertificatesTLS12() throws Exception {
javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
javax.net.ssl.TrustManager tm = new TrustAllTrustManager();
trustAllCerts[0] = tm;
javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("TLSv1.2");
javax.net.ssl.SSLSessionContext sslsc = sc.getServerSessionContext();
sslsc.setSessionTimeout(20);// add time out 20 t for session
sc.init(null, trustAllCerts, null);
javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
}
TrustAllTrustManager 类如下
private static class TrustAllTrustManager implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) throws java.security.cert.CertificateException {
return;
}
public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) throws java.security.cert.CertificateException {
return;
}
}
解决 JDK1.7 不支持 VCenter 6.7 的问题(涉及到Https TLS1.2协议)的更多相关文章
- 终于解决了IE8不支持数组的indexOf方法,array的IndexOf方法
/* 终于解决了IE8不支持数组的indexOf方法 */ if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (el ...
- (转)解决jdk1.8中发送邮件失败(handshake_failure)问题
解决jdk1.8中发送邮件失败(handshake_failure)问题 作者 zhisheng_tian 2016.08.12 22:44* 字数 1573 阅读 2818评论 6喜欢 9 暑假在家 ...
- jdk1.6 支持 tls1.2协议 并忽略身份验证
jdk1.6不支持tls1.2协议,jdk1.8默认支持,比较好的解决方案是升级jdk,但是升级jdk风险极大.不能升级jdk的情况下,可以使用如下方式. 引入依赖 <dependency> ...
- JDK1.5中支持的 for循环的语法
JDK1.5中支持的 for循环的语法 解答: for(type element : array) { System.out.println(element) } type 集合(不仅仅指Collec ...
- 完美快速解决百度分享不支持HTTPS的问题
百度分享不支持HTTPS这件事由来已久,我之前向百度分享提交过这个问题,无果!但近期themebetter主题用户咨询的比较多,我们就总结了解决方案. 第一步:下载百度分享必备文件 点此下载stati ...
- 为什么jdk1.8不支持sql.append,该如何解决
StringBuilder sql = new StringBuilder("SELECT ID,COMMAND,DESCRIPTION,CONTENT FROM message where ...
- 解决Firefox/Opera 不支持onselectstart事件实现不允许用户select
在IE/Safari/Chrome中我们可以使用onselectstart事件来阻止用户选定元素内文本,本文为大家解决下火狐中如何实现不能选择,由此需求的朋友可以参考下,希望对大家有所帮助 ...
- nginx,文件下载,预览,防止浏览器下载时直接打开,防止预览时直接下载文件,解决nginx谷歌浏览器不支持下载问题
公司项目逐渐增多,对效率的要求越来越高,不同项目分部不同服务器,最初想用nginx 就是为了多个项目用一个url和服务器宕机解决方案 nginx也可作为附件服务器,毕竟nginx也对静态文件支持较好, ...
- 解决IE6下不支持 png24的透明图片问题
常用的两种解决方案: 第一:使用IE滤镜解决 关键代码: css代码 _background:none;_filter:progid:DXImageTransform.Microsoft.Alpha ...
随机推荐
- CSS属性(pading margin)
margin: margin:5px auto;意思上下为5,左右平均居中 margin-top: 20px; 上外边距 margin-right: 3 ...
- Linux终端命令行的快捷键
涉及在Linux命令行下进行快速移动光标.命令编辑.编辑后执行历史命令.Bang(!)命令.控制命令等.让basher更有效率. • 常用 1.ctrl+左右键:在单词之间跳转 2.ctrl+a:跳到 ...
- 生产者消费者问题--BlockingQueue
# 代码: public class App { public static void main(String[] args) { BlockingQueue<Integer> queue ...
- Task底层实现原理探秘
.NET 4包含新名称空间System.Threading.Tasks,它 包含的类抽象出了线程功能, 在底层使用ThreadPool. 任务表示应完成的某个单元的工作. 这个单元的工作可以在单独的线 ...
- Winforms界面开发DevExpress v19.2:图表、编辑器功能增强
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅.美观且易于使用的应用程序.无论是Office风格的界面,还是分析处理大批量的业务数据,DevExpr ...
- JAVA学习第三周
判断某个字符串是否为回文 时间2019年9月23日下午 这个题有很多种写法,其一是用String来存这个字符串,然后调用charAt函数进行字符串的遍历,从两头开始遍历是否相等 其二是用toCharA ...
- Java 中 && 和 & 的区别
在java中&和&&都属于逻辑运算符,都是判断两边条件为真时为真,否则则为假. 在程序中: int i = 1; if ((i++ > 1) & (i++ > ...
- mongodb添加索引
mongodb可以添加多列索引 稠密索引:该列中即使有null值也能给你查出来 稀疏索引:该列中查不出包含null值的列 二叉树索引是由码放的顺序的,哈希则是散列,相邻的数字,排列顺序并不一定紧邻
- inner join和left join
查询所有商品(product),包含他的所有的评论(comment),包含评论下的user 要使用 SELECT * FROM product p LEFT JOIN COMMENT c ON p. ...
- python-matplotlib-2
figure的使用 x = np.linspace(-1, 1, 50) y1 = 2 * x + 1 #figure 1 plt.figure() plt.plot(x, y1) # figure ...