如果替换“VPN 证书”,你可能改错服务。RRAS 至少保留三种证书控制,每一种都属于不同的协议和不同的连接角色。先说出协议,就能把一次冒险的猜测变成一次可回退的绑定更改。下文的一切都取决于这一句话。

先指明协议,再处理证书

SSTP 侦听器向行为类似 HTTPS 的客户端出示 TLS 证书。传入的站点到站点 IKEv2 连接会声明服务器标识,并依据受信任的根证书验证对端证书。每个接口的站点到站点定义都带有自己的计算机标识。

这是三种作用域不同的控制。把它们混为一谈,就会做出一种在某个协议上似乎有效、在另一个协议上毫无作用的更改,这比明显失败更糟。动手之前,先写下哪个协议失败、哪一侧出示了证书、哪一侧拒绝了证书。

SSTP 是 HTTPS 绑定

在受支持的 Remote Access 部署中,Set-RemoteAccess 公开 SslCertificate 参数,用于 SSTP 连接以及与 HTTPS 相关的 DirectAccess 角色。

其验证和部署范围遵循 Remote Access 配置,因此一次绑定更改可能涉及多个连接或节点。在负载均衡部署中,该范围包括配置覆盖的每一个节点。只改一个节点、只测一个客户端,其余节点仍会出示旧叶子证书,这正是能撑过维护窗口的那种半截更改。

更新前,先核实预期的服务名称、证书链、有效期、预期用途以及私钥是否可用。证书必须与客户端将要检查的名称一致,适配器标签并不是那个名称。

传入的 IKEv2 有自己的参数

Set-VpnAuthProtocol 配置传入的站点到站点 IKEv2 身份验证,CertificateAdvertised 在隧道身份验证模式使用证书时提供证书。它不是用于在主机上选择任意服务器证书的通用命令。

要把两个对象分开:服务器作为自身标识出示的叶子证书,以及它用来接受对端证书的根证书。选择信任哪个颁发者,并不能说明服务器出示的是哪个叶子证书。

单个站点到站点接口的标识通过 Set-VpnS2SInterface 设置。即使两者位于同一台计算机的同一存储中,它也不会自动成为 SSTP 证书。

先检查候选证书

针对本地计算机存储的定向查看可以显示公开元数据,而无需导出任何私密内容:

Get-ChildItem Cert:\LocalMachine\My |
    Select-Object Thumbprint, Subject, HasPrivateKey, NotAfter

该列表只是起点,不是适用性测试。要针对正在配置的协议,检查 SAN 条目、扩展密钥用法、证书链,以及服务账户对私钥的访问权限。

为无关的云客户端标识安装的证书,不会仅仅因为出现在同一存储中就变得适用。可见并不等于合格,截图中的指纹也不能证明服务账户能否读取密钥。要明确检查该访问权限,因为缺少密钥权限只会在服务重启并尝试使用证书时才失败。

记录当前绑定,并在更改前确认你仍能通过其他方式访问主机。恢复路径属于这次更改,而不属于随后发生的事故。

续订不等于启用

重新签发证书与为正在运行的服务选择证书是两回事。新叶子证书可以保留预期的 DNS 标识,却带有不同的指纹,因此在更新绑定之前,没有任何东西指向它。续订改变的是对象;启用改变的是对该对象的引用。把两者混为一谈,正是正确续订的证书可能闲置数周的原因。

在适当的时间窗口内应用受支持的更改,包括任何有文档记录的重新启动,然后通过预期协议的新连接检查证书。缓存的客户端会话可能仍显示旧叶子证书,使正确的更改看起来像出了故障。

只有在该检查通过后,才按正常流程停用先前的证书。Set-RemoteAccess 参考记载了 SSL 参数的作用范围,包括它在负载均衡部署中的影响,而这一部分值得在更改绑定之前阅读。

相关文章