2020年5月

  在安装完VMware虚拟化以后,虚拟化系统会自带证书,对于vshpere web client来说,凡是新的WEB环境,都会提示接受自带的签名证书。并且,这些证书由VMware自带的证书颁发机构VMCA来颁发和续期。而VMCA颁发的证书用来加密VMware各组件之间通信流量,保证数据传输的安全。大部分企业的虚拟化环境,都是内部局域网,vsphere 的通信流量安全对于当前企业的其他安全(数据,网络,门户,等等)来说,可谓是不值一提。而我忽然来了性趣,想从头到尾摸摸这个vsphere的证书。百度上用遍了各种关键词,没搜到我想要的内容,要么是千篇一律的复制,要么就是复制VMware官方KB,看的我云里雾里,毫无头绪。高潮依然很远,那种欲罢不能的感觉,谁人理解。最后求助谷歌,阅篇无数,最终摸清了前后门路。一番折腾,热血沸腾的我,心也渐渐的静了下来。现在我把过程逐一记录,便于回味。

此教程基于嵌入式 Platform Services Controller(PSC)模式的 VCSA6.7 U3,ESXi 6.7 U3,Windows 2016 CA服务器。也适用于Windows Platform Services Controller模式的VCenter!且适用于vSphere 6.x系列。

一,安装配置CA服务器

1,安装Windows CA服务器,具体过程参考这里Horizon系列之替换各组件自签名SSL证书,只看第一章节即可。

2,在CA服务器上,运行对话框或者命令提示符中输入certtmpl.msc,打开证书模板控制台。

24581-2za601wvgqb.png

3,右键单击从属证书颁发机构,点击复制模板。在兼容性标签里,证书颁发机构选择Windows server 2016,证书接收人,根据自己的客户端环境选择。

92620-k3pa67at2ed.png

4,点击常规标签,输入模板显示名称:vSphere 6.x VMCA,并勾选在 Active Directory 中发布证书

28062-cnp2673h3fn.png

5,点击扩展标签,单击密钥用法,然后单击编辑。勾选数字签名证书签名CRL 签名使这个扩展成为关键扩展

90282-wjbnst9p4ig.png

6,点击安全标签,选中Authenticated UsersAdministrator,确保勾选写入注册权限

05841-9zvqtzqm83.png

7,在运行对话框或者命令提示符中输入certsrv.msc,右键单击证书模板,然后单击新建-要发布的证书模板

34467-epdk0i6rvgr.png

8,选择新建的vSphere 6.x VMCA模板。单击确定

06488-jj6hjkxkbks.png

二,配置自定义VMCA

1,通过5480或者DCUI开启VCSA的ssh访问,然后登录ssh,输入下面的命令

shell.set --enable True
shell
chsh -s /bin/bash root
mkdir /tmp/certs

启用 Bash shell:shell.set --enable True #这一步不输入也可以。
访问 Bash shell:shell
将默认的Appliance Shell更改为 Bash Shell:chsh -s /bin/bash root
生成csr文件使用的临时目录:mkdir /tmp/certs

85187-gpuiz1vs96h.png

2,输入/usr/lib/vmware-vmca/bin/certificate-manager,打开证书管理界面。

如果是Windows Platform Services Controller模式的VC,则路径为:C:\Program Files\VMware\vCenter Server\vmcad\certificate-manager,后续步骤中需要的路径,输入Windows的绝对路径即可。

93925-srj8fu0w0jf.png

3,输入2,以选择(Replace VMCA Root certificate with Custom Signing Certificate and replace all Certificates)

88142-qnzse7dq0bq.png

参数具体说明:

#输入n,然后输入VC的SSO用户名和密码
Do you wish to generate all certificates using configuration file : Option[Y/N] ? : n
Please provide valid SSO and VC privileged user credential to perform certificate operations.
Enter username [Administrator@vsphere.local]:administrator@vdi.com
Enter password:
Please configure certool.cfg with proper values before proceeding to next step.
Press Enter key to skip optional parameters or use Default value.
#这里自定义,国家,省,市,组织等信息
Enter proper value for 'Country' [Default value : US] : CN
#这里输入VC的FQDN
Enter proper value for 'Name' [Default value : CA] : vcenter.lzuvdi.com
Enter proper value for 'Organization' [Default value : VMware] : lzuvdi
Enter proper value for 'OrgUnit' [Default value : VMware Engineering] : lzuvdi
Enter proper value for 'State' [Default value : California] : gansu
Enter proper value for 'Locality' [Default value : Palo Alto] : lanzhou
#输入VC的IP
Enter proper value for 'IPAddress' (Provide comma separated values for multiple IP addresses) [optional] : 192.168.80.105
#这里自定义邮箱,格式必须是邮箱格式
Enter proper value for 'Email' [Default value : email@acme.com] : mail@lzuvdi.com
#下面两个对话都输入VC的FQDN
Enter proper value for 'Hostname' (Provide comma separated values for multiple Hostname entries) [Enter valid Fully Qualified Domain Name(FQDN), For Example : example.domain.com] : vcenter.lzuvdi.com
Enter proper value for VMCA 'Name' :vcenter.lzuvdi.com

