WDAC Enforcement Mode에서 사내 CA 서명 LOB 앱 차단 및 0x80070241 오류 해결 / 바이너리 정책 병합 방법

다은 박 80 평판 포인트
2026-08-10T06:02:44.5233333+00:00

사내 enterprise CA로 서명한 핵심 LOB 앱들이 Enforcement 모드로 배포된 WDAC(Windows Defender Application Control) 정책에 의해 차단되고 있습니다. 이벤트 로그를 확인해보니 code integrity failure 0x80070241 에러가 떨어지네요.

기존에 운영 중인 WDAC binary policy 파일에 새로운 rule collection을 깔끔하게 merge(병합)하는 표준적인 트러블슈팅 파이프라인이나 PowerShell cmdlet(예: Merge-CIPolicy) 모범 사례가 따로 있을까요?

비즈니스용 Windows | Windows 365 비즈니스
댓글 0개 설명 없음

답변 1개

정렬 기준: 가장 유용함
  1. Brian Huynh 3,815 평판 포인트 Microsoft 외부 직원
    2026-08-12T07:07:32.95+00:00

    안녕하세요, Microsoft Q&A 커뮤니티에 문의해 주셔서 감사합니다.

    이 현상은 크게 두 가지 이유로 발생합니다:

    1. WDAC 정책 내 서명자 규칙(Signer Rule) 누락: LOB 앱이 사내 CA로 정상 서명되었더라도 현재 시스템에 활성화된 WDAC 바이너리 정책 내의 **Signer 규칙 목록(<AllowedSigners>)**에 해당 루트/중간 CA 인증서나 서명자 정보가 신뢰할 수 있는 항목으로 포함되어 있지 않은 경우입니다.
    2. 클라이언트 신뢰 체인 미비: 클라이언트 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)입니다.

    1. 보충 정책 XML 생성:
      
         # Base 정책 ID를 지정하여 보충 정책 생성
      
         New-CIPolicy -FilePath "C:\WDAC\Supplemental_LOB.xml" -DriverFiles "C:\Path\To\Your\LOB_App.exe" -Level Signer -SupplementsBasePolicyID "{BasePolicyGUID}"
      
      
    2. 바이너리 변환 및 배포:
      
         ConvertFrom-CIPolicy -XmlFilePath "C:\WDAC\Supplemental_LOB.xml" -BinaryFilePath "C:\WDAC\Supplemental_LOB.cip"
      
      
    3. CiTool을 통한 배포:
      
         CiTool.exe -i "C:\WDAC\Supplemental_LOB.cip"
      
      

    추가 진단을 위한 요청 사항

    상기 조치 이후에도 0x80070241 오류가 계속 발생하는 경우, 정확한 원인 진단을 위해 아래 항목을 확인 및 공유해 주시기 바랍니다.

    1. 이벤트 뷰어(Event Viewer) -> 응용 프로그램 및 서비스 로그 -> Microsoft -> Windows -> CodeIntegrity -> Operational 로그에 기록된 Event ID 3077 또는 3089/3004의 상세 오류 XML
    2. 클라이언트 PC에서 아래 PowerShell 명령을 수행한 결과:
      
         # 현재 적용 중인 WDAC 정책 목록 확인
      
         Get-CimInstance -Namespace root\Microsoft\Windows\CI -ClassName Win32_ActivePolicy
      
      

    제시해 드린 병합 및 배포 절차가 WDAC Enforcement Mode에서의 사내 CA 서명 LOB 앱 실행 문제 해결에 도움이 되기를 바랍니다. 작업 중 다른 오류가 발생하거나 추가 문의 사항이 있으시다면 언제든지 본 스레드에 댓글을 남겨주세요. 지속적으로 모니터링하여 도와드리겠습니다.

    답변이 문제 해결에 도움이 되었다면 다른 회원분들도 참고할 수 있도록 **'답변 수락(Accept Answer)'**을 부탁드립니다.

    관련 Microsoft Learn 공식 문서:

    이 대답이 도움이 되었나요?

    댓글 0개 설명 없음

답변

질문 작성자는 답변을 '승인됨'으로 표시하고, 중재자는 답변을 '추천됨'으로 표시할 수 있습니다. 이를 통해 사용자는 해당 답변이 작성자의 문제를 해결했다는 것을 알 수 있습니다.