Windows 2012용 IIS에서 SNI를 설정하는 명령줄

Windows 2012용 IIS에서 SNI를 설정하는 명령줄

Windows 2012를 실행하고 각각 자체 디지털 인증서가 있는 두 개의 SSL 웹 사이트가 있는 웹 서버의 자동화된 빌드 스크립트를 완료하려고 합니다.

수동으로 설정할 때는 제대로 작동하는 SNI를 사용하고 있지만 APPCMD를 사용하여 동일한 구성을 설정할 때 바인딩에서 사이트에 대한 인증서를 선택하는 방법을 알 수 없습니다.

수동 접근 방식을 사용하면 인증서를 선택하는 데 사용하는 드롭다운 목록이 있습니다. 해당 목록에서 인증서를 선택하는 것과 동일한 명령줄을 찾고 있습니다.

어떻게 하는지 아는 사람 있나요?

답변1

appcmd에 대해 잘 모릅니다. 더 이상 사용을 권장하지 않는 레거시 도구라고 생각합니다.

PowerShell에서는 SSlFlags 매개 변수를 사용하여 SNI를 표시합니다. 0은 SNI가 아니며 1은 SNI를 설정합니다.

New-WebBinding -Name site1.local -Port 443 -Protocol https -SslFlags 0
New-WebBinding -Name site2.local -Port 443 -Hostheader site2.local -Protocol https -SslFlags 1

기존 인증서를 할당하려면 먼저 인증서의 지문과 GUID를 가져온 다음 netsh를 사용하세요.

$thumb = (Get-ChildItem cert:\LocalMachine\MY | where-object { $_.FriendlyName -match "site2" } | Select-Object -First 1).Thumbprint
$guid = [guid]::NewGuid()
& netsh http add sslcert hostnameport=site2.local:443 certhash=$thumb appid=`{$guid`} certstorename=MY

SNI를 사용하지 않는 사이트의 경우:

$thumb = (Get-ChildItem cert:\LocalMachine\MY | where-object { $_.FriendlyName -match "site1" } | Select-Object -First 1).Thumbprint
$guid = [guid]::NewGuid()
& netsh http add sslcert ipport=0.0.0.0:443 certhash=$thumb appid=`{$guid`} certstorename=MY

답변2

내 질문에 대해 내가 찾은 답변은 다음과 같습니다.

다음 구문으로 netsh를 사용해야 했습니다.

netsh http add sslcert hostnameport=www.shifts.org.uk:443 certstorename=MY certhash=<put your hash here> appid={<put your app ID here>}

이전에 누락된 핵심 부분은 위의 "hostnameport"라는 매개변수였습니다. 이것이 미래에 누군가에게 도움이 되기를 바랍니다.

문안 인사,

광고

관련 정보