如何多种方法解决VMware vCenter升级显示不受信任的 URL报错问题

VMware vCenter升级显示不受信任URL报错解决

哈喽大家好,欢迎来到虚拟化时代君(XNHCYL),收不到通知请将我点击星标!   大家好,我是虚拟化时代君,一位潜心于互联网的技术宅男。这里每天为你分享各种你感兴趣的技术、教程、软件、资源、福利…(每天更新不间断,福利不见不散)

图片

文 章 引 言

新年新气象,大家元旦快乐!开启打螺丝模式,继续技术文章的分享。

今天在给客户升级VMware vCenter时候遇到了奇怪的问题,客户环境是VCSA 7.x 升级到 8.x。记录下解决的过程和思路。

故障现象描述

在将 VCSA 7.x 升级到 8.x 的升级中,显示不信任一个或多个 URL,就像证书已过期一样。

图片

这个错误其实很少见,小编这么多年遇到也是寥寥无几。但是还好有VMware的KB库有相关案例:

  • https://knowledge.broadcom.com/external/article?legacyId=93526

eam-utility.py脚本

脚本内容,脚本是从官方KB中获取,可自行下载!下载完成之后通过SSH上传到vCenter中。

    #!/usr/bin/python -B##########################################################################   Copyright 2023 VMware, Inc.  All rights reserved. VMware Confidential########################################################################## NOTE: on linux/photon machines execute this file directly# ----- on windows distribution execute with ""%VMWARE_PYTHON_BIN%" -B%" prefixfrom argparse import ArgumentParserfrom contextlib import closingfrom datetime import datetime, timedelta, tzinfotry:   inFnc = raw_inputexcept:   inFnc = inputfrom json import load, dumpfrom logging import DEBUG, Formatter, Logger, StreamHandlerfrom os import chmod, environfrom os.path import exists, joinfrom stat import S_IREAD, S_IWRITE, S_IRUSR, S_IWUSR, S_IRGRP, S_IROTHfrom socket import create_connectionfrom ssl import CERT_NONE, create_default_context, DER_cert_to_PEM_cert, Purposefrom sys import platform, stdouttry:   from urllib.parse import urlparseexcept:   from urlparse import urlparse
    _IS_WINDOWS = platform.lower().startswith('win')
    _VMWARE_CFG_ENV = 'VMWARE_CFG_DIR'
    _TRUST_FILE = (   join(environ.get(_VMWARE_CFG_ENV), 'vmware-eam''depot-trust.json')   if _IS_WINDOWS else   '/etc/vmware-eam/depot-trust.json')
    _INSTALL_TEXT = (   'pins an URL\'s leaf certificate in ESX Agent Manager trust store')_UNINSTALL_TEXT = (   'unpins any known certificate for an URL from ESX Agent Manager\'s' +   ' trust store')_DISABLE_TEXT = (   'allows, ESX Agent Manager, access to an URL without establishing' +   ' trust')_ENABLE_TEXT = (   'removes permission to access an URL without establishing trust' +   ' from ESX Agent Manager')_CLEAR_TEXT = 'clears configured ESX Agent Manager trust store'
    _DISABLED_MARKER = 'AnyCertificate'
    _CANT_MOD_TEXT = 'Unable to read or modify ESX Agent Manager trust at %s'
    _LOG_FORMAT = '%(asctime)s %(message)s'_DATE_FORMAT = '%Y-%m-%d %H:%M:%S %z'
    _TRUST_PERMISSIONS = (   S_IREAD | S_IWRITE | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
    # In seconds_CERT_GET_TIMEOUT = 10
    
    def main(args):   return args.operationFnc(_createTimeZoneLogger(), args)
    
    def _installCert(log, args):   rc = 0   url = args.url   if _needsTrust(url):      try:         parts = urlparse(url)      except:         log.warning('Couldn\'t parse the provided URL %s', url, exc_info=True)         rc = 1
          if rc == 0:         context = create_default_context(purpose=Purpose.SERVER_AUTH)         # NOTE: Disable hostname verification to be able to access         # ----- misnamed certificates.         context.check_hostname = False         # NOTE: Disable certificate verification to be able to access         # ----- any kind of certificate on the server.         context.verify_mode = CERT_NONE
             pem_certificate = None         try:            with closing(               create_connection(                  (parts.hostname, 443 if parts.port is None else parts.port),                  timeout=_CERT_GET_TI
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    虚拟化爱好者

    创作不易

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值