Test-WSMan -ComputerName localhost -UseSSL 오류 (WSManFault Code=12175)는 WinRM HTTPS 리스너(포트 5986)에 바인딩된 SSL 인증서 문제로 발생합니다:
- Unknown CA: 자가 서명(self-signed) 인증서가 신뢰되지 않음 (루트 CA가 인식되지 않음).
- CN Mismatch: 인증서의 Common Name(CN) 또는 Subject Alternative Name(SAN)이 "localhost"와 일치하지 않음 (예: cert 생성 시 DnsName이 잘못 설정됨).
Windows Server 2022 Core(헤드리스) 환경에서 PowerShell로 해결하세요. SConfig 메뉴(옵션 15)로 관리자 권한 PowerShell 열기. 영구 해결을 위해 인증서 재생성 + 신뢰 저장소 임포트가 핵심입니다.
1. 현재 인증서 확인 (문제 진단)
- 인증서 목록 및 속성 확인 (Cert:\LocalMachine\My에서):
Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.EnhancedKeyUsageList -match "Server Authentication"} | Select-Object Thumbprint, Subject, DnsNameList, NotAfter | Format-List- 예상 문제: Subject/CN에 "localhost" 없음, 또는 DnsNameList에 "localhost" 미포함. NotAfter(만료일) 확인.
- 리스너 바인딩 확인:
winrm enumerate winrm/config/Listener | Select-String "HTTPS|Hostname|CertificateThumbprint"- Hostname="localhost"와 CertificateThumbprint가 cert와 일치해야 함.
2. 인증서 재생성 (CN Mismatch 해결)
이전 cert가 잘못됐다면 새로 생성 (DnsName에 "localhost" 포함, Server Authentication 용도):
$hostName = "localhost"
$dnsNames = $hostName, "127.0.0.1" # Public IP 추가 시: , "your-public-ip"
$newCert = New-SelfSignedCertificate -DnsName $dnsNames -CertStoreLocation Cert:\LocalMachine\My -KeyUsage DigitalSignature,KeyEncipherment -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" -NotAfter (Get-Date).AddYears(5)
- 설명: DnsName에 "localhost"를 CN으로 포함해 mismatch 방지. Thumbprint 저장: $newCert.Thumbprint (예: 4BE796B7EC340EA6D1E088E6854E0F8E4C38CBD7).
- Private Key 권한 설정 (NETWORK SERVICE 접근 허용):
$certPath = "$env:ALLUSERSPROFILE\Microsoft\Crypto\RSA\MachineKeys\$($newCert.PrivateKey.CspKeyContainerInfo.UniqueKeyContainerName)" icacls $certPath /grant "NT AUTHORITY\NETWORK SERVICE:(F)"
3. 인증서 신뢰 설정 (Unknown CA 해결)
자가 서명 cert를 LocalMachine\Root에 임포트 (로컬 테스트용 신뢰 CA로 등록):
Export-Certificate -Cert $newCert -FilePath "C:\temp\winrm-cert.cer" # 임시 파일 생성
Import-Certificate -FilePath "C:\temp\winrm-cert.cer" -CertStoreLocation Cert:\LocalMachine\Root
Remove-Item "C:\temp\winrm-cert.cer" # 정리
- 설명: Root 저장소 임포트로 "unknown CA" 오류 해결. 클라이언트 PC에서도 동일 .cer 파일 임포트 필요 (외부 연결 시).
4. WinRM HTTPS 리스너 재설정
새 cert로 리스너 바인딩:
# 기존 HTTP/HTTPS 리스너 제거 (선택)
Get-ChildItem WSMan:\localhost\Listener | Remove-Item -Recurse -Force
# 새 HTTPS 리스너 생성
New-Item -Path WSMan:\localhost\Listener -Transport HTTPS -Address * -CertificateThumbprint $newCert.Thumbprint -Hostname "localhost" -Force
# 암호화 강제
winrm set winrm/config/service '@{AllowUnencrypted="false"}'
- WinRM 재시작:
Restart-Service WinRM -Force - 방화벽 확인 (5986 포트):
Enable-NetFirewallRule -DisplayName "Windows Remote Management (HTTPS-In)" -Profile Any
5. 테스트 및 확인
- 로컬 연결 테스트 (이제 성공해야 함):
Test-WSMan -ComputerName localhost -UseSSL- 예상 출력: IdentifyResponse (wsmid: http://schemas.dell.com/wbem/wmi... 등 서버 정보).
- 임시 스킵 옵션 (영구 fix 전 테스트용, 클라이언트 PowerShell에서):
$sessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck Test-WSMan -ComputerName localhost -UseSSL -SessionOption $sessionOption- 설명: Unknown CA와 CN mismatch를 무시. WAC 연결 시도 시에도 유용하지만, 보안상 영구 fix 추천.
- 전체 상태 확인:
winrm get winrm/config/service- AllowUnencrypted=false, CertificateThumbprint=새 Thumbprint 확인.
추가 팁
- AWS EC2 특성: Public IP 연결 시 DnsName에 Public IP 추가하고, 리스너 Hostname도 Public IP로 변경. AWS Security Group 5986 인바운드 허용.
- 문제 지속 시: 이벤트 로그 확인 (Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Microsoft-Windows-WinRM'} -MaxEvents 10). cert 만료/revoke 확인.
- WAC 연동: 이 fix 후 WAC에서 서버 추가 테스트. 클라이언트에도 cert 임포트 필수.
이 단계로 오류가 해결되고 Test-WSMan이 성공할 거예요.
반응형
'IT관련' 카테고리의 다른 글
| Windows Server 2022 IIS FTP 설정: 데이터 포트 변경 후 PASV 응답 오류 해결기 (제어 포트 21번 기본, 일반 FTP) (0) | 2025.11.05 |
|---|---|
| Windows Server 2022 (Core 아닌 Desktop Experience) 설치 후 한글 설정 방법 (0) | 2025.11.04 |
| Windows Server 2025 Core에서 WMSVC(Web Management Service) 설치 방법 (0) | 2025.11.04 |
| RDP(원격 데스크톱 프로토콜) 완벽 정리: 원격 작업의 필수 도구 (0) | 2025.11.03 |
| Windows Server 2022 Core에서 App Compatibility 없이 실행 가능한 .exe 기반 명령어 리스트 (0) | 2025.11.03 |