ServBay 코드 서명 인증서 신청 및 사용 방법
개요
소프트웨어 개발 및 배포 과정에서 코드 서명은 사용자 신뢰 확보와 코드의 무결성 보장을 위한 핵심 단계입니다. 개발자는 코드에 디지털 서명을 함으로써 소프트웨어의 출처를 증명하고, 서명 이후 코드가 변조되지 않았음을 확인할 수 있습니다.
ServBay는 개발자가 로컬 환경에서 ServBay 내부 CA가 발급하는 코드 서명 인증서를 손쉽게 신청하고 사용할 수 있도록 지원합니다. 이 인증서는 다음과 같은 목적에 적합합니다:
- 로컬 개발 또는 테스트 단계에서 소프트웨어에 서명하여 실제 서명 프로세스를 시뮬레이션할 때
- 내부용 스크립트, 도구, 앱 등에 서명해 팀 또는 신뢰할 수 있는 환경에서 출처 및 무결성을 검증할 때
- 값비싼 상용 코드 서명 인증서 없이 코드 서명 전 과정을 학습하고 실습할 때
중요 안내: ServBay 내부 CA가 발급한 코드 서명 인증서는 공용 신뢰되는 인증 기관(예: Let's Encrypt, Comodo 등)이 발급하는 인증서가 아닙니다. 이 인증서는 공용 운영체제나 브라우저에서 자동으로 신뢰되지 않으며, 따라서 최종 사용자 배포용 상용 소프트웨어, 앱스토어 제출, macOS Gatekeeper와 같은 OS 보안 검증이 필요한 상황 등 공개 신뢰가 필요한 환경에서는 사용할 수 없습니다. 이러한 인증서는 오직 로컬 개발, 테스트, 또는 통제된 환경에서만 활용해야 합니다.
코드 서명 인증서란?
코드 서명 인증서는 실행 파일, 스크립트, 라이브러리 등 소프트웨어 코드에 디지털 서명을 하기 위한 디지털 인증서입니다. 그 주요 목적은 신뢰와 보안을 구축하는 데 있습니다.
- 소프트웨어 배포자 신원 확인: 인증서에는 배포자 정보가 포함되어 있으며, 서명은 소프트웨어가 해당 개발자(또는 조직)에서 나왔음을 증명합니다.
- 코드 무결성 보장: 서명의 본질은 코드 내용의 해시값 생성과 비밀키 암호화에 있습니다. 검증 시, 시스템은 다시 해시를 계산해 공개키로 서명을 해독하여 대조합니다. 코드가 변경되었다면 해시가 일치하지 않아 서명 검증에 실패하고, 이로 인해 코드가 변조되었음을 알 수 있습니다.
- 사용자 신뢰도 향상: 운영체제나 보안 소프트웨어는 미서명 또는 미확인 배포자의 소프트웨어에 알림이나 경고를 표시합니다. 코드 서명 인증서를 사용함으로써(신뢰된 환경이거나 ServBay CA를 수동으로 신뢰 체인에 추가한 경우) 이런 경고를 제거할 수 있고, 설치 및 사용에 대한 신뢰도를 높입니다.
- 악성 소프트웨어 유포 방지: 코드 서명을 통해 사용자는 합법적인 소프트웨어와 위장된 악성 프로그램을 구분할 수 있어, 악성 코드 확산을 예방할 수 있습니다.
ServBay를 통한 코드 서명 인증서 신청
ServBay에서는 로컬 환경에서 코드 서명 인증서를 간단히 발급받을 수 있습니다.
SSL 인증서 관리 패널 열기: ServBay 앱의 사이드바에서 "SSL Certificates" 메뉴를 클릭합니다.
새 인증서 요청 생성: SSL 인증서 관리 화면 오른쪽 상단에서 "+"(추가) 버튼을 클릭합니다.
인증서 정보 입력: "Request Certificate"(인증서 요청) 화면에서 다음 주요 정보를 입력해야 합니다:
- Common Name (공통 이름): 조직명이나 개인 이름을 입력합니다. 예:
ServBay, LLC
또는ServBay Demo Developer
. - Usage Purpose (용도): 인증서 용도를 선택합니다.
Code Signing
을 선택하세요. - Request Method (요청 방법): 인증서 발급 방식을 선택합니다.
ServBay CA
를 선택하여 내장된 인증서 발급 기능을 사용합니다. - Issuer (발급자): 인증서 발급에 사용할 ServBay 내부 CA를 선택합니다. 일반적으로
ServBay User CA
를 선택합니다. - Algorithm (알고리즘): 키 쌍 생성에 사용할 암호화 알고리즘을 선택합니다. 흔히
ECC
(타원 곡선 암호) 또는RSA
를 사용합니다. ECC는 동일한 보안 강도에서 더 짧은 키로 높은 보안을 제공합니다. - Key Length (키 길이): 선택한 알고리즘의 키 길이를 정합니다. ECC의 경우 예를 들어
384
, RSA는2048
또는4096
등. 키가 길어질수록 보안은 향상되지만 처리 속도는 느려질 수 있습니다. - Password (비밀번호): 매우 중요! 인증서 개인 키를 보호하기 위해 강력한 비밀번호를 설정합니다. 이 비밀번호는 인증서를
.p12
파일로 내보낼 때와 코드 서명 툴에서 사용할 때 필요합니다. 이 비밀번호는 반드시 기억해야 하며, 잃어버린 경우 ServBay에서 복구해드릴 수 없습니다. 자신만의 고유하고 안전한 비밀번호를 정하세요. (참고: 예시 스크린샷의ServBay.dev
는 단순 샘플일 뿐, 실제 사용 시 반드시 강력한 비밀번호를 사용하세요.)
샘플 화면이며 실제 정보에 따라 입력하세요
- Common Name (공통 이름): 조직명이나 개인 이름을 입력합니다. 예:
인증서 신청 제출: 모든 정보를 입력하고 확인했다면, 화면 하단의 "Request" 버튼을 클릭합니다. ServBay가 지정한 ServBay User CA를 사용해 자동으로 코드 서명 인증서를 발급합니다.
인증서 내보내기 및 사용법
성공적으로 코드 서명 인증서를 신청했으면, 각종 코드 서명 도구에서 사용하기 위해 표준 형식으로 내보내야 합니다. ServBay가 내보내는 기본 포맷은 .p12
입니다.
SSL 인증서 관리 패널 접속: ServBay 사이드바에서 "SSL Certificates"를 클릭합니다.
코드 서명 인증서 찾기: 인증서 목록에서 용도가 "Code Signing"인 방금 신청한 인증서를 찾으세요.
내보내기 실행: 해당 인증서 항목 오른쪽 내보내기 아이콘(일반적으로 오른쪽 화살표) 클릭.
내보내기 위치 및 비밀번호 지정: 팝업창에서 인증서 파일을 저장할 로컬 폴더를 선택합니다. 내보내기 포맷은 주로
.p12
(PKCS#12)입니다. 이 파일에는 코드 서명 인증서와 해당 개인 키가 모두 포함되어 있어 비밀번호로 보호됩니다. 인증서 신청 시 입력한 비밀번호로 내보내기를 완료합니다.코드 서명 도구에서 인증서 사용: 내보낸
.p12
파일을 코드 서명 도구에 임포트합니다. OS와 개발환경에 따라 사용 방법이 다릅니다:- macOS: 내장
codesign
CLI 툴 사용..p12
를 Keychain Access(키체인 접근)에 먼저 임포트해야 할 수 있습니다. - Windows: Windows SDK의
signtool.exe
사용. `.p12``를 Windows 인증서 관리자에 임포트해야 할 수도 있습니다. - 기타 플랫폼/툴체인: 사용하는 기술스택, 빌드툴(예: Java의
jarsigner
, .NETSignTool
, Go의 서드파티 서명 툴 등)에 맞는 임포트/서명 방법을 참고하세요. 일반적으로.p12
경로와 개인키 비밀번호 입력이 필요합니다.
- macOS: 내장
인증서 임포트가 끝나면 해당 인증서로 코드, 애플리케이션, 드라이버 등을 디지털 서명할 수 있습니다.
코드 서명 인증서를 활용한 코드 서명 예시 (macOS)
아래 예제는 macOS에서 ServBay에서 내보낸 .p12
인증서를 이용해 간단한 바이너리 파일을 codesign
도구로 서명 및 검증하는 과정입니다.
이미 ServBay에서 내보낸 .p12
파일을 macOS의 키체인 접근에 임포트했고, 임포트 시 비밀번호를 정확히 입력했다고 가정합니다.
bash
# 1. 서명 테스트용 간단한 C 소스 파일 생성
# 아래 내용을 test.c로 저장
cat <<EOF > test.c
#include <stdio.h>
int main() {
printf("Hello, ServBay Code Signing!\n");
return 0;
}
EOF
# 2. gcc로 C 파일을 컴파일하여 바이너리 생성
# -o /tmp/test로 /tmp/test라는 이름으로 만듭니다
gcc test.c -o /tmp/test
echo "컴파일 성공, /tmp/test 생성됨"
# 3. 코드 서명 가능한 인증서 신원(Identity) 찾기
# -v는 자세한 정보 출력, -p codesigning은 코드 서명용 인증서 필터
# 인증서에 해당하는 Common Name 또는 해시값(예: 99C183BC3796067FAFBA6F232D1C3C3425DAABDA) 확인
security find-identity -v -p codesigning
# 예시 출력:
# 1) ABCDEF1234567890ABCDEF1234567890ABCDEF12 "Apple Development: Your Name (XYZ123)"
# 2) 99C183BC3796067FAFBA6F232D1C3C3425DAABDA "ServBay Demo Developer"
# 2 valid identities found
# ServBay 인증서의 해시 또는 Common Name("ServBay Demo Developer")을 기억해두세요
# 4. 찾은 인증서로 바이너리 파일 서명
# -f는 강제 서명(이미 서명된 경우 교체), -s는 신원 지정(해시 또는 Common Name)
# --timestamp는 타임스탬프 추가(옵션이지만 권장), /tmp/test은 서명 대상 경로
codesign -f -s "ServBay Demo Developer" --timestamp /tmp/test
# 혹은 해시 사용:
# codesign -f -s "99C183BC3796067FAFBA6F232D1C3C3425DAABDA" --timestamp /tmp/test
echo "/tmp/test가 코드 서명 인증서로 서명됨"
# 5. 서명 유효성 검증
# -dvvv로 매우 상세한 정보 표시
codesign -dvvv /tmp/test
# "Authority" 필드에 인증서 정보와 ServBay CA 체인이 표시됨
# "Signature size", "CDHash" 등으로 서명된 것 확인
# "Timestamp" 표시 여부 확인
# 예시 검증 출력 일부:
# Authority=ServBay Demo Developer
# Authority=ServBay User CA - ECC Code Signing
# Authority=ServBay Public CA - ECC Root
# Timestamp=Nov 7, 2024 at 18:26:48 (예시)
# 6. 파일 내용 수정해 서명 파괴하기
# 임의 데이터 입력해 해시값 변경
echo "abcde" >> /tmp/test
echo "/tmp/test 파일 내용이 변경됨"
# 7. 재검증
# 이때 서명 검증이 실패해야 함
codesign -dvvv /tmp/test
# 예시 출력:
# /tmp/test: code object is not signed at all
# 또는 그와 비슷한 오류로, 서명이 무효화됨(내용이 달라졌기 때문)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
설명:
security find-identity
는 키체인에 있는 특정 용도(codesigning
)의 인증서 목록을 보여줍니다. ServBay 인증서에 해당하는 신원(Common Name 또는 해시) 확인하세요.codesign -f -s "Your Identity"
로 코드 서명을 실행합니다.--timestamp
는 신뢰할 수 있는 서명 시각을 추가해, 인증서 만료 후에도 서명 당시 인증서가 유효했고 타임스탬프가 확인되면 여전히 서명이 유효하게 인식되는 효과가 있습니다.codesign -dvvv
로 서명 검증 상세 정보를 확인합니다. 인증서 유효성, 신뢰 체인, 파일의 무결성(해시값 비교) 등을 볼 수 있습니다.- 마지막 단계에서 파일을 수정한 후 재검증을 하면, 코드 서명의 핵심인 무결성 검증이 동작함을 확인할 수 있습니다. 파일이 변경되면 서명이 즉시 무효가 됩니다.
인증서 갱신
ServBay가 발급한 코드 서명 인증서의 유효기간은 보통 800일입니다. 만료 전 언제든 ServBay의 SSL 인증서 관리에서 갱신할 수 있습니다.
- SSL 인증서 관리 패널로 이동
- 갱신할 코드 서명 인증서를 찾기
- 갱신 아이콘 클릭: 인증서 항목 오른쪽의 갱신 아이콘(순환 화살표) 클릭
- 갱신 확인: 갱신 버튼 클릭 후, ServBay가 현 시점부터 800일 유효한 새 인증서를 발급합니다.
인증서 삭제
더 이상 필요 없는 코드 서명 인증서는 ServBay에서 삭제할 수 있습니다.
- SSL 인증서 관리 패널로 이동
- 삭제할 인증서 선택
- 삭제 아이콘 클릭: 인증서 항목 오른쪽 쓰레기통 아이콘 클릭
- 삭제 확인: 팝업 확인창에서 "Delete"를 선택해 다시 한 번 삭제의사를 확인합니다. 삭제된 인증서는 복구할 수 없습니다.
자주 묻는 질문 (FAQ)
Q: ServBay가 발급하는 코드 서명 인증서는 무료인가요?
A: 네, ServBay 내부 CA가 발급하는 인증서는 ServBay 기본 제공 기능이므로 추가 비용이 들지 않습니다.
Q: ServBay로 발급받은 인증서로 상용 소프트웨어에 서명 후 배포해도 되나요?
A: 불가합니다. ServBay 인증서는 내부 CA가 발급한 것으로, 공용 OS나 앱스토어에서 신뢰하지 않습니다. 로컬 개발, 테스트, 내부 한정 환경에서만 사용해 주세요. 공개 배포용 소프트웨어는 공인 인증기관에서 코드 서명 인증서를 구매해야 합니다.
Q: .p12
내보내기 비밀번호를 잊어버렸어요. 어떻게 하나요?
A: ServBay는 개인 키 비밀번호를 저장하지 않습니다. 잊어버렸다면 해당 인증서의 개인 키를 내보내거나 사용할 수 없으니, 인증서를 삭제 후 신규로 재발급받으셔야 합니다.
Q: ServBay User CA를 내 OS 신뢰 저장소에 추가할 수 있나요?
A: 네, ServBay User CA 인증서를 내보내어 수동으로 OS나 브라우저의 신뢰 저장소에 임포트할 수 있습니다.
요약
ServBay가 제공하는 코드 서명 인증서 기능은 개발자가 로컬 환경에서 소프트웨어 서명 테스트 및 내부 도구 서명을 간편하게 진행할 수 있도록 도와줍니다. 이 가이드를 통해 ServBay에서 코드 서명 인증서를 신청, 내보내기, 사용하는 기본 절차를 살펴보았습니다. 이 인증서는 개발/테스트 용도로만 사용해야 하며, 공용 신뢰가 필요한 환경에는 반드시 공개적으로 신뢰받는 인증기관의 인증서를 이용해야 함을 명심하세요.
신청 또는 사용 시 문제가 발생하면 ServBay 공식 문서 혹은 커뮤니티 지원 포럼에서 추가 정보를 확인하시기 바랍니다.