안녕하세요, Microsoft Q&A 커뮤니티에 문의해 주셔서 감사합니다.
이 현상은 크게 두 가지 이유로 발생합니다:
- WDAC 정책 내 서명자 규칙(Signer Rule) 누락: LOB 앱이 사내 CA로 정상 서명되었더라도 현재 시스템에 활성화된 WDAC 바이너리 정책 내의 **Signer 규칙 목록(
<AllowedSigners>)**에 해당 루트/중간 CA 인증서나 서명자 정보가 신뢰할 수 있는 항목으로 포함되어 있지 않은 경우입니다. - 클라이언트 신뢰 체인 미비: 클라이언트 PC의 **컴퓨터 인증서 저장소(Local Machine Certificate Store)**의 신뢰할 수 있는 루트 인증 기관(Trusted Root Certification Authorities) 항목에 사내 엔터프라이즈 루트 CA 인증서가 등록되어 있지 않거나 인증서 체인 검증에 실패할 때
0x80070241오류가 발생합니다.
기본 전제 조건 확인
먼저 클라이언트 PC에서 Windows 키 + R을 누르고 certlm.msc를 실행하여 신뢰할 수 있는 루트 인증 기관 -> 인증서 목록에 사내 엔터프라이즈 루트 CA 인증서가 정상 등록되어 있는지 확인해 주시기 바랍니다.
표준 해결 방법: 신규 CA 서명자 규칙 추출, XML 병합 및 바이너리 재배포
기존 활성화된 WDAC 정책에 새로운 서명자 규칙을 추가할 때는 기존 XML 정책 파일과 새로 추출한 룰 XML을 Merge-CIPolicy cmdlet으로 병합한 뒤 바이너리(.cip 또는 .p7b)로 변환하여 배포하는 것이 가장 깔끔한 표준 절차입니다.
Step 1: 차단된 LOB 앱에서 CA 서명자 레벨 규칙(Signer Rule) 추출
관리자 권한 PowerShell에서 차단된 LOB 앱 실행 파일(.exe 또는 .dll)로부터 서명자 인증서 정보를 추출하여 XML 규칙 파일로 생성합니다.
#차단된 LOB 앱에서 서명자(Signer) 레벨 정책 규칙 생성
New-CIPolicyRule -DriverFilePath "C:\Path\To\Your\LOB_App.exe" -Level Signer -OutputFilePath "C:\WDAC\LOB_Signer_Rules.xml"
Step 2: 기존 Base XML 정책과 신규 규칙 XML 병합 (Merge)
기존에 보관 중인 Base 정책 XML 파일(`BasePolicy.xml`)과 새로 생성한 `LOB_Signer_Rules.xml`을 병합하여 통합 XML 정책 파일(`MergedPolicy.xml`)을 작성합니다.
```powershell
# 기존 Base 정책과 신규 서명자 규칙 병합
Merge-CIPolicy -OutputFilePath "C:\WDAC\MergedPolicy.xml" -PolicyPaths "C:\WDAC\BasePolicy.xml", "C:\WDAC\LOB_Signer_Rules.xml"
Step 3: XML 정책을 바이너리(.cip / .p7b)로 변환
통합된 XML 정책을 Windows Code Integrity 엔진이 인식할 수 있는 바이너리 형식으로 컴파일합니다.
# XML 정책을 바이너리(.cip) 파일로 변환
ConvertFrom-CIPolicy -XmlFilePath "C:\WDAC\MergedPolicy.xml" -BinaryFilePath "C:\WDAC\MergedPolicy.cip"
Step 4: 업데이트된 바이너리 정책 배포
Windows 10 (22H2 이상) 및 Windows 11 / Server 2022 이상에서는 CiTool을 이용하여 신규 정책을 즉시 적용할 수 있습니다.
:: CiTool을 이용한 바이너리 정책 신규/업데이트 적용
CiTool.exe -i "C:\WDAC\MergedPolicy.cip"
(참고: 그룹 정책(GPO) 또는 Microsoft Intune을 사용하는 경우, 배포 경로의 기존 .p7b / .cip 파일을 새로 컴파일된 MergedPolicy.cip 파일로 교체하여 재배포합니다.)
권장 대안: 보충 정책(Supplemental Policy) 활용
Base 정책을 매번 수정/병합하지 않고, 사내 LOB 전용 예외 규칙만 별도로 관리하려면 **보충 정책(Supplemental Policy)**을 작성하여 배포하는 것이 모범 사례(Best Practice)입니다.
- 보충 정책 XML 생성:
# Base 정책 ID를 지정하여 보충 정책 생성 New-CIPolicy -FilePath "C:\WDAC\Supplemental_LOB.xml" -DriverFiles "C:\Path\To\Your\LOB_App.exe" -Level Signer -SupplementsBasePolicyID "{BasePolicyGUID}" - 바이너리 변환 및 배포:
ConvertFrom-CIPolicy -XmlFilePath "C:\WDAC\Supplemental_LOB.xml" -BinaryFilePath "C:\WDAC\Supplemental_LOB.cip" - CiTool을 통한 배포:
CiTool.exe -i "C:\WDAC\Supplemental_LOB.cip"
추가 진단을 위한 요청 사항
상기 조치 이후에도 0x80070241 오류가 계속 발생하는 경우, 정확한 원인 진단을 위해 아래 항목을 확인 및 공유해 주시기 바랍니다.
- 이벤트 뷰어(Event Viewer) -> 응용 프로그램 및 서비스 로그 -> Microsoft -> Windows -> CodeIntegrity -> Operational 로그에 기록된 Event ID 3077 또는 3089/3004의 상세 오류 XML
- 클라이언트 PC에서 아래 PowerShell 명령을 수행한 결과:
# 현재 적용 중인 WDAC 정책 목록 확인 Get-CimInstance -Namespace root\Microsoft\Windows\CI -ClassName Win32_ActivePolicy
제시해 드린 병합 및 배포 절차가 WDAC Enforcement Mode에서의 사내 CA 서명 LOB 앱 실행 문제 해결에 도움이 되기를 바랍니다. 작업 중 다른 오류가 발생하거나 추가 문의 사항이 있으시다면 언제든지 본 스레드에 댓글을 남겨주세요. 지속적으로 모니터링하여 도와드리겠습니다.
답변이 문제 해결에 도움이 되었다면 다른 회원분들도 참고할 수 있도록 **'답변 수락(Accept Answer)'**을 부탁드립니다.
관련 Microsoft Learn 공식 문서: