시작 앱 목록에 CROSSCERT 로 시작하는 항목이 세 줄 나란히 있다. "CROSSCERT UniCRSV3", "CROSSCERT UniCRSV3 Daemon", "CROSSCERT Notify Center". 하나의 프로그램이 시작 항목을 셋이나 차지하는 경우는 드물다. 한국전자인증(CrossCert)의 공동인증서 프로그램 UniCRS 가 그렇다.
서비스 대신 Run 키 세 개
설치된 앱 목록의 이름은 "CROSSCERT UniCRSV3 2.0.24.0", 게시자 Crosscert, 지원 주소는 open.crosscert.com 이다. 한국전자인증 인증서로 로그인하거나 서명하는 사이트가 설치를 요구하는 프로그램으로, 폴더는 C:\Program Files (x86)\Crosscert\UniSignCRSV3 다. 시작 프로그램(Run 키)에 등록된 세 항목은 이렇다.
| Run 항목 이름 | 실행 파일 | 이 PC 에서 본 상태 |
|---|---|---|
| CROSSCERT UniCRSV3 | UniCRSLocalServer.exe 2.0.24.0 | 실행 중, 작업 집합 13.6MB / 개인 46.6MB |
| CROSSCERT UniCRSV3 Daemon | CCDaemon.exe | 실행 중, 11.3MB / 9.5MB |
| CROSSCERT Notify Center | UniCRSNotiCenter.exe 1.0.0.2 | 실행 중이 아님 |
세 파일 모두 CROSSCERT 서명이 유효했다. 앞의 두 편과 달리 서비스는 없다. 그래서 로그인하기 전에는 아무것도 뜨지 않고, 관리자 권한이 아니라 로그인한 사용자 권한으로 돈다. 이 연재에서 본 다른 인증서 프로그램들이 대부분 LocalSystem 서비스를 둔 것과 비교하면 권한 면에서는 오히려 가벼운 구조다.
프로세스의 부모를 따라가 보면 UniCRSLocalServer.exe 는 CCDaemon.exe 의 자식이었다. Run 키가 둘을 모두 띄우도록 되어 있지만 실제로 지금 떠 있는 로컬 서버는 데몬이 띄운 것이다. 데몬이 로컬 서버를 감시하다 꺼지면 다시 띄우는 역할로 보인다. 서비스 대신 데몬 프로세스가 같은 일을 하는 셈이다. Notify Center 는 이름으로 보아 인증서 만료 안내 같은 알림을 띄우는 프로그램으로 보이는데, 확인한 시점에는 떠 있지 않았다.
0.0.0.0:15018 과 방화벽 규칙
UniCRSLocalServer.exe 는 0.0.0.0:15018 에서 연결을 기다리고 있었다. 19편에서 본 대로 0.0.0.0 은 이 PC 의 모든 네트워크 주소에서 연결을 받는다는 뜻이다. Windows 방화벽에는 "UniCRSLocalServer" 라는 이름의 들어오는 연결 허용 규칙이 두 개 있었다. 프로필은 개인·공용, 포트와 원격 주소에는 제한이 없었다. 처음 실행할 때 뜨는 "방화벽 액세스 허용" 창에서 허용을 누르면 TCP 와 UDP 규칙이 하나씩 생기는데, 그 모양과 같다.
웹 페이지와 이어지기만 하면 되는 로컬 서버라면 127.0.0.1 로 충분해 보인다. 같은 PC 의 SignKorea 와 KICA 는 실제로 127.0.0.1 만 쓰고 있었다. 15018 에 단순한 TLS 접속을 해 보았지만 인증서는 받아 내지 못했다. 다른 기기에서 접속해 보지는 않았기 때문에, 바깥에서 닿았을 때 프로그램이 무엇에 응답하는지도 확인하지 않았다.
루트 인증서 저장소에는 Crosscert_Trust_Root_CA 가 있었다. 기간은 2025년 9월 18일부터 2035년 9월 16일까지 10년이고, 이 연재에서 본 루트 중에서는 드물게 3072비트 키였다. 발급일이 설치일과 맞지 않으므로 앞 편의 KICA 처럼 제품에 담겨 오는 고정 루트로 보인다.
폴더 안에 남아 있던 것
폴더를 열어 보면 눈에 걸리는 파일이 몇 개 있다.
먼저 libeay32.dll 과 ssleay32.dll 이다. 이 파일 이름은 OpenSSL 1.0 계열까지 쓰던 이름이고, 버전 정보는 1.0.2a 였다. OpenSSL 1.0.2a 는 2015년 3월에 나온 판이고, 1.0.2 계열 전체의 공개 지원은 2019년 말에 끝났다. 1.0.2a 이후에 고쳐진 취약점도 여럿 있다. 다만 이 DLL 을 프로그램이 어떤 기능에 어떻게 쓰는지에 따라 실제 영향은 달라지고, 그것은 파일만 봐서는 알 수 없었다. 11편의 IPinside 가 OpenSSL 3.0 계열로 옮겨 간 것과 대비된다.
다음은 설치 도우미 파일들이다. VC_redist.x86.exe(13.5MB)와 KB2999226-x64.msu 가 프로그램 폴더 안에 그대로 남아 있었다. 앞의 것은 Visual C++ 재배포 패키지 설치 파일이고, 뒤의 것은 Windows 7·8.1 에 Universal C 런타임을 넣는 업데이트다. 설치할 때 필요한 것을 깔고 나서 지우지 않은 것으로 보인다. Windows 11 에서는 쓸 일이 없는 파일이지만 지워도 되는지는 제거 프로그램에 맡기는 편이 낫다.
사용자 폴더 쪽에는 %USERPROFILE%\AppData\LocalLow\CrossCert\UniSign 폴더가 있었다. 17편의 NPKI 폴더와 같은 LocalLow 아래다.
지우는 방법
한국전자인증 인증서를 쓰는 사이트를 PC 로 쓰지 않는다면 지워도 된다. 설정 → 앱 → 설치된 앱에서 "CROSSCERT UniCRSV3" 를 제거한다. 등록된 제거 명령은 다음과 같다.
C:\Program Files (x86)\Crosscert\UniSignCRSV3\uninst.exe
데몬이 로컬 서버를 다시 띄우는 구조라, 제거가 파일 잠김으로 실패하면 재부팅한 직후 다른 프로그램을 열기 전에 다시 시도한다. 제거 뒤에는 시작 앱 목록에서 CROSSCERT 세 줄이 사라졌는지, 방화벽 규칙 "UniCRSLocalServer" 두 개가 정리됐는지 본다. 방화벽 규칙은 제어판의 "Windows Defender 방화벽 → 고급 설정 → 인바운드 규칙"에서 이름으로 찾는다. 마지막으로 certlm.msc 에서 Crosscert_Trust_Root_CA 를 확인한다.
다음 편은 이름부터 낯선 CoreB2B ExEcm 이다. 설정 파일에는 127.0.0.1 이라고 적혀 있는데, 실제로는 0.0.0.0 에서 포트를 열고 있었다.