【原创】修复vCenter的Web界面无法启动的问题

零 出现的问题

在使用过程中,发现vCenter无法登录,报错。
因此重新启动vCenter,打开Web,先是报“no healthy upstream”,等了二十分钟后错误依旧。
再次重启vCenter,打开Web,还是报同样的错误。

登录vCenter Server后台管理界后,发现有一些服务没启动起来,其中包括“VMware vCenter Server”也没启动起来。

根据错误信息“no healthy upstream”在网上搜答案,结果基本上没说到点上的。
无奈,请求VMware技术支持。

一 客服支持

接待我的时Dell的工程师,使用Zoom远程控制我的桌面,期间进行语音通话。

1、检查 dns 服务配置,包括正向解析和反向解析。

nslookup vcsa.my8421.com
nslookup 192.168.250.88

2、检查磁盘使用

df -h

3、检查证书

技术工程师传来一个python脚本,“checksts.py”
脚本内容如下:

#!/opt/vmware/bin/python"""
Copyright 2020-2022 VMware, Inc.  All rights reserved. -- VMware Confidential
Author:  Keenan Matheny (keenanm@vmware.com)"""
##### BEGIN IMPORTS #####import os
import sys
import json
import subprocess
import re
import pprint
import ssl
from datetime import datetime, timedelta
import textwrap
from codecs import encode, decode
import subprocess
from time import sleep
try:# Python 3 hack.import urllib.request as urllib2import urllib.parse as urlparse
except ImportError:import urllib2import urlparsesys.path.append(os.environ['VMWARE_PYTHON_PATH'])
from cis.defaults import def_by_os
sys.path.append(os.path.join(os.environ['VMWARE_CIS_HOME'],def_by_os('vmware-vmafd/lib64', 'vmafdd')))
import vmafd
from OpenSSL.crypto import (load_certificate, dump_privatekey, dump_certificate, X509, X509Name, PKey)
from OpenSSL.crypto import (TYPE_DSA, TYPE_RSA, FILETYPE_PEM, FILETYPE_ASN1 )today = datetime.now()
today = today.strftime("%d-%m-%Y")vcsa_kblink = "https://kb.vmware.com/s/article/76719"
win_kblink = "https://kb.vmware.com/s/article/79263"##### END IMPORTS #####class parseCert( object ):# Certificate parsingdef format_subject_issuer(self, x509name): items = []for item in x509name.get_components():items.append('%s=%s' %  (decode(item[0],'utf-8'), decode(item[1],'utf-8')))return ", ".join(items)def format_asn1_date(self, d):return datetime.strptime(decode(d,'utf-8'), '%Y%m%d%H%M%SZ').strftime("%Y-%m-%d %H:%M:%S GMT")def merge_cert(self, extensions, certificate):z = certificate.copy()z.update(extensions)return zdef __init__(self, certdata):built_cert = certdataself.x509 = load_certificate(FILETYPE_PEM, built_cert)keytype = self.x509.get_pubkey().type()keytype_list = {TYPE_RSA:'rsaEncryption', TYPE_DSA:'dsaEncryption', 408:'id-ecPublicKey'}extension_list = ["extendedKeyUsage","keyUsage","subjectAltName","subjectKeyIdentifier","authorityKeyIdentifier"]key_type_str = keytype_list[keytype] if keytype in keytype_list else 'other'certificate = {}extension = {}for i in range(self.x509.get_extension_count()):critical = 'critical' if self.x509.get_extension(i).get_critical() else ''if decode(self.x509.get_extension(i).get_short_name(),'utf-8') in extension_list:extension[decode(self.x509.get_extension(i).get_short_name(),'utf-8')] = self.x509.get_extension(i).__str__()certificate = {'Thumbprint': decode(self.x509.digest('sha1'),'utf-8'), 'Version': self.x509.get_version(),'SignatureAlg' : decode(self.x509.get_signature_algorithm(),'utf-8'), 'Issuer' :self.format_subject_issuer(self.x509.get_issuer()), 'Valid From' : self.format_asn1_date(self.x509.get_notBefore()), 'Valid Until' : self.format_asn1_date(self.x509.get_notAfter()),'Subject' : self.format_subject_issuer(self.x509.get_subject())}combined = self.merge_cert(extension,certificate)cert_output = json.dumps(combined)self.subjectAltName = combined.get('subjectAltName')self.subject = combined.get('Subject')self.validfrom = combined.get('Valid From')self.validuntil = combined.get('Valid Until')self.thumbprint = combined.get('Thumbprint')self.subjectkey = combined.get('subjectKeyIdentifier')self.authkey = combined.get('authorityKeyIdentifier')self.combined = combinedclass parseSts( object ):def __init__(self):self.processed = []self.results = {}self.results['expired'] = {}self.results['expired']['root'] = []self.results['expired']['leaf'] = []self.results['valid'] = {}self.results['valid']['root'] = []self.results['valid']['leaf'] = []def get_certs(self,force_refresh):urllib2.getproxies = lambda: {}vmafd_client = vmafd.client('localhost')domain_name = vmafd_client.GetDomainName()dc_name = vmafd_client.GetAffinitizedDC(domain_name, force_refresh)if vmafd_client.GetPNID() == dc_name:url = ('http://localhost:7080/idm/tenant/%s/certificates?scope=TENANT'% domain_name)else:url = ('https://%s/idm/tenant/%s/certificates?scope=TENANT'% (dc_name,domain_name))return json.loads(urllib2.urlopen(url).read().decode('utf-8'))def check_cert(self,certificate):cert = parseCert(certificate)certdetail = cert.combined#  Attempt to identify what type of certificate it isif cert.authkey:cert_type = "leaf"else:cert_type = "root"#  Try to only process a cert onceif cert.thumbprint not in self.processed:# Date conversionself.processed.append(cert.thumbprint)exp = cert.validuntil.split()[0]conv_exp = datetime.strptime(exp, '%Y-%m-%d')exp = datetime.strftime(conv_exp, '%d-%m-%Y')now = datetime.strptime(today, '%d-%m-%Y')exp_date = datetime.strptime(exp, '%d-%m-%Y')# Get number of days until it expiresdiff = exp_date - nowcertdetail['daysUntil'] = diff.days# Sort expired certs into leafs and roots, put the rest in goodcerts.if exp_date <= now:self.results['expired'][cert_type].append(certdetail)else:self.results['valid'][cert_type].append(certdetail)def execute(self):json = self.get_certs(force_refresh=False)for item in json:for certificate in item['certificates']:self.check_cert(certificate['encoded'])return self.resultsdef main():warning = Falsewarningmsg = '''WARNING! You have expired STS certificates.  Please follow the KB corresponding to your OS:VCSA:  %sWindows:  %s''' % (vcsa_kblink, win_kblink)parse_sts = parseSts()results = parse_sts.execute()valid_count = len(results['valid']['leaf']) + len(results['valid']['root'])expired_count = len(results['expired']['leaf']) + len(results['expired']['root'])#### Display Valid ####print("\n%s VALID CERTS\n================" % valid_count)print("\n\tLEAF CERTS:\n")if len(results['valid']['leaf']) > 0:for cert in results['valid']['leaf']:print("\t[] Certificate %s will expire in %s days (%s years)." % (cert['Thumbprint'], cert['daysUntil'], round(cert['daysUntil']/365)))else:print("\tNone")print("\n\tROOT CERTS:\n")if len(results['valid']['root']) > 0:for cert in results['valid']['root']:print("\t[] Certificate %s will expire in %s days (%s years)." % (cert['Thumbprint'], cert['daysUntil'], round(cert['daysUntil']/365)))else:print("\tNone")#### Display expired ####print("\n%s EXPIRED CERTS\n================" % expired_count)print("\n\tLEAF CERTS:\n")if len(results['expired']['leaf']) > 0:for cert in results['expired']['leaf']:print("\t[] Certificate: %s expired on %s!" % (cert.get('Thumbprint'),cert.get('Valid Until')))continueelse:print("\tNone")print("\n\tROOT CERTS:\n")if len(results['expired']['root']) > 0:for cert in results['expired']['root']:print("\t[] Certificate: %s expired on %s!" % (cert.get('Thumbprint'),cert.get('Valid Until')))continueelse:print("\tNone")if expired_count > 0:print(warningmsg)if __name__ == '__main__':exit(main())

执行脚本

python checksts.py
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

这里发现证书过期了。证书有效期两年,过期前可以通话Web界面续订。现在已经过期,只有重置证书了。

4、重置证书

/usr/lib/vmware-vmca/bin/certificate-manager

接下来,填写一堆东西,很多都是默认。特别注意登录账户、密码要填对。

5、重启vCenter

reboot

6、删除旧证书

这里使用了一个技术工程师传来的一个脚本,名称为“clean_backup_stores.sh”。
加上执行权限后,执行

#!/bin/bash#Cesar Badilla Monday, November 16, 2020 10:41:17 PM echo "######################################################"
echo;echo "These are the current Certificate Stores:";echofor 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; 
echo;echo "If there is any expired or expiring Certificates within the BACKUP_STORES please continue to run this script";echo "######################################################";echo read -p "Have you taken powered off snapshots of all PSC's and VCSA's within the SSO domain(Y|y|N|n)" -n 1 -rif [[ ! $REPLY =~ ^[Yy]$ ]]then exit 1fi
echofor i in $(/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store BACKUP_STORE |grep -i "alias" | cut -d ":" -f2);do echo BACKUP_STORE $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store BACKUP_STORE --alias $i -y; done 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 | grep -i 'BACKUP_STORE_H5C'&> /dev/nullif [ $? == 0 ]; then for i in $(/usr/lib/vmware-vmafd/bin/vecs-cli entry list --store BACKUP_STORE_H5C |grep -i "alias" | cut -d ":" -f2); do echo BACKUP_STORE_H5C $i; /usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store BACKUP_STORE_H5C --alias $i -y; doneecho 
echo "--------------------------------------------------------";
fiecho "######################################################";
echo;echo "The resulting BACKUP_STORES after the cleanups are: ";echofor 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"; doneecho "######################################################";echo "--------------------------------------------------------"; echo "--------------------------------------------------------";
echo "Results: ";
echo "--------------------------------------------------------"; echo "--------------------------------------------------------";
echo;echo "The Certificate BACKUP_STORES were successfully cleaned";echo;
echo "Please acknowlege and reset to green any certificate related alarm."
echo "Restart services on all PSC's and VCSA's in the SSO Domain with command.";echo;echo "service-control --stop --all && service-control --start --all(optional)."
echo "--------------------------------------------------------";
echo;echo "If you could not restart the services, please monitor
the VCSA for 24 hours and the alarm should not reappear 
after the acknowlegement."
echo;echo "######################################################"

7、验证

登录vCenter,一切恢复正常。

二、总结

证书有效期两年,两年内,续订;超过两年,重置。
另外,技术工程师操作的比较谨慎,在处理之前,先通过ESXi对 vCenter做了一个快照。配置完成后,检查没问题后,才把这个快照删了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/119887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux - firewall-cmd 命令添加端口规则不生效排查

文章目录 linux 防火墙 firewall-cmd 命令详解问题排查 linux 防火墙 firewall-cmd 命令详解 基本语法 firewall-cmd --zonezone-name --add-serviceservice-name --permanent命令参数 --zone&#xff1a;指定要添加服务的区域名称。 --add-service&#xff1a;指定要添加的…

Apache ActiveMQ RCE漏洞复现(CNVD-2023-69477)

0x01 产品简介 ActiveMQ是一个开源的消息代理和集成模式服务器&#xff0c;它支持Java消息服务(JMS) API。它是Apache Software Foundation下的一个项目&#xff0c;用于实现消息中间件&#xff0c;帮助不同的应用程序或系统之间进行通信。 0x02 漏洞概述 Apache ActiveMQ 中存…

【概率论教程01】对贝叶斯定理的追忆

一、说明 贝叶斯定理&#xff0c;是一个需要反复体悟的道理&#xff0c;不是说公式解释清除就算Grasp&#xff0c;而是需要反复在实际项目中发挥&#xff0c;才能算掌握了。而实际应用中&#xff0c;并不是简单给出条件就可以套用&#xff0c;而是隐藏在迷雾一样的事实中&#…

基于Springboot自习预约管理系统

功能介绍&#xff1a; 基于Springboot自习预约管理系统。该系统为后台管理系统&#xff0c;无前台。主要角色有&#xff1a;管理员和学生。 主要功能&#xff1a; 学生信息管理&#xff1a;学号、姓名、专业、班级、年级、联系方式 教室信息管理&#xff1a;教室、教室号、楼…

利用Linux socat快速搭建TCP服务器

某些场合&#xff0c;需要在Linux上快速搭建一个TCP的服务器&#xff0c;接收客户端的连接&#xff0c;返回一些数据。 一般用于测试或者负载不大&#xff0c;安全性要求不高的场合&#xff0c;达到快速搭建的目的。 本文以客户端通过服务器的3334端口&#xff0c;获取服务器…

BIOS MBR UEFI GPT详解

先来看下名词 启动方式&#xff1a; Legacy&#xff1a;传统的。指的就是BIOS。 BIOS&#xff1a;Basic Input Output System&#xff0c;中文名称"基本输入输出系统"。 UEFI&#xff1a;Unified Extensible Firmware Interface&#xff0c;中文名称"统一的…

在 .NET 8 Release Candidate 2 中宣布 .NET MAUI:更高质量

作者&#xff1a;David Ortinau 排版&#xff1a;Alan Wang 随着 .NET 8 候选版本 2&#xff08;RC2&#xff09;中 .NET MAUI 的发布&#xff0c;我们距离 .NET 8 通用版&#xff08;GA&#xff09;又近了一步。与 RC1 一样&#xff0c;此版本包含上线许可证&#xff0c;因此您…

常见面试题-MySQL专栏(一)

为什么 mysql 删了行记录&#xff0c;反而磁盘空间没有减少&#xff1f; 答&#xff1a; 在 mysql 中&#xff0c;当使用 delete 删除数据时&#xff0c;mysql 会将删除的数据标记为已删除&#xff0c;但是并不去磁盘上真正进行删除&#xff0c;而是在需要使用这片存储空间时&…

Linux命令(105)之readlink

linux命令之readlink 1.readlink介绍 linux命令readlink是用来查看软链接的源文件在哪 2.readlink用法 readlink [参数] filename readlink参数 参数说明-f递归给出文件名的所有符号链接以标准-e递归给出文件名的所有符号链接以标准化-n不输出尾随的新行-s缩减大多数的错误…

0031【Edabit ★☆☆☆☆☆】【使用箭头函数】Using Arrow Functions

0031【Edabit ★☆☆☆☆☆】【使用箭头函数】Using Arrow Functions data_structures language_fundamentals Instructions Create a function that returns the given argument, but by using an arrow function. An arrow function is constructed like so: arrowFunc(/*p…

【哈士奇赠书活动 - 44期】- 〖从零基础到精通Flutter开发〗

文章目录 ⭐️ 赠书 - 《从零基础到精通Flutter开发》⭐️ 内容简介⭐️ 作者简介⭐️ 编辑推荐⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - 《从零基础到精通Flutter开发》 ⭐️ 内容简介 本书由浅入深地带领读者进入Flutter开发的世界&#xff0c;从Flutter的起源讲起&#xff0c…

【RV1106/RV1103】RV1103增加RTL8723BS

文章目录 Kernel 部分支持配置 menuconfigWiFi 功能支持Bluetooth 功能支持 原SDK的Busybox配置BT 部分文件系统部分蓝牙测试dbus 安装测试遇到的问题让hci0出来 使用hcitool来操作 Kernel 部分支持 配置 menuconfig WiFi 功能支持 Bluetooth 功能支持 正基和海华的模块都使用…

JAVA加密解密工具

JAVA加密解密工具 import lombok.extern.slf4j.Slf4j; import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;/*** author 孙永潮* date 2022/10/26*/ Slf4j public class JasyptUtil {/*** Jasypt生成…

Hafnium安全分区管理器和示例参考软件栈

安全之安全(security)博客目录导读 目录 一、安全分区管理器 1、术语 2、对旧平台的支持 二、示例参考软件栈 一、安全分区管理器 安全分区管理器的三种实现在TF-A代码库并存&#xff1a; 1.基于FF-A规范的S-EL2 SPMC&#xff08;SPM Core&#xff09;&#xff0c;使能安全…

搜维尔科技:Geomagic Touch X力反馈设备【开箱图真机测试】

将力反馈性能提升到一个新的水平&#xff0c;可提供更精确的定位输入和高保真力反馈输出。对于3D建模和设计、手术培训、虚拟装配等要求精确度较高的多种操作&#xff0c;TouchX是一个易于使用、经济实惠的选择。 Touch X 的功能 屡获殊荣的 Touch X 力反馈设备提供了经济实惠…

【OpenCV实现平滑图像处理】

文章目录 概要2D 卷积&#xff08;图像过滤&#xff09;模糊图像&#xff08;平滑图像&#xff09;中值模糊双边过滤小结 概要 在图像处理中&#xff0c;低通滤波器是一种常用的技术&#xff0c;用于平滑、模糊或降低图像的噪音。这种滤波器通过去除图像中高频部分&#xff08…

Unity之ShaderGraph如何实现冰冻效果

前言 今天我们来实现一个冰冻的效果,非常的炫酷哦。 如下图所示: 主要节点 Voronoi:根据输入UV生成 Voronoi 或Worley噪声。Voronoi 噪声是通过计算像素和点阵之间的距离生成的。通过由输入角度偏移控制的伪随机数偏移这些点,可以生成细胞簇。这些单元的规模以及产生的…

垃圾回收系统小程序

在当今社会&#xff0c;废品回收不仅有利于环境保护&#xff0c;也有利于资源的再利用。随着互联网技术的发展&#xff0c;个人废品回收也可以通过小程序来实现。本文将介绍如何使用乔拓云网制作个人废品回收小程序。 1. 找一个合适的第三方制作平台/工具&#xff0c;比如乔拓云…

非侵入式负荷检测与分解:电力数据挖掘新视角

电力数据挖掘 概述案例背景分析目标分析过程数据准备数据探索缺失值处理 属性构造设备数据周波数据模型训练 性能度量推荐阅读 主页传送门&#xff1a;&#x1f4c0; 传送 概述 摘要&#xff1a;本案例将根据已收集到的电力数据&#xff0c;深度挖掘各电力设备的电流、电压和功…

非小米笔记本小米妙享中心安装最新教程 3.2.0.464 兼容所有Windows系统

小米妙享中心 3.2.0.464 版本帮助 : 支持音频流转、屏幕镜像、屏幕拓展、键鼠拓展、无线耳机、小米互传 目录 小米妙享中心 3.2.0.464 版本帮助 : 1.常规教程使用安装包方式安装失败 或者 1.1安装失败可使用大佬的加载补丁方法解决 补充卸载残留 1.2 截图存档 2. 本教程…