IT 끄적이기
Ansible에서 WinRM HTTPS 및 인증서 설정 방법
미르아
2025. 1. 8. 11:43
728x90
Ansible을 사용해 Windows PC를 관리하려면 WinRM(Windows Remote Management)을 설정해야 합니다. 기본적으로 HTTP를 사용하는 WinRM도 가능하지만, 보안을 위해 HTTPS를 사용하는 것을 권장합니다. 아래는 HTTPS 설정 방법과 인증서 발급 및 적용 방법을 정리한 내용입니다.
WinRM HTTPS 설정
HTTPS를 설정하려면 인증서를 발급받아 WinRM에 적용해야 합니다.
Windows에서 WinRM 서비스 활성화
# WinRM 서비스 활성화
winrm quickconfig
# WinRM HTTPS 리스너 추가
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="machine_name";CertificateThumbprint="CERT_THUMBPRINT"}
방화벽 규칙 추가
HTTPS는 기본적으로 5986 포트를 사용합니다. 방화벽에서 해당 포트를 허용해야 합니다.
# 5986 포트 허용
New-NetFirewallRule -Name "WinRM HTTPS" -DisplayName "WinRM HTTPS" -Enabled True -Direction Inbound -Protocol TCP -LocalPort 5986 -Action Allow
SSL 인증서 발급 및 적용
WinRM HTTPS 설정 시 인증서가 필요합니다. 자체 서명 인증서를 생성하거나 인증 기관(CA)에서 발급받을 수 있습니다.
자체 서명 인증서 생성 (테스트용)
# 자체 서명 인증서 생성
$cert = New-SelfSignedCertificate -DnsName "machine_name" -CertStoreLocation Cert:\LocalMachine\My
# Thumbprint 확인
$cert.Thumbprint
인증서 Thumbprint 적용
위에서 생성한 인증서의 Thumbprint를 WinRM HTTPS 리스너에 추가합니다.
# 인증서 Thumbprint 적용
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="machine_name";CertificateThumbprint="CERT_THUMBPRINT"}
외부 CA 인증서 사용
외부 CA에서 인증서를 발급받았다면, 인증서를 Windows에 설치하고 Thumbprint를 동일하게 적용합니다.
# 인증서 설치
certutil -addstore -f "Root" "C:\path\to\certificate.cer"
# Thumbprint 적용
winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="machine_name";CertificateThumbprint="CERT_THUMBPRINT"}
WinRM HTTPS 설정 확인
설정을 확인하여 HTTPS 리스너가 제대로 활성화되었는지 점검합니다.
# WinRM 리스너 확인
winrm enumerate winrm/config/Listener
# 결과 예시
Listener [Source="GPO"]
Address = *
Transport = HTTPS
Port = 5986
Hostname = machine_name
CertificateThumbprint = CERT_THUMBPRINT
ListeningOn = [::], 0.0.0.0
Ansible에서 WinRM HTTPS 사용
Ansible에서 HTTPS로 WinRM을 사용하려면 아래처럼 설정합니다.
Inventory 파일 예시
[windows]
192.168.0.20 ansible_port=5986 ansible_user=Administrator ansible_password=Password123 ansible_connection=winrm ansible_winrm_transport=basic ansible_winrm_scheme=https
WinRM Python 패키지 설치
Ansible의 WinRM 모듈은 pywinrm 패키지를 필요로 합니다.
pip install pywinrm[credssp] pywinrm[kerberos] pywinrm[ntlm]
Ansible 명령 테스트
ansible -i inventory windows -m win_ping
문제 해결
- SSL 인증서 오류: 인증서 검증을 우회하려면 ansible_winrm_cert_validation=ignore를 설정합니다.
[windows]
192.168.0.20 ansible_port=5986 ansible_user=Administrator ansible_password=Password123 ansible_connection=winrm ansible_winrm_transport=basic ansible_winrm_scheme=https ansible_winrm_cert_validation=ignore
- 리스너가 설정되지 않음: WinRM 리스너 설정을 확인하고, 인증서 Thumbprint가 올바른지 다시 확인하세요.
요약
- WinRM HTTPS 리스너를 설정하고 인증서를 적용합니다.
- Ansible Inventory 파일에서 HTTPS와 관련된 설정을 추가합니다.
- Ansible 명령을 실행하여 연결을 테스트합니다.
728x90