본문 바로가기
#2 엑셀 오류 가이드

엑셀에서 VBA 코드가 인증서 서명 후에도 매크로 차단될 때

by 이세계의엑셀 2025. 5. 3.
반응형

엑셀에서 VBA 코드가 인증서 서명 후에도 매크로 차단될 때 발생하는 원인과 해결 방법을 정리합니다. 이 문제는 서명이 제대로 되었음에도 여전히 보안 경고가 발생해 자동 실행이 되지 않을 때 흔히 나타납니다.


인증서를 서명했는데도 매크로가 차단되는 이유

엑셀에서 디지털 서명을 완료했음에도 VBA 코드가 차단되는 현상은 다음과 같은 원인으로 발생합니다:

  • 신뢰할 수 없는 인증서 루트
    자체 생성한 인증서(Self-Signed)는 기본적으로 신뢰되지 않으며, 이를 설치하지 않으면 엑셀이 해당 서명을 인정하지 않습니다.
  • 서명 후 파일 변경
    디지털 서명 이후 .xlsm 파일을 편집하거나 매크로를 수정하면 서명이 무효화되어 차단 대상이 됩니다.
  • 보안 센터 설정 미흡
    "서명된 매크로만 실행" 또는 "모든 매크로 차단" 옵션이 활성화되어 있는 경우, 인증서가 유효해도 실행이 제한됩니다.
  • GPO(그룹 정책) 적용
    회사나 조직의 정책에서 로컬 인증서 또는 매크로 실행을 제한한 경우도 있으며, 로컬 설정만으로는 우회가 불가능합니다.

인증서 신뢰 설정을 통한 문제 해결

엑셀에서 인증서가 신뢰되지 않는 상황을 방지하기 위해서는 인증서 설치 및 신뢰할 루트 인증 기관에 등록하는 것이 우선입니다.

1. 인증서 내보내기 및 설치

  1. 엑셀에서 서명한 .xlsm 파일을 열고,
  2. 파일 > 정보 > 디지털 서명 보기에서 인증서 선택
  3. 인증서 보기 > 인증서 복사 > 로컬 컴퓨터 저장소
  4. 위치: 신뢰할 루트 인증 기관에 추가

🔐 이 작업은 관리자 권한이 필요합니다.

2. 보안 센터에서 매크로 허용 설정

다음 경로에서 엑셀의 매크로 실행 정책을 확인합니다:

  • 파일 > 옵션 > 보안 센터 > 보안 센터 설정
  • 매크로 설정에서 아래 항목 선택:
    • 서명된 매크로만 실행
    • VBA 프로젝트 개체 모델에 안전한 액세스 허용

⚠️ "모든 매크로 차단"을 선택한 경우, 인증서 여부와 관계없이 차단됩니다.


실전 예: 자가 서명 인증서 만들기 및 매크로 서명

1. SelfCert.exe를 이용해 인증서 생성

"C:\Program Files (x86)\Microsoft Office\root\Office16\SelfCert.exe"

이 도구를 실행해 원하는 이름으로 인증서를 생성합니다.

2. 인증서로 VBA 매크로 서명하기

Sub 서명예시()
    MsgBox "이 매크로는 서명되어 실행 중입니다."
End Sub
  1. VBE(Alt + F11) > 도구 > 디지털 서명
  2. 앞서 만든 인증서 선택

서명 이후에는 코드를 절대 변경하면 안 됩니다. 수정 시 서명이 무효화됩니다.


코드 무결성 유지 팁

  • .bas, .cls 파일로 외부 저장 후 수정하고, 다시 서명
  • 엑셀 파일이 아닌 템플릿 파일(.xltm) 형태로 배포
  • 코드 수정이 잦은 경우에는 문서 보호 또는 실행 시점의 인증 체크 루틴 추가
Sub CheckSignature()
    If Not ThisWorkbook.HasVBProject Then
        MsgBox "매크로가 없습니다."
        Exit Sub
    End If

    If Not ThisWorkbook.VBProject.Protection = vbext_pp_locked Then
        MsgBox "보호되지 않은 매크로입니다. 수정 후 재서명 필요."
    End If
End Sub

조직 환경에서의 차단 우회

회사에서 그룹 정책으로 매크로 실행을 제한한 경우는 아래와 같은 방법이 필요합니다:

  • IT 관리자에게 인증서 등록 요청
  • 서명된 매크로를 신뢰된 네트워크 경로(Trusted Location)에 저장
  • 로컬 정책 또는 레지스트리 변경 (관리자 권한 필요)
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Security]
"AccessVBOM"=dword:00000001
"VBAWarnings"=dword:00000002

정책 적용 후 엑셀을 다시 시작해야 적용됩니다.


요약 및 추가 팁

엑셀에서 VBA 코드가 인증서 서명 후에도 매크로 차단되는 문제는 신뢰 설정, 보안 정책, 서명 무효화 등 여러 요소가 복합적으로 작용합니다.

중요 요점 요약:

  • 서명한 인증서를 반드시 루트 인증서 저장소에 등록
  • 서명 이후 코드 수정은 금지
  • 보안 센터 및 조직 정책(GPO) 설정 확인
  • SelfCert.exe 도구로 테스트 인증서 생성 가능
  • 신뢰된 위치(Trusted Location) 기능을 적극 활용

서명된 매크로라도 잘못된 환경에서는 차단될 수 있습니다. 배포 전 테스트 환경에서 항상 점검하세요.

반응형