获取 ESXi 服务器证书及 thumbprint 的三种方式
来源:互联网 发布:百度人工智能平台接入 编辑:程序博客网 时间:2024/06/05 18:45
连接 vddk 服务时需要提供 thumbprint 参数才能成功连接,否则报错:
Log: 2017-11-23 10:23:04VixDiskLib: A thumbprint is required for SSL certificate validation. vixDiskLib.c line 2561Log: 2017-11-23 10:23:04VixDiskLib: VixDiskLib_Connect: Failed to allocate connection. Error 3 (One of the parameters was invalid) at 4039.Thrift: Thu Nov 23 10:23:04 2017 [ERROR] task->run() raised an unknown exception
或者如果提供的 thumbprint 不正确:
Unable to verify the authenticity of the specified host. The SHA1 thumbprint of the cerificate is:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
下面提供获取 thumbprint 字符串的三种方式,其中前两种获取的是主机证书,需间接生成相应的 thumbprint。
1. 直接使用 URL 方式获取证书
在浏览器地址栏直接输入如下的 URL,回车后会弹出 ESXi 服务器用户名、密码提示框,成功验证后,会在浏览器界面输出主机证书。
https://192.168.1.xxx/host/ssl_cert
-----BEGIN CERTIFICATE-----MIID8jCCAtqgAwIBAgIHAKlNwVk6VDANBgkqhkiG9w0BAQsFADAbMRkwFwYDVQQKExBWTXdhcmUgSW5zdGFsbGVyMB4XDTE3MDYwMjA3MDAxNFoXDTI4MTIwMTA3MDAxNFowgfoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlQYWxvIEFsdG8xFDASBgNVBAoTC1ZNd2FyZSwgSW5jMS4wLAYDVQQLEyVWTXdhcmUgRVNYIFNlcnZlciBEZWZhdWx0IENlcnRpZmljYXRlMSowKAYJKoZIhvcNAQkBFhtzc2wtY2VydGlmaWNhdGVzQHZtd2FyZS5jb20xHjAcBgNVBAMTFWxvY2FsaG9zdC5sb2NhbGRvbWFpbjEwMC4GCSqGSIb3DQEJAhMhMTQ5NjM4NjgxNCw1NjRkNzc2MTcyNjUyMDQ5NmU2MzJlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqyEZkKgZDfj04z3NLmQOuX4OAbbNHZYztU1Hp0C53fPS66cLVBvn0nKuk4PvNIZl5dYcPBR+ifFrynM3z4dA7GXvHtCmSXnhdO7tyF8YxQkAHC4NcmKUcpwQ7B3lDtMfeDO86IcX1nAMLjHXRDDppQOZAQg33SWne9uEbFPKTLZuvplhbE4JbBmRjdn39XfGi2cL/QIN9XvxGmJluPI9DPlD3ijC83SgARRq8euL8ZSQiJRniy+iRnbxw6pMdR0Kac+dqC13UBabVtFaveZdHY27w7foetG4weLqfx/9Qosl3re7cOKiLez/IQXHjo+iqs/a63HXf5tSE4CevEE3IwIDAQABo1swWTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwIAYDVR0RBBkwF4IVbG9jYWxob3N0LmxvY2FsZG9tYWluMA0GCSqGSIb3DQEBCwUAA4IBAQBlUL1d71h3S8DPTpz0FnfWlMd2dtuqnRtGvQz09nhCwQ2AUJv5mgcM34SuVM2HwyVl7MQwBc2s3dZggz+G6q5btKF9BQrheDxgfzKQrEO3mY11jh7+HREIR2usfoI5IPAoSBsmy/zbtkvr2RZAjf/DTCW4uuIF0v0uU7V5Y5oFqetRH4yM3euPzWfaxEEeBxVV/UqiZyw306oon7C4JobuZH2Ht5kklunG9jMmigDLjAXoyXMP/eWRHc9p4pMUfypI8Pdz2l9mS+oCabcdefffffdfdf2SkBj6Wf4+NPIe3OzL42YqCtK7YY+EW1GBZGAia6aYYa1hpTB/5341zp9DyZ-----END CERTIFICATE-----
有了 certificate,可以通过下面的第三中命令行(如 keytool)方法,或者编程生成 thumbprint,参考 stackoverflow 的 这篇 Q&A ,其代码如下:
import javax.xml.bind.DatatypeConverter;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.cert.CertificateEncodingException;import java.security.cert.CertificateException;import java.security.cert.CertificateFactory;import java.security.cert.X509Certificate;public final class X509 { public static void main(String[] args) throws FileNotFoundException, CertificateException, NoSuchAlgorithmException { FileInputStream is = new FileInputStream(args[0]); CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate) certificateFactory.generateCertificate(is); String thumbprint = getThumbprint(cert); System.out.println(thumbprint); } private static String getThumbprint(X509Certificate cert) throws NoSuchAlgorithmException, CertificateEncodingException { MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] der = cert.getEncoded(); md.update(der); byte[] digest = md.digest(); String digestHex = DatatypeConverter.printHexBinary(digest); return digestHex.toLowerCase(); } }
2. 根据 MOB/vSphere APIs 获取证书
使用 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 是一个十进制的字节数组,不像第一种方法获取的值那么直观,但可以将该数组转为第一种方法的那种形式,详见另篇根据 MOB/vSphere APIs 获取 ESXi 服务器证书。
3. 通过 SSH 使用 OpenSSL 命令
通过 SSH 连接到 ESXi 服务器(内核为 linux),使用 OpenSSL 命令获取 thumbprint,在服务器的 /etc/vmware/ssl/rui.crt 文件中包含了与第一种方法所获取的一样的内容。获取命令如下:
# openssl x509 -sha1 -in /etc/vmware/ssl/rui.crt -noout -fingerprintSHA1 Fingerprint=EA:19:C4:B3:78:2E:1E:39:E7:4E:C4:CE:69:39:79:AC:CF:E5:A7:99
另外,如果只需要获取值,尤其是在程序中执行命令获取时,不想要“ SHA1 Fingerprint=”这些字符,可以用如下的截取命令:
# openssl x509 -sha1 -in /etc/vmware/ssl/rui.crt -noout -fingerprint | cut -d '=' -f 2EA:19:C4:B3:78:2E:1E:39:E7:4E:C4:CE:69:39:79:AC:CF:E5:A7:99
参考:
Three Ways to Get Certificate and Thumbprint from ESXi
- 获取 ESXi 服务器证书及 thumbprint 的三种方式
- 获取 ESXi 服务器 thumbprint
- 根据 MOB/vSphere APIs 获取 ESXi 服务器证书
- VMware ESXi Vlan的三种实现方式
- 三种获取字节码对象的方式及区别
- Android签名证书的获取方式
- EXT提交服务器的三种方式
- EXT提交服务器的三种方式
- ExtJS提交服务器的三种方式
- 并发服务器的三种实现方式
- 获取服务器证书
- Vsphere中ESXi主机ssh开启的三种方法
- Vsphere中ESXi主机ssh开启的三种方法
- Vsphere中ESXi主机ssh开启的三种方法
- 获取class实例的三种方式
- android获取当前位置的三种方式 .
- 获取Class对象的三种方式
- 获取XMLHttpRequest 的三种方式
- 小波变换教程(十七)
- Ubuntu17.10安装后
- 单词统计时遇到的问题20171122
- 小波变换教程(十八)
- Android:百度地图定位,完整代码奉上
- 获取 ESXi 服务器证书及 thumbprint 的三种方式
- 二叉树的周游
- c++日期类的实现(基础篇)
- springmvc的接参与传参
- 171122—数组程序练习(排序并输出下标&两个数组按顺序排成一个)
- 文档总结18-C语言中的函数
- Android入门基础:从这里开始
- DELPHI中不同类型的动态数组变量共享内存
- vim基础学习