vCenter证书过期解决方法
目录
1 概述
2 详细操作步骤
2.1 检查关键的STS证书是否过期并修复
2.2 检查除STS证书外是否还有其余证书过期
2.3 续订除STS和data-encipherment以外的证书
2.4 续订data-encipherment证书
2.5 删除BACKUP_STORES certificat
3 FAQ
3.1 VMCA为关键步骤,且不可逆,执行之前注意先生成快照。
概述
vCenter内含各种证书,部分证书过期会导致登录webclient时,出现“获取身份认证程序时出错”(https://ip/ui),“no healthy upstream”(https://ip)的提示,导致无法登陆,错误代码500、400。本手册介绍证书过期问题的解决方法。


详细操作步骤
2.1 检查关键的STS证书是否过期并修复
STS 证书过期时不会触发证书到期警报。安全令牌服务(STS)证书过期时,将导致内部服务和解决方案用户无法获得有效的令牌,从而无法按预期工作在证书到期前3个月完成证书的更新及续签。
检查 vCenter Server 上 STS 证书的过期日期
(参考官方KB:https://kb.vmware.com/s/article/79248?lang=en_us)
上传检测脚本
脚本文件:

通过SCP协议将脚本问价上传至vCenter Server
以winscp工具为例,将脚本上传到新建的/tmp2目录


通过SSH协议登陆vCenter Server Appliance
输入shell,进入shell命令视图
执行chsh -s /bin/bash root,赋予root用户执行脚本权限:

执行脚本 python checksts.py

从结果得知STS没有过期。
注:如果STS过期,则执行修复脚本

,并重启服务:
service-control --stop --all
service-control --start --all
2.2 检查除STS证书外是否还有其余证书过期
完成关键的STS证书检测(和修复)后,检查其他证书到期情况
通过命令检查:
for store in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list | grep -v TRUSTED_ROOT_CRLS); do echo "[*] Store :" $store; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $store --text | grep -ie "Alias" -ie "Not After";done;

从结果得知:有多个证书已过期。
2.3 续订除STS和data-encipherment以外的证书
通过VMCA 来重新生成 vSphere 6.x 证书
启动 vSphere Certificate Manager。
对于vCenter Server 6.x Appliance:
/usr/lib/vmware-vmca/bin/certificate-manager
对于 Windows vCenter Server 6.x:
C:\Program Files\VMware\vCenter Server\vmcad\certificate-manager

选择8或4,执行功能相同
根据 VMCA 的提示,输入以下项的值:

重点项:
Enter proper value for 'Hostname' [Enter valid Fully Qualified Domain Name(FQDN), For Example : example.domain.com] :这个值要和vCenter Server的主机名一致。
Enter proper value for VMCA 'Name' : (注意:vCenter Server 6.0 U3、6.5 及更高版本将要求提供此信息,您可以在此字段中使用 vCenter Server 的 FQDN。 它将作为 VMCA 根证书的公用名) 没有配置FQDN就是用IP地址。
开始执行更新

………………………………………………

更新完成后会重启,再次用命令检查是否还有证书到期。
证书期限都正常后,访问vCenter WebClient,确认各项服务是否正常。
一般情况到此可解决问题,若不正常继续续订data-encipherment证书。
2.4 续订data-encipherment证书
参考官方KB:https://kb.vmware.com/s/article/88548?lang=en_US
续订、修复脚本

上传脚本,使用 SSH 会话连接到 vCenter Server
导航到存放脚本的 /tmp2目录:
cd /tmp2
运行chmod +x fix_encipherment_cert.sh使文件可执行。
运行./fix_encipherment_cert.sh
重新启动 VPXD 服务以使更改生效
service-control --stop vpxd
service-control --start vpxd

2.5 删除BACKUP_STORES certificat
参考KB:Clearing BACKUP_STORES certificates in the VCSA via shell script (82560)
使用下列命令检查证书:
for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli store list); do echo STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry list --store $i --text | egrep "Alias|Not After"; done
如果 STORE BACKUP_STORE 下有过期或过期证书,请继续运行上传的脚本clean_backup_stores.sh

:
将脚本上传到 VCSA 到 /tmp2/ 目录
通过运行使脚本可执行:chmod +x clean_backup_stores.sh
使用以下命令运行脚本:./clean_backup_stores.sh
注意:您可能会收到错误消息: -bash: ./clean_backup_stores.sh: /bin/bash^M: bad interpreter: No such file or directory。
如果是这样,请运行: sed -i -e 's/\r$//' clean_backup_stores.sh
使用命令 service-control --stop --all && service-control --start --all重启服务
继续“确认”和“重置为绿色”任何与证书相关的警报
3 FAQ
VMCA为关键步骤,且不可逆,执行之前注意先生成快照。
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我有一个具有一些属性的模型:attr1、attr2和attr3。我需要在不执行回调和验证的情况下更新此属性。我找到了update_column方法,但我想同时更新三个属性。我需要这样的东西:update_columns({attr1:val1,attr2:val2,attr3:val3})代替update_column(attr1,val1)update_column(attr2,val2)update_column(attr3,val3) 最佳答案 您可以使用update_columns(attr1:val1,attr2:val2
我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)