4,输入1,以选择Generate Certificate Signing Request(s) and Key(s) for VMCA Root Signing certificate,输入第一步新建的临时目录/tmp/certs,回车,会生成csr文件,此时,停留在这个界面即可。

Windows Platform Services Controller下注意路径的书写格式,比如 D:\vmca\customssl

70856-avjiga7qmtr.png

5,用ftp工具登录VCSA,导航到证书存放的临时目录,已经生成csr和key。vmca_issued_csr.csrvmca_issued_key.key

12802-lp20twq9bg.png

6,下载vmca_issued_csr.csr到本地,并改名为vmca.csr,用记事本打开vmca.csr,全选并复制里面的内容

04851-xd1qbgdoqu.png

7,浏览器输入http://CA服务器IP/certsrv,回车,如我的:http://192.168.80.115/certsrv,输入域管理员用户名和密码,注意用户名的书写格式。

72505-sciragfnunh.png

8,点击申请证书,单击高级证书申请,在Base-64 编码的证书申请输入框中粘贴第6步复制的csr内容,证书模板选择vSphere 6.x VMCA,点击提交

35798-zzyg8n2ew1j.png

9,选择Base 64 编码,单击下载证书,保存文件名称为vmca.cer

10,返回到证书申请主页,点击下载 CA 证书、证书链或 CRL,选择Base 64,单击下载 CA 证书,保存文件名称为root.cer,用记事本打开root.cer,全选并复制里面的内容

87731-cyg9qgmbzvp.png

11,用记事本打开第9步保存的vmca.cer,在-----END CERTIFICATE-----下面粘贴上一步复制的内容,并保存

84647-3rq91zjsry6.png

三,更换VMCA证书

1,把vmca.cer上传到/tmp/certs,返回到ssh界面,输入1,以选择Continue to importing Custom certificate(s) and key(s) for VMCA Root Signing certificate

2,输入证书和key的路径,证书是我们合成的vmca.cer,key是请求生成csr文件时生成的key文件,

Please provide valid custom certificate for Root.
File : /tmp/certs/vmca.cer

Please provide valid custom key for Root.
File : /tmp/certs/vmca_issued_key.key

Windows Platform Services Controller下注意证书路径的书写格式,比如 D:\vmca\customssl\vmca.cer

44805-3vgsqgr03lb.png

3,输入y ,进行更换操作,整个更换过程,大概需要10分钟左右,在这个过程中VC无法访问,Windows Platform Services Controller模式的VC可能会更慢,需耐心等待。

47225-a8kwxsgl2on.png

4,更换成功提示

88904-vgdbb6unmm.png

5,域终端(加域客户端成员)中测试证书

浏览器中打开VC的IP地址,小绿锁出现,且状态正常

40260-oeeolhuqzmq.png

再来试试用FQDN,小绿锁出现,且状态正常

11340-ovjgsr2wgo.png

6,独立终端(独立工作组)中测试证书

提示链接不安全

02734-f06yjuhx3n7.png

试试用FQDN,一样会警告

21577-8zdraihmzff.png

这是怎么回事呢,域客户端会自动从域证书服务器中接收并安装当前环境中CA的根证书,这样,VMCA就有了归属的颁发机构,而独立工作站不会有这个根证书,如何解决,安装根证书即可。

7,在独立工作站中安装第三章节第10步保存的root.cer证书,双击打开证书,点击安装证书,选择本地计算机,单击下一步,选择将所有的证书都放入下列存储,在证书存储中选择受信任的根证书颁发机构,下一步,直至完成。

89737-yaw5uxv9zc.png

8,在浏览器中输入VC的IP

23677-p95unofx53.png

输入FQDN

89752-zweriik91hs.png

让人欣慰的小绿锁又回来了!

9,如果需要安装VC的VMCA证书,则直接安装第二章节第11步保存的vmca.cer证书即可。这里可以通过域控的GPO来给客户端安装。

编辑GPO并浏览到计算机管理--策略--Windows设置--安全设置--公钥策略-受信任的根证书颁发机构,右键单击导入。导入上面的CA证书,然后执行gpupdate /force刷新策略,域客户端重启即可。

