Windows Device Portal (WDP) は、デバイス管理者が HTTPS 通信で使用するカスタム証明書をインストールする方法を提供します。
これは自分の PC で行うことができますが、この機能は主に既存の証明書インフラストラクチャが存在する企業を対象としています。
たとえば、企業は、HTTPS 経由で提供されるイントラネット Web サイトの証明書に署名するために使用する証明機関 (CA) を持っている場合があります。 この機能は、そのインフラストラクチャの上に立っています。
概要
既定では、WDP は自己署名ルート CA を生成し、それを使用して、リッスンしているすべてのエンドポイントの SSL 証明書に署名します。 これには、 localhost
、 127.0.0.1
、 ::1
(IPv6 localhost) が含まれます。
また、デバイスのホスト名 (たとえば、 https://LivingRoomPC
) と、デバイスに割り当てられた各リンク ローカル IP アドレス (ネットワーク アダプターあたり最大 2 つの [IPv4,IPv6]) も含まれます。
WDP のネットワーク ツールを見ると、デバイスのリンク ローカル IP アドレスを確認できます。 IPv4 の場合は 10.
または 192.
、IPv6 の場合は fe80:
から始まります。
既定のセットアップでは、信頼されていないルート CA が原因で、証明書の警告がブラウザーに表示されることがあります。 具体的には、WDP によって提供される SSL 証明書は、ブラウザーまたは PC が信頼しないルート CA によって署名されます。 これは、新しい信頼されたルート CA を作成することで修正できます。
ルート CA を作成する
これは、会社 (または自宅) に証明書インフラストラクチャが設定されておらず、1 回だけ実行する必要がある場合にのみ行う必要があります。 次の PowerShell スクリプトは、 WdpTestCA.cerという名前のルート CA を作成します。 このファイルをローカル コンピューターの信頼されたルート証明機関にインストールすると、デバイスはこのルート CA によって署名された SSL 証明書を信頼します。 WDP に接続する各 PC に、この.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 など) に表示されているアドレスと実際に通信していることを確認する 2 つの重要な機能があります。
次の 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 アドレスに関係なく、これらは同じままです。