尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ESXi更换阿里云免费SSL证书,彻底解决HTTPS访问不安全警告

ESXi更换阿里云免费SSL证书,彻底解决HTTPS访问不安全警告 如果你手里有一台跑了好几年的ESXi主机并且通过DDNS绑定了自己的域名想在外网用https://你的域名访问管理界面那大概率会被同一个问题卡住浏览器永远弹“您的连接不是私密连接”点开高级选项里面写着一行让人又熟悉又无奈的提示——此证书不受信任。这篇就把ESXi申请阿里云免费SSL证书并配置HTTPS访问的完整过程记录下来包括申请、替换、验证和后续维护给同样折腾过的朋友一个可以直接抄作业的参考。ESXi默认的证书是什么情况为什么换了阿里云证书之后还是要用域名访问这两个问题我在一开始折腾时走了不少弯路所以先把原理讲清楚后面操作起来就顺了。1. 为什么ESXi管理界面一直提示“不安全”1.1 自签名证书的来源与浏览器不信任的原因ESXi在安装时会由平台内置的VMCAVMware Certificate Authority自动生成一张自签名证书用于Web管理界面、API接口和部分主机间通信的加密。这张证书的签发者就是ESXi自己也就是说它“自证清白”但浏览器并没有把VMCA的根证书放进系统信任列表。浏览器访问https://ESXi-IP时会先去检查证书链能不能追溯到某个受信任的根CA结果发现签发者是个陌生机构于是直接判定为不安全。这个逻辑其实和你去车站坐车有人跑过来跟你说“我是站长你跟我走”一样——对方确实可能是站长但你没有办法验证他的身份所以谨慎的系统默认选择不信任。很多人习惯直接点“高级→继续前往”但这样有几个实际影响一是管理界面的所有请求虽然仍是加密传输但每次都会提示容易让人麻木反而忽略了真正的中间人攻击风险二是有时候使用的自动化脚本、API工具对证书校验比较严格自签名证书会导致调用失败。所以与其长期顶着红锁不如一次性把证书换掉彻底解决这个问题。1.2 域名访问是证书生效的前提这里要提前说清楚因为很多人在这一块理解错了。SSL证书的核心作用是证明“某个域名”的身份而不是证明“某台服务器”的身份。你申请阿里云免费证书时填的是比如esxi.example.com那证书里绑定的就是这个名字。浏览器访问时会比对地址栏里的域名和证书里的域名是否一致不一致就报NET::ERR_CERT_COMMON_NAME_INVALID。这意味着替换完证书之后你必须通过域名访问ESXi而不是用IP地址。假如你之前一直是https://192.168.1.10访问管理界面那么换完证书继续用IP访问大概率还是会报错。正确的访问方式是这样规划的在阿里云DNS解析里把esxi这个子域名解析到你家的公网IP公网IP变化就配合DDNS自动更新在路由器上把外网的一个端口比如443但很多宽带运营商封了80/443那就用8443转发到内网ESXi的443端口浏览器里访问https://esxi.example.com:8443。证书验证的是域名不是端口所以端口改了不影响证书匹配只要域名一致就行。2. 申请阿里云免费SSL证书的核心步骤2.1 前置条件与证书选型申请之前先确认两件事。第一你得有一个域名并且域名解析在阿里云DNS。如果你把域名放在其他注册商也没关系只要把DNS托管到阿里云解析或者申请的时候选择手动DNS验证去自己的DNS管理后台加一条TXT记录都行。第二确认要用的子域名比如esxi.example.com。阿里云免费证书是单域名证书不支持通配符也就是这一张证书只能给一个域名用。如果以后还想给nas.example.com也加上HTTPS那就得另外再申请一张。不过对于ESXi管理界面来说单域名完全够用没必要买付费证书。目前阿里云免费SSL证书针对的是DV类型的证书即只验证域名所有权不验证企业身份适合个人和中小团队使用。有效期方面2024年之后新申请的免费证书有效期是3个月到期前需要重新申请签发这个后面专门说。2.2 控制台申请与DNS验证具体操作流程如下登录阿里云控制台搜索“数字证书管理服务”进入“SSL证书”页面在左侧菜单找到“免费证书”点击“创建证书”按照提示创建一个免费证书订单在证书订单列表中点击“证书申请”填写域名esxi.example.com选择验证方式如果域名解析在阿里云且当前登录账号有DNS管理权限可以直接选择“自动DNS验证”系统会帮你自动添加一条TXT记录如果不在阿里云解析选择“手动DNS验证”拿到一条形如_dnsauth的TXT记录值去你的DNS管理后台手动添加提交申请后等待审核。正常情况下几分钟到十几分钟就能签发如果长时间没签发检查一下TXT记录是不是真的生效了可以用命令行nslookup -typeTXT 你的域名验证。签发成功后在证书列表点击“下载”选择Nginx类型。下载的压缩包里有多个文件其中证书文件是xxxx.pem私钥文件是xxxx.key。这里要注意Nginx格式包里的.pem文件通常已经包含了完整的证书链服务器证书和中间证书这对后面的配置很有帮助因为ESXi要求粘贴的证书内容必须包含整条链否则部分浏览器会报证书链不完整。3. 在ESXi上替换证书从“红色警告”到“绿色锁”3.1 Web界面替换操作明细拿到证书和私钥两个文件后接下来登录ESXi的Web管理界面开始替换。不同版本的ESXi界面布局略有差异但路径基本一致在浏览器里输入https://你的域名:转发端口登录后进入“管理”菜单找到“证书”子页面。页面上会显示当前证书的一些信息比如颁发给、有效期、信任状态一般会看到一个红色的“不受信任”或类似的提示。点击“替换为CA签发的证书”按钮会弹出一个对话框里面有两个输入框一个是“证书”一个是“私钥”。操作要点如下用文本编辑器打开从阿里云下载的.pem文件把内容完整拷贝包括开头的-----BEGIN CERTIFICATE-----和结尾的-----END CERTIFICATE-----全部粘贴到“证书”输入框再打开.key文件同样完整拷贝包括-----BEGIN PRIVATE KEY-----或-----BEGIN RSA PRIVATE KEY-----和对应的结尾标记粘贴到“私钥”输入框确认没有多余的空格或换行点击“替换证书”。整个过程非常快点击之后ESXi会重新加载证书配置此时浏览器页面可能会短暂卡顿或者断开这是正常现象等十几秒到半分钟再刷新即可。需要注意的一个细节是ESXi对私钥格式兼容性比较好无论是PKCS#1还是PKCS#8格式都能识别。如果粘贴后一直卡在某一步没有反应优先检查是不是私钥文件拷错了或者证书和私钥不匹配比如混用了不同域名的证书和私钥。3.2 替换后服务重启与验证替换完成后ESXi会重启相关的管理服务进程整个过程不影响虚拟机的正常运行。很多朋友第一次操作时担心会重启整个主机导致业务中断其实完全不用担心这一步只是替换Web管理界面用的证书和底层虚拟机运行隔离得很清楚。那怎么确认真的生效了呢可以从两个角度验证。浏览器侧直接访问https://esxi.example.com:8443地址栏会显示小锁图标不再有任何警告。如果你之前给这个域名加过浏览器例外最好先用无痕窗口验证一次避免旧缓存干扰。命令行侧在任意一台能访问到该域名的机器上执行curl -kv https://esxi.example.com:8443输出结果里有一段Server certificate会看到证书的subject、issuer和有效期issuer那一行应该显示的是类似CNCertificate Authority之类的CA机构信息而不是CNVMCA或CNVMware之类的内容这样就说明替换成功了。如果用的是macOS或Linux也可以直接执行openssl s_client -connect esxi.example.com:8443 -servername esxi.example.com来查看证书链确认中间证书有没有发全。4. 绕过几个“换了证书还是报错”的坑4.1 私钥不匹配和多余内容第一次操作的常见问题是浏览器在替换后依然报错或者在替换时按钮点了没反应。我排查过几个朋友的ESXi发现超过一半是因为粘贴时末尾多复制了一个换行或者把证书内容粘贴到了私钥框里最离谱的一次是有人把阿里云下载的.pem文件内容分成了多段只拷贝了中间一段两头标记全丢了。所以建议养成一个习惯粘贴前先把内容放到一个纯文本编辑器里看一眼确认第一行和最后一行的标记是完整的中间没有混入其他说明文字。有些操作系统自带的“记事本”对长文本会强制换行粘贴到ESXi输入框时注意别把换行变成空格但一般不影响解析。4.2 ESXi时间不准导致证书链验证失败这个坑隐蔽但常见。浏览器校验证书时会使用两个时间一个是系统当前时间一个是证书的有效期起止时间。证书过期前会报有效期错误但如果ESXi本身的系统时间离现实时间差距很大哪怕证书还没过期浏览器也可能报NET::ERR_CERT_DATE_INVALID或者提示证书尚未生效。ESXi主机如果长时间没有配置时间同步加上硬件时钟有漂移时间偏差积累到几分钟甚至几小时都很正常。所以在替换证书之前强烈建议先确认ESXi的系统时间是否正确。可以在Web管理界面的“管理→系统→时间与日期”里查看最好直接配置NTP服务器比如阿里云提供的NTP地址ntp.aliyun.com把时间同步打开这样一劳永逸地避免时间类问题。4.3 证书链不完整与格式问题阿里云下载的Nginx包默认会包含完整的证书链但仍然见到不少人因为“证书链不完整”被卡住。原因是有些人不是用下载好的PEM文件而是手动去复制浏览器里的证书内容或者用了其他服务器格式的证书包比如Apache格式导致粘贴进ESXi的证书只有服务器证书没有中间证书。ESXi的证书输入框虽然标着“证书”但实际上要求你填入的是完整的证书链文件也就是服务器证书和中间证书按顺序拼接后的内容。阿里云下载的Nginx格式的.pem文件内部通常已经包含了这两部分所以直接用没有问题。如果你是从别的地方拿到证书注意检查文件里有没有多个-----BEGIN CERTIFICATE-----块如果没有去CA网站上下载对应的中间证书补上。4.4 常见错误排查对照表下面这张表是我实际排查问题过程中总结的基本覆盖了90%的替换失败场景可以照着逐一检查现象可能原因解决办法浏览器提示NET::ERR_CERT_AUTHORITY_INVALID证书链不完整浏览器不信任签发证书的CA确认粘贴的是包含完整链的PEM文件不要只贴服务器证书浏览器提示NET::ERR_CERT_COMMON_NAME_INVALID访问的域名和证书绑定的域名不一致改用证书对应的域名访问别用IP浏览器提示NET::ERR_CERT_DATE_INVALIDESXi系统时间不准确或证书确实过期配置NTP时间同步检查证书有效期浏览器提示ERR_SSL_VERSION_OR_CIPHER_MISMATCHESXi版本过旧不支持现代TLS配置升级ESXi版本或查看是否使用了过低的TLS协议替换证书按钮点了没反应或报错私钥格式错误、粘贴了多余内容、证书和私钥不匹配检查粘贴内容是否完整确认域名一致私钥没有密码保护替换成功但是浏览器还是显示旧证书浏览器缓存了旧的证书信息使用无痕窗口访问或清除该站点的SSL状态4.5 被vCenter纳管后的额外操作如果你的ESXi主机是被vCenter统一纳管的那情况会多一步。vCenter和ESXi之间有一套证书通信机制单独替换ESXi的证书后vCenter可能会在“证书状态”里显示该主机的证书不受信任。对这个场景建议先确认你确实需要vCenter纳管。如果只是家里一台或者小团队几台ESXi完全可以直接通过Web Client登录每台主机管理不引入vCenter也能用。真要处理vCenter的证书信任要么在vCenter的证书管理界面里把新证书添加为信任要么重新配置vCenter的证书。这个过程比单机替换复杂不少属于另一篇长文的内容了这里只提醒一下别担心“为什么我换了证书以后vCenter还有警告”——这是正常现象单独用Web界面不受影响即可。5. 证书替换完成之后我建议顺手做的几件事5.1 开启NTP自动校时避免时间偏差埋雷替换完证书后第一件推荐做的事是去“管理→系统→时间与日期”里配置NTP服务器并启用同步。前面说过ESXi时间不准会导致证书验证失败其实即使不换证书时间偏差也会影响虚拟机的日志、定时任务和Kerberos认证。把这些常用NTP地址填进去点保存就行ntp.aliyun.comntp.ntsc.ac.cnpool.ntp.org配置完成后等待几分钟回来看时间是否自动同步到正确值。如果时间还是不对检查ESXi能否正常访问外网的NTP服务很多内网环境需要放行UDP 123端口。5.2 记住免费证书的寿命三个月续期提醒阿里云免费SSL证书现在的有效期是3个月也就是说你这次费劲配置完3个月后就得再来一遍。不少人的证书“断供”就断在这——签发的时候兴致勃勃换完后就不管了等某个早上打开浏览器看到红锁才发现证书已经过期很久。我的做法是在阿里云控制台的证书列表里盯住“到期时间”那一栏设置一个提前两周的日历提醒。另外还有一个命令可以快速查看ESXi当前证书的到期时间省得每次登Web界面openssl s_client -connect esxi.example.com:8443 -servername esxi.example.com 2/dev/null | openssl x509 -noout -dates这个命令会输出证书的notBefore和notAfter方便你快速判断还剩下多少天。你也可以把它写成一个cron定时任务每个月跑一次输出到日志自然就不会忘记续期了。5.3 证书与配置文件的备份习惯替换完证书之后建议把阿里云下载的.pem和.key文件妥善保存。不要只放在ESXi主机的下载文件夹里因为ESXi的本地存储一旦出故障这些文件很可能就跟着丢了。正确的做法是在本地电脑建立一个专门的证书目录按域名和日期命名比如esxi.example.com_20250313把PEM和KEY文件复制进去顺便把“申请日期、到期日期、备注”写在一个readme.txt里给这个目录做一次加密压缩备份到云盘或U盘。这样做的好处是下次续期如果还是同一个域名、同一套私钥逻辑你可以快速对比新旧证书差异而且万一ESXi系统重装手里的证书备份能让恢复流程短很多。最后再分享一个我的习惯每次替换完证书我会顺手在浏览器里把旧的ESXi书签删掉重新用https://域名:端口的完整地址存一遍。别小看这个动作很多人证书换好之后书签栏里存的还是老早用IP地址保存的入口每次都忍不住点IP访问然后又陷入“为什么还是不安全”的困惑里。把域名访问固化成一个肌肉记忆这台ESXi的HTTPS体验才算真的舒服了。
返回列表