Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Contents 호환성 문제의 정의와 증상 분류 즉시 조치 체크리스트(빠른 복구) 파일 형식별 특성과 선택 기준 버전 차이로 인한 기능 손실과 대체 전략 조직 환경 차이: 32/64비트, 추가기능, 보안 정책 CSV·텍스트 파일 호환성: 인코딩·구분 기호·서식 날짜·숫자 변형 방…
글 전체 보기이 글의 목적은 VBA 프로젝트에 인증서로 서명했음에도 엑셀이 여전히 매크로를 차단하는 상황을 체계적으로 진단하고 해결하는 실무 절차를 제공하는 것이다.
많은 사용자가 VBA에 디지털 서명을 적용하면 자동으로 실행이 허용될 것이라 기대한다. 그러나 엑셀의 보안 모델은 다층 방어 구조이므로 다음 조건을 모두 충족해야 한다.
| 증상 | 주요 원인 | 해결 |
|---|---|---|
| “보안 위험. 인터넷에서 가져온 파일의 매크로가 차단됨” 메시지 | 파일에 MOTW(Zone.Identifier: ZoneId=3) 부착 | 파일 속성의 차단 해제 체크 또는 Unblock-File 실행, 신뢰할 위치로 이동 |
| “이 게시자는 신뢰되지 않음” 경고 | 인증서가 Trusted Publishers 스토어에 없음 | 인증서 공개키를 사용자/로컬 컴퓨터의 Trusted Publishers에 가져오기 |
| 서명했는데도 “매크로가 사용 중지됨” | Trust Center에서 “디지털 서명된 매크로만 허용” 미구성 또는 정책 차단 | Trust Center 설정 점검 또는 그룹 정책 수정, 기업 표준 구성 적용 |
| 일부 PC에서만 차단 | 루트·중간 인증서 체인 불완전, 시간 동기화 문제 | 루트/중간 인증서 배포, 체인 유효성 점검 |
| 인증서 유효기간 만료 후 갑자기 차단 | VBA 서명은 일반적으로 타임스탬프 미지원 → 만료 시 신뢰 상실 | 새 인증서로 재서명, 문서 재배포 |
| .ZIP에서 꺼내면 또 차단 | 압축 해제 시 MOTW 전파 | 압축 해제 후 차단 해제 또는 안전한 전송 채널 사용 |
| 네트워크 공유에서 열 때만 차단 | 네트워크 경로는 기본적으로 신뢰할 위치 아님 | 정책으로 네트워크 신뢰 위치 허용 후 공유 폴더를 신뢰 위치로 등록 |
인터넷에서 다운로드했거나 이메일 첨부·클라우드 동기화로 유입된 파일은 Windows가 부착한 대체 데이터 스트림(ADS) Zone.Identifier 때문에 Office가 매크로를 원천 차단한다.
REM 파일의 MOTW 확인 notepad "C:\작업\Report.xlsm:Zone.Identifier"
REM PowerShell에서 일괄 차단 해제
Get-ChildItem C:\작업*.xlsm -Recurse | Unblock-File
GUI에서는 파일 속성 창에서 “차단 해제” 체크 후 확인한다. OneDrive/SharePoint 동기화 파일도 MOTW가 유지되는 경우가 많으므로 동일 절차가 필요하다.
반복 사용 문서라면 신뢰할 위치에 배치하는 것이 운영상 가장 안정적이다.
VBA 서명은 “파일 서명”이 아니라 “VBA 프로젝트 서명”이다. Office는 다음 조건을 검사한다.
확인은 다음과 같이 한다.
:: 사용자 개인 스토어의 코드서명 인증서 목록 certutil -store -user My
:: 게시자 신뢰 스토어 확인
certutil -store -user TrustedPublisher
:: 인증서 상세 보기(MMC)
certmgr.msc
자체 서명(SelfCert.exe) 인증서도 사용 가능하나, 배포 전 해당 공개키를 사용자/컴퓨터의 Trusted Publishers에 배포해야 경고 없이 실행된다.
개별 PC에서 설정할 수 있으나 기업 환경에서는 그룹 정책 또는 MDM으로 관리한다.
| 옵션 | 의미 | 권장 |
|---|---|---|
| 모든 매크로 사용 안 함 | 전면 차단 | 고보안 구간 |
| 알림 표시 후 사용 안 함 | 사용자 선택 허용 | 개발·일반 |
| 디지털 서명된 매크로만 허용 | 신뢰된 게시자 서명만 실행 | 기업 권장 |
| 모든 매크로 사용 | 비권장 | 테스트 한정 |
정책 키 예시(Office 2016~Microsoft 365):
REM 사용자 범위(예시: Excel 2016/365는 16.0) reg add HKCU\Software\Microsoft\Office\16.0\Excel\Security /v VBAWarnings /t REG_DWORD /d 3 /f REM 1: 모든 매크로 사용 안 함 REM 2: 알림 표시 후 사용 안 함 REM 3: 디지털 서명된 매크로만 허용 REM 4: 모든 매크로 사용 인터넷 파일 차단 정책 키:
reg add HKCU\Software\Microsoft\Office\16.0\Excel\Security /v BlockMacrosFromInternet /t REG_DWORD /d 1 /f :: 특정 파일의 ADS 존재 여부 powershell -NoProfile -Command "Get-Item -Path 'C:\Docs\Report.xlsm' -Stream *"
:: MOTW 제거
powershell -NoProfile -Command "Unblock-File -Path 'C:\Docs\Report.xlsm'"
:: 인증서 체인 요약
certutil -verify "C:\Temp\publisher.cer"
:: 사용자 Trusted Publishers 내보내기
certutil -store -user TrustedPublisher > tp_list.txt
많이 혼동하는 부분이다. SignTool로 .xlsm 파일 자체를 서명해도 Office가 VBA 신뢰 판단에 사용하지 않는다. VBE의 “디지털 서명”은 VBA 프로젝트 스트림에 대한 서명으로 별도 처리된다. 따라서 빌드·패키징 자동화 시 “VBE 서명 단계”가 반드시 포함되어야 한다.
VBE7.DLL 인터페이스 또는 배치 스크립트를 활용해 “최종 저장 > 서명 > 읽기 전용 배포” 순서를 고정한다.ThisWorkbook 오픈 시 검증 로깅(예: 서명 주체, 인증서 만료일)을 Immediate Window나 숨김 시트에 기록해 현장 진단 시간을 단축한다..cer 공개키를 내보낸다.| 항목 | 합격 기준 | 확인 방법 |
|---|---|---|
| 파일 출처 | MOTW 없음 | 속성의 차단 해제 또는 Unblock-File |
| 신뢰 위치 | 전용 폴더 지정 | 보안 센터 > 신뢰할 위치 |
| 인증서 EKU | Code Signing 포함 | certutil -store My |
| 체인 | 루트까지 신뢰 | certmgr.msc로 루트/중간 확인 |
| 게시자 신뢰 | Trusted Publishers 등록 | certutil -store TrustedPublisher |
| 정책 | 서명된 매크로 허용 | 보안 센터 또는 GPO 점검 |
| 만료 | 유효기간 내 | 인증서 만료일 확인 |
| 최종 서명 | 배포 빌드에 서명 유지 | VBE > 디지털 서명 확인 |
@echo off REM 1) Trusted Publishers에 게시자 인증서 배포(관리자 권한 권장) certutil -addstore -user TrustedPublisher "\\share\certs\publisher.cer"
REM 2) Excel 정책: 디지털 서명된 매크로만 허용
reg add HKCU\Software\Microsoft\Office\16.0\Excel\Security /v VBAWarnings /t REG_DWORD /d 3 /f
REM 3) 네트워크 신뢰 위치 허용(필요 시)
reg add HKCU\Software\Microsoft\Office\16.0\Excel\Security /v AllowNetworkLocations /t REG_DWORD /d 1 /f
echo Done.
그렇지 않다. VBA 프로젝트 신뢰는 VBE 서명과 게시자 신뢰에 의해 결정된다. EV 여부는 일반 실행 파일 신뢰에 유리할 뿐 VBA 신뢰를 보장하지 않는다.
아니다. 이는 파일 외부 서명이며 바람직한 배포 표식일 수는 있으나, 엑셀은 VBA 신뢰 판단에 사용하지 않는다. VBE에서 별도로 VBA 프로젝트 서명이 필요하다.
VBA 서명은 일반적으로 타임스탬프를 사용하지 않으므로 만료 시 신뢰가 사라진다. 새 인증서로 재서명 후 배포해야 한다.
기본적으로 네트워크 경로는 신뢰 위치가 아니다. 정책에서 네트워크 신뢰 위치 허용을 활성화하고 해당 공유를 신뢰 위치로 등록한다.
가능하다. 다만 사용자 환경에 해당 인증서의 공개키를 Trusted Publishers로 배포해야 경고가 사라진다. 보안·감사 요구 사항에 따라 기업 CA 발급을 권장한다.
최근 Windows는 MOTW를 압축 내부 항목으로 전파한다. 압축 해제 후 각 파일에 대해 차단 해제를 수행하거나 신뢰된 경로로 전송한다.
이는 ASR 규칙 또는 EDR 정책의 차단일 가능성이 높다. 매크로 신뢰 문제와 별개이므로 보안 로그를 확인하고 예외 정책을 협의한다.