使用自定义 SSL 证书预配 Windows 设备门户

Windows 设备门户(WDP)为设备管理员提供了一种安装自定义证书以用于 HTTPS 通信的方法。

虽然你可以在自己的电脑上执行此操作,但此功能主要面向具有现有证书基础结构的企业。

例如,公司可能有一个证书颁发机构(CA),用于为通过 HTTPS 提供服务的 Intranet 网站签名证书。 此功能位于该基础结构之上。

概述

默认情况下,WDP 会生成自签名根 CA,然后使用该 CA 为它正在侦听的每个终结点签名 SSL 证书。 这包括 localhost127.0.0.1::1(IPv6 localhost)。

还包括设备的主机名(例如,https://LivingRoomPC),以及分配给设备的每个链接本地 IP 地址(每个网络适配器最多有两个 [IPv4, IPv6] )。 可以通过查看 WDP 中的网络工具来查看设备的链接本地 IP 地址。 它们从 IPv4 的 10.192. 开始,或适用于 IPv6 的 fe80:

在默认设置中,由于不受信任的根 CA,证书警告可能会显示在浏览器中。 具体而言,WDP 提供的 SSL 证书由浏览器或电脑不信任的根 CA 签名。 可以通过创建新的受信任的根 CA 来修复此问题。

创建根 CA

仅当公司(或家庭)没有设置证书基础结构时,才应该执行此操作,并且只应完成一次。 以下 PowerShell 脚本创建名为 WdpTestCA.cer的根 CA。 将此文件安装到本地计算机的受信任根证书颁发机构中,会使设备信任由这个根 CA 签名的 SSL 证书。 可以在要连接到 WDP 的每个电脑上安装此.cer文件。

$CN = "PickAName"
$OutputPath = "c:\temp\"

# Create root certificate authority
$FilePath = $OutputPath + "WdpTestCA.cer"
$Subject =  "CN="+$CN
$rootCA = New-SelfSignedCertificate -certstorelocation cert:\currentuser\my -Subject $Subject -HashAlgorithm "SHA512" -KeyUsage CertSign,CRLSign
$rootCAFile = Export-Certificate -Cert $rootCA -FilePath $FilePath

创建后,可以使用 WdpTestCA.cer 文件对 SSL 证书进行签名。

使用根 CA 创建 SSL 证书

SSL 证书具有两个关键功能:通过加密保护连接,并验证你是否实际与浏览器栏中显示的地址通信(Bing.com、192.168.1.37 等),而不是恶意第三方。

以下 PowerShell 脚本为 localhost 终结点创建 SSL 证书。 WDP 侦听的每个终结点都需要自己的证书;可以将脚本中的 $IssuedTo 参数替换为设备的每个不同终结点:主机名、localhost 和 IP 地址。

$IssuedTo = "localhost"
$Password = "PickAPassword"
$OutputPath = "c:\temp\"
$rootCA = Import-Certificate -FilePath C:\temp\WdpTestCA.cer -CertStoreLocation Cert:\CurrentUser\My\

# Create SSL cert signed by certificate authority
$IssuedToClean = $IssuedTo.Replace(":", "-").Replace(" ", "_")
$FilePath = $OutputPath + $IssuedToClean + ".pfx"
$Subject = "CN="+$IssuedTo
$cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -Subject $Subject -DnsName $IssuedTo -Signer $rootCA -HashAlgorithm "SHA512"
$certFile = Export-PfxCertificate -cert $cert -FilePath $FilePath -Password (ConvertTo-SecureString -String $Password -Force -AsPlainText)

如果有多个设备,则可以重复使用 localhost .pfx 文件,但仍需要为每个设备单独创建 IP 地址和主机名证书。

生成 .pfx 文件的捆绑包时,需要将它们加载到 WDP 中。

使用认证配置 Windows 设备门户

对于为设备创建的每个 .pfx 文件,需要在提升权限的命令提示符下运行以下命令。

WebManagement.exe -SetCert <Path to .pfx file> <password for pfx>

有关示例用法,请参阅下文:

WebManagement.exe -SetCert localhost.pfx PickAPassword
WebManagement.exe -SetCert --1.pfx PickAPassword
WebManagement.exe -SetCert MyLivingRoomPC.pfx PickAPassword

安装证书后,只需重启服务即可使更改生效:

sc stop webmanagement
sc start webmanagement

小窍门

IP 地址可能会随时间而变化。 许多网络使用 DHCP 来提供 IP 地址,因此设备并不总是获得以前使用的相同 IP 地址。 如果已为设备上的 IP 地址创建了证书,并且该设备的地址已更改,WDP 将使用现有的自签名证书生成新证书,并且它将停止使用所创建的证书。 这将导致证书警告页再次显示在浏览器中。 出于此原因,我们建议通过其主机名连接到设备,你可以在 Windows 设备门户中设置该主机名。 无论 IP 地址如何,这些地址都将保持不变。