1. 检索 certificate 属性

使用 MOB(托管对象浏览器)检索证书信息,在浏览器地址栏输入下面的地址(其搜索路径为 ServiceInstance-> content -> ha-folder-root -> ha-datacenter -> ha-folder-host -> ha-compute-res -> ha-host -> config):

https://192.168.1.xxx/mob/?moid=ha-host&doPath=config

该地址进入的是 ESXi 主机配置信息对象 HostConfigInfo 的界面,里面有个 certificate 属性,如下图:

如上图,该 certificate 是一个十进制的字节数组,需要将该数组转为以十六进制展示的那种形式。

2. 根据主机名称获取 certificate 属性值

/*** @Title: getCertificate* @Description: 获取主机证书* @param hostName* @return* @throws RuntimeFaultFaultMsg* @throws InvalidPropertyFaultMsg*/@Overridepublic ArrayOfByte getCertificate(String hostName)throws RuntimeFaultFaultMsg, InvalidPropertyFaultMsg {// certificate属性String[] propsArr = new String[] {"config.certificate"};ManagedObjectReference hostMor = getMorByObjectName("HostSystem", hostName);// 获取属性对应的实体Map<String, Object> result = retrieveEntityProps(hostMor, propsArr);ArrayOfByte certificate = null;// 遍历结果for (String key : result.keySet()) {if ("config.certificate".equals(key)) {certificate = (ArrayOfByte) result.get(key);}}return certificate;}

该方法获取到的 certificate 是十进制数组,结果如下:

45
45
45
45
45
66
69
71
73
78
32
67
.
.
.

3. 将十进制数组 certificate 转为十六进制

其中的证书字节数组转换只用到 byte2HexStr() 这个方法,其他互转方法当作一个记录供学习。

import java.net.URL;
import java.util.List;import com.vmware.vim25.ArrayOfByte;import cn.vms.VmClientSession;
import cn.vms.VmClientSessionFactory;
import cn.vms.entity.EsxiConnectionEntity;/*** @ClassName: HexUtil* @Description: 10进制byte数组与16进制byte数组互转*/
public class HexUtil {/** 16进制中的字符集 */private static final String HEX_CHAR = "0123456789ABCDEF";/** 16进制中的字符集对应的字节数组 */private static final byte[] HEX_STRING_BYTE = HEX_CHAR.getBytes();/*** 10进制字节数组转换为16进制字节数组** byte用二进制表示占用8位,16进制的每个字符需要用4位二进制位来表示,则可以把每个byte* 转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符,再取对应16进制字符的字节** @param b 10进制字节数组* @return 16进制字节数组*/public static byte[] byte2hex(byte[] b) {int length = b.length;byte[] b2 = new byte[length << 1];int pos;for (int i = 0; i < length; i++) {pos = 2 * i;b2[pos] = HEX_STRING_BYTE[(b[i] & 0xf0) >> 4];b2[pos + 1] = HEX_STRING_BYTE[b[i] & 0x0f];}return b2;}/*** 16进制字节数组转换为10进制字节数组** 两个16进制字节对应一个10进制字节,则将第一个16进制字节对应成16进制字符表中的位置(0~15)并向左移动4位,* 再与第二个16进制字节对应成16进制字符表中的位置(0~15)进行或运算,则得到对应的10进制字节* @param b 10进制字节数组* @return 16进制字节数组*/public static byte[] hex2byte(byte[] b) {if (b.length % 2 != 0) {throw new IllegalArgumentException("byte array length is not even!");}int length = b.length >> 1;byte[] b2 = new byte[length];int pos;for (int i = 0; i < length; i++) {pos = i << 1;b2[i] = (byte) (HEX_CHAR.indexOf(b[pos]) << 4 | HEX_CHAR.indexOf(b[pos + 1]));}return b2;}/*** 将16进制字节数组转成10进制字符串** @param b 16进制字节数组* @return 10进制字符串*/public static String hex2Str(byte[] b) {return new String(hex2byte(b));}/*** 将10进制字节数组转成16进制字符串** @param b 10进制字节数组* @return 16进制字符串*/public static String byte2HexStr(byte[] b) {String hexStr = new String(b);// int data = Integer.parseInt(sb);// return Integer.toHexString(data);return hexStr;}// 获取 Certificate 字节数组public static ArrayOfByte getCertificateTest() throws Exception {URL url = new URL("https://192.168.1.xxx/sdk/vimService?wsdl");EsxiConnectionEntity esxiConnectionEntity = new EsxiConnectionEntity();esxiConnectionEntity.setUrl(url);esxiConnectionEntity.setUserName("root");esxiConnectionEntity.setPassword("******");VmClientSession vmClientSession = VmClientSessionFactory.bulidVmClientSession(esxiConnectionEntity, "userId");ArrayOfByte certificate =vmClientSession.getEsxiApi().getInventoryInfoApi().getCertificate("localhost.localdomain");vmClientSession.close();return certificate;}// 测试public static void main(String[] args) throws Exception {ArrayOfByte certificateByteArr = getCertificateTest();List<Byte> certlist = certificateByteArr.getByte();byte[] certb = new byte[certlist.size()];for (int i = 0; i < certlist.size(); i++) {// System.out.println(certlist.get(i));certb[i] = certlist.get(i);}System.out.println(byte2HexStr(certb));}}

结果如下:

-----BEGIN CERTIFICATE-----
MIID8jCCAtqgAwIBAgIHAKlNwVk6VDANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQK
ExBWTXdhcmUgSW5zdGFsbGVyMB4XDTE3MDYwMjA3MDAxNFoXDTI4MTIwMTA3MDAx
NFowgfoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQH
EwlQYWxvIEFsdG8xFDASBgNVBAoTC1ZNd2FyZSwgSW5jMS4wLAYDVQQLEyVWTXdh
cmUgRVNYIFNlcnZlciBEZWZhdWx0IENlcnRpZmljYXRlMSowKAYJKoZIhvcNAQkB
Fhtzc2wtY2VydGlmaWNhdGVzQHZtd2FyZS5jb20xHjAcBgNVBAMTFWxvY2FsaG9z
dC5sb2NhbGRvbWFpbjEwMC4GCSqGSIb3DQEJAhMhMTQ5NjM4NjgxNCw1NjRkNzc2
MTcyNjUyMDQ5NmU2MzJlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
qyEZkKgZDfj04z3NLmQOuX4OAbbNHZYztU1Hp0C53fPS66cLVBvn0nKuk4PvNIZl
5dYcPBR+ifFrynM3z4dA7GXvHtCmSXnhdO7tyF8YxQkAHC4NcmKUcpwQ7B3lDtMf
eDO86IcX1nAMLjHXRDDppQOZAQg33SWne9uEbFPKTLZuvplhbE4JbBmRjdn39XfG
i2cL/QIN9XvxGmJluPI9DPlD3ijC83SgARRq8euL8ZSQiJRniy+iRnbxw6pMdR0K
ac+dqC13UBabVtFaveZdHY27w7foetG4weLqfx/9Qosl3re7cOKiLez/IQXHjo+i
qs/a63HXf5tSE4CevEE3IwIDAQABo1swWTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
sDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIAYDVR0RBBkwF4IVbG9j
YWxob3N0LmxvY2FsZG9tYWluMA0GCSqGSIb3DQEBCwUAA4IBAQBlUL1d71h3S8DP
Tpz0FnfWlMd2dtuqnRtGvQz09nhCwQ2AUJv5mgcM34SuVM2HwyVl7MQwBc2s3dZg
gz+G6q5btKF9BQrheDxgfzKQrEO3mY11jh7+HREIR2usfoI5IPAoSBsmy/zbtkvr
2RZAjf/DTCW4uuIF0v0uU7V5Y5oFqetRH4yM3euPzWfaxEEeBxVV/UqiZyw306oo
n7C4JobuZH2Ht5kklunG9jMmigDLjAXoyXMP/eWRHc9p4pMUfypI8Pdz2l9mS+oC
W5ynFXXNKVVf2SkBj6Wf4+NPIe3OzL42YqCtK7YY+EW1GBZGAia6aYYa1hpTB/53
41zp9DyZ
-----END CERTIFICATE-----

然后可以通过命令行或其他工具根据该证书生成 ESXi 主机的 thumbprint。


参考:
Java 10进制byte数组与16进制byte数组互转 及 在DES加解密中的使用

根据 MOB/vSphere APIs 获取 ESXi 服务器证书相关推荐

  1. 微信小程序控制台 报错 对应的服务器证书无效 控制台输入 showRequestInfo() 可以获取更详细信息 原因是ssl证书过期 重新申请即可

    微信小程序控制台 报错 对应的服务器证书无效.控制台输入 showRequestInfo() 可以获取更详细信息 报错原因:域名下的SSL证书过期 我这边报错的原因是ssl证书过期 重新申请后就好了, ...

  2. lync2010服务器证书,无法登录 Skype for Business Online,因为无法获取证书 | Microsoft Docs...

    无法登录 Skype for Business Online,因为无法获取或验证证书 2021/6/7 适用于: Skype for Business Online, Lync 2013, Lync ...

  3. V-1-2 登陆ESXi服务器

    这篇介绍的是在网页端或者客户端对ESXI服务器进行操作.如需知道ESXI的安装请点击下方链接参考文章: V-1-1 Vmware桌面虚拟化环境搭建之安装ESXi 在浏览器中访问ESXI上显示的IP地址 ...

  4. vSphere虚拟化之ESXi安装及部署

    vSphere虚拟化之ESXi的安装及部署(上) 一.什么是vSphere? vSphere是VNware公司在2001年基于云计算推出的一套企业级虚拟化解决方案.核心组件为ESXi.如今,经历了5个 ...

  5. VMware vSphere 介绍、安装 服务器虚拟化部署完整配置

    一 ,VMware vSphere 什么是VMware vSphere? 为业务敏捷性释放强大,灵活且安全的基础,加速您向混合云的数字化转型.vSphere是业界领先的服务器虚拟化软件,是现代SDDC ...

  6. 服务器证书安装配置指南(Nginx)-天威诚信

    服务器证书安装配置指南(Nginx) 一.生成证书请求 您需要使用CSR生成工具来创建证书请求.    1.下载AutoCSR:   http://www.itrus.cn/soft/autocsr. ...

  7. 基于VMware vSphere 5.0的服务器虚拟化实践(9)

    基于VMware vSphere 5.0的服务器虚拟化实践(9) 2012-12-31 13:07:57 标签:虚拟化 VMware vSphere 十全十美 原创作品,允许转载,转载时请务必以超链接 ...

  8. citrix创建虚拟机服务器,在 ESXi 服务器上安装并配置 Citrix SD-WAN Center

    在 ESXi 服务器上安装并配置 Citrix SD-WAN Center April 13, 2021 贡献者: C 安装 VMware vSphere 客户端 以下是下载和安装用于创建和部署 Ci ...

  9. ca服务器证书鉴定计划,Let’s Encrypt 项目计划自动化地提供免费的 CA 证书

    Let's Encrypt Mozilla.思科.Akamai.IdenTrust.EFF 和密歇根大学研究人员联合宣布了 Let's Encrypt CA 项目,计划为网站提供免费的基本 SSL 证 ...

最新文章

  1. 嵌入式 自旋锁、互斥锁、读写锁、递归锁
  2. 计算一个二进制数中数字“1”的个数(位运算)
  3. Bottle源码阅读(3) HeaderDict
  4. 【渗透测试】一次授权的渗透测试——建议收藏
  5. aix系统32位和64位切换
  6. 如何在Dart中读取控制台输入/ stdin?
  7. php post登录跳转,php实现post跳转
  8. linux的fork语句,Linux C/C++——fork()函数基础
  9. leetcode 354. 俄罗斯套娃信封问题(dp+二分)
  10. redis——redis简介及基本交互方法
  11. Oracle 18c新特性:Schema-Only 帐号提升应用管理安全性
  12. 前端性能测试--启动时间监控数值获取方法
  13. vue.js v-if
  14. 当前时间加30分钟_男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来...
  15. java 压缩包添加文件,如何在Java中向现有zip文件添加条目?
  16. 新手android中ListView实现音乐列表
  17. DB2 8.2 9.1 9.5 9.7 下载地址(原创)
  18. 解决Win10无法安装运行SqlServer 2000
  19. Springboot 406错误
  20. 将git项目提交到其他的git仓库

热门文章

  1. X58老平台华硕P6T SE安装NVME SSD折腾记录和简单教程
  2. 什么是任务,微任务和宏任务?
  3. 软件工程文档生成工具
  4. 西天取经采访(时寒冰先生大作)
  5. SAP BW学习之基础知识篇
  6. 聊一聊期货反向跟单百科知识
  7. 计算机专业当兵退役什么工作,当兵退伍后能做什么 能干什么工作
  8. 面向对象开发方法,Coad方法、Booch方法和OMT方法及UML
  9. [BZOJ1787][Ahoi2008]Meet 紧急集合
  10. 虚拟机启动后网卡不见了