Windows 10 上の IIS10 は、ワイルドカード ホスト ヘッダーへの SSL バインディングをサポートします*.example.com
。
ワイルドカード ホスト ヘッダーの新しいSSL バインディングの作成は正常に機能しますが、バインディングが存在する場合は失敗し、 「パスに無効な文字」Test-Path
がスローされます。InvalidArgument
Test-Path IIS:\SslBindings\!443!*.example.com
-LiteralPath
と同様に使用してみまし-Path
たが、両方とも同じエラーが発生しますが、バインディングが存在する場合のみです。存在しないパスをテストする$false
と、期待どおりに戻ります。
何か不足していますか?それとも、これは Test-Path/WebAdministration のバグですか?
example.ps1 (Windows 10 のみ):
Import-Module WebAdministration
# test binding, create if missing
# fails on wildcard test when the binding exists
if (-not (Test-Path -LiteralPath IIS:\SslBindings\*!443!*.example.com))
{
Push-Location Cert:\LocalMachine\My
# find or create a certificate
$targetCert = Get-ChildItem -Recurse | ? { ($_.NotAfter -gt (Get-Date)) -and ($_.DnsNameList -contains "*.example.com") } | Sort NotAfter -Descending | select -First 1
if ($targetCert -eq $null)
{
$targetCert = New-SelfSignedCertificate -DnsName "*.example.com" -CertStoreLocation Cert:\LocalMachine\My
}
# bind to host header *
$targetCert | New-Item -Path IIS:\SslBindings\*!443!*.example.com -SSLFlags 1
Pop-Location
}
私が現在使用している回避策は次のとおりです。
if (-not (Get-ChildItem IIS:\SslBindings | ?{ $_.host -eq "*.example.com" -and $_.port -eq 443 }))
{
...
}
アップデート
注目に値するのはGet-ChildItem IIS:\SslBindings\*!443!*.example.com
、問題なく動作することです。