31881-brbrnnagu4u.png

独立工作站双击CA证书,安装到受信任的根证书颁发机构即可。

这一步操作是为了让客户端用FQDN登录VCSA的5480的证书不报错,如果VC是基于Windows的,则这些操作可省略。

08329-1yq90p21y4s.png

四,VC组件证书续期

1,登录VC,打开证书管理界面

计算机 SSL 证书

64756-pgd9iurlta.png

解决方案证书

13262-cd0hp7v1lyr.png

篇幅关系,我只演示续期vsphere-webclient证书,当前证书有效期至:2022/5/7 上午11:07

38316-gycg5epfcvj.png

点击续订

44497-9tshlvfeqf.png

提示续订成功

49443-vc3ipqvcqf.png

五,ESXi主机证书续期

1,在VC管理界面,右键单击主机,选择证书,点击续订证书,有可能会报如下错误

44347-35hun0ty5fe.png

2,点击VC的FQDN名称,单击设置,点击高级设置,单击编辑设置,搜索vpxd.certmgmt.certs.minutesBefore,把值1440改为10,然后保存。

43461-o6jgsnuklz.png

根据第1步操作,依次为集群内所有主机续订证书,续期后的证书状态

04657-9idrm4wrjqw.png

3,登录ESXi主机测试证书,证书正常

79698-hpc6monlufi.png

因为这个证书没有ESXi主机的IP信息,所以用IP登录还是会提示证书不可信。如果想用IP登录,那么VC中加入主机的时候就要用IP。

92573-pcsin3cl21r.png

参考链接:

https://kb.vmware.com/articleview?docid=2111219&lang=zh_CN
https://kb.vmware.com/s/article/2112009
https://kb.vmware.com/s/article/2112016
https://kb.vmware.com/s/article/2107727
https://kb.vmware.com/s/article/2123386
https://communities.vmware.com/thread/613940

  NIC Teaming是指将服务器上的几个网络端口组合在一起,无论是基于Windows的服务器,Linux服务器,还是VMware vSphere ESXi主机,做网卡绑定的主要目都是为了增加链路带宽、实现冗余以及实现负载均衡。在VMware vSphere环境中,通过NIC Teaming可以在所有成员之间实现共享物理和虚拟网络之间的流量负载,并可在发生硬件故障或网络中断时提供被动故障转移。要使用网卡绑定,必须将两个或多个网络适配器上行链接到虚拟交换机。

此文转载自Kclouder

NIC Teaming的主要优点包括:
● 为托管的虚拟交换机提高网络容量。
● 网络冗余。当Teaming中的某个适配器发生故障时,可进行被动故障切换。服务器将能够幸免于网卡故障或链接故障,并继续通过流量。
● 负载平衡。服务器将能够通过多个网卡传输流量。不会因为某个服务器繁忙或者某个网络接口流量拥堵而影响虚拟机运行。

vSphere中所有三种类型的网络都支持NIC Teaming,包括VMKernel、Service Console和Port Group。Uplink连接到物理交换机的端口必须在同一个广播域中,也就是必须在同一个VLAN中,不能跨路由。如果Uplink要配置VLAN,则每个Uplink必须都配置成VLAN Trunk并且具有相同的VLAN配置。另外,VMware的负载均衡只是出站方向的负载均衡(Outbound Load Balancing)。VMware NIC Teaming的Load Balancing和路由算法中的Load Balancing不同,它不是按照Teaming中网卡通过的数据流量来做负载均衡的,而是根据网卡上的连接来进行负载均衡。

负载均衡的分类:
VMWare NIC Teaming的负载均衡有以下几种:

●  基于IP哈希的路由
●  基于源MAC哈希的路由
●  基于源虚拟端口ID的路由  默认选项
●  使用明确故障切换顺序
●  基于物理NIC负载的路由,采用分布式虚拟交换机时的选项

15527-x3semk8e6ls.png

使用明确故障切换顺序

首先,我们来看一下:使用明确故障切换顺序,这个是在标准虚拟交换机(Standard vSwitch)中最简单的一个故障转移选项,即使用明确的故障转移顺序。使用此选项,不执行任何负载平衡,vSphere将首先使用活动列表中的第一个适配器(VMNIC)进行流量传输,如果此适配器失败,则将流量切换到备用的适配器上。这种方法配置最简单,但同时也不会提供任何的高级功能,也不支持负载均衡。通这这种故障切换的方法可以实现Port Group的冗余,比如对于管理网络的Potr Group,可以使用vmnic1作为活动端口,vmnic2作为备用端口。而对于vMotion端口组,则可以使用vmnic2作为活动端口,vmnic1作为备用端口。这样,如果一个NIC或link失败,仍然可以在ESXi主机上同时运行管理和vMotion流量。

71907-9uk4j1gwoyd.png

基于源虚拟端口ID的路由

默认的负载平衡算法称为“基于源虚拟端口ID的路由”,这种模式下VMware vSphere将把虚拟机的虚拟端口按顺序分配给每一个上行链路,如下图所示,VM A连接到上行链路1,VM B连接到上行链路2,VM C再次连接到上行链路1,VM D再次连接到上行链路2,如此循环,如果新创建一个VM E,它就会连接到上行链路1。使用这种模式可以将虚拟机平均的分配到上行链路上。

29275-wm2jrzfyrvr.png

基于IP哈希的路由

基于IP哈希负载均衡算法的路由是最复杂的。需要在VMware vSphere环境之外进行额外的配置。在这种模式下,负载均衡的实现是根据源IP地址和目的地IP地址的,因此同一台VM(源IP地址是固定的)到不同目的地的数据流量就会因为目的地IP地址的不同,而走不同的上行链路,也只有在这种模式下,虚拟机对外的流量的负载均衡才能够真正的实现。注意,VMware是不关心对端物理交换机的配置的,VMware的负载均衡只负责从ESXi主机出站的流量,因此要做到Inbound的负载均衡,必须在物理交换机上做同样的IP Hash配置,此时,上行链路必须连接到同一个物理交换机上。需要注意的是,VMware不支持动态链路聚合协议(例如802.3ad LACP或者Cisco的PAgP),因此只能实现静态的链路聚合。不仅如此,对端的交换机设置静态链路聚合的时候也要设置成IP Hash的算法。否则这种方式的负载均衡将无法实现。 比如Cisco交换机上的默认Etherchannel的算法是源MAC,因此需要将其修改成源和目的IP。IP哈希通过源IP和目标IP的最后八位完成,这个运作法则叫作XOR。在执行完XOR之后,在XOR的运作结果和Teaming的网卡数量之间执行另一个称为modulo或mod的计算。由于Teaming中的NIC从0开始,所以最终结果总是介于0和N-1之间。
VMware KB: ESXi和交换机的EtherChannel/链路聚合控制协议 (LACP) 的配置示例

18349-43apos80xsn.png

基于源MAC哈希的路由

这种方式下,负载均衡的实现是基于源MAC地址的。因为每个vNIC总是具有一个固定的MAC地址,因此这种方式的负载均衡同基于端口的负载均衡具有同样的缺点。同样是要求vPort数量大于pNIC的时候才会有效。同样是vNIC的速率不会大于单个pNIC的速率。与基于IP哈希的路由类似,基于源MAC哈希的路由计算每个包的上行链路。 与基于IP哈希的路由不同的是,基于源MAC哈希的路由不需要VMware vSphere环境之外的任何额外配置。 同样,基于源MAC的哈希算法使用虚拟机的MAC地址和NIC Teaming中的上行链路数量之间执行mod来计算应该使用哪个上行链路。

基于源MAC哈希的路由与基于IP哈希的路由具有相似的优点。由于我们在vSwitch中使用的是MAC地址和上行链路的数量,因此从这些负载平衡算法的使用中获益最多的虚拟机是那些具有多个虚拟nic的虚拟机。由于只需要进行一个数学运算来确定要使用的vSwitch上行链路,因此它的开销确实比基于IP哈希的路由要小,但比其他负载平衡机制要大。

40462-x79zbmuto3.png

基于物理NIC负载的路由

正如我们前面提到的,在使用分布式虚拟交换机时有一个额外的负载平衡算法,称为“基于物理NIC负载的路由”,通常称为LBT。使用分布式虚拟交换机时,可以使用基于负载的Teaming。它也非常简单,因为它采用和默认负载平衡算法相同的方式开始工作。如果一个上行端口在30秒内达到75%的利用率,繁忙的VM将被移动到另一个上行端口。虽然使用基于负载的Teaming确实需要在虚拟交换机上进行最少的配置(只需选择“基于phyiscal NIC负载的路由”),但它仍然非常简单,因为它提供了负载平衡,不需要配置任何上游组件。一旦它被选中,虚拟机将在上行端口之间均衡,如果它们很忙,VM将被移动到另一个上行端口。基于负载的Teaming以及基于源虚拟端口的路由是VMware中最简单的NIC Teaming方法,因为它们不需要任何额外的配置。流量将在NIC之间得到平衡。

24557-247djhqpf1l.png