Appearance
시작하기
모바일 신분증 연동을 위한 DID와 Wallet을 직접 생성하고 설정하는 과정을 단계별로 안내해요.
1. 파일 다운로드 및 환경 구성
SP 서버에서 사용할 DID 및 Wallet 생성을 위해 필요한 파일과 환경을 먼저 준비해야 해요.
- DID 생성 도구 다운로드
- 압축을 해제한 뒤, 실행 스크립트가 포함된 폴더를 확인해요.
SP 서버 Wallet & DID 생성가이드라는 이름으로 검색해서 관련 문서를 참고할 수 있어요.- Java가 설치되어 있어야 하며,
JAVA_HOME환경변수 설정도 필요해요.
폴더 구성
압축을 풀면 다음과 같은 파일 구성이 나와요

2. DID 및 Wallet 생성
설정에 필요한 항목 정리
application.properties 설정 파일에 입력해야 할 값들이 아래 단계에서 생성돼요.
| 항목명 | 설명 | 입력 시점 |
|---|---|---|
PASSWORD | Wallet 비밀번호 | 2.3 |
SIGN KEY ID | 서명 키 ID | 2.4 |
ENCRYPT KEY ID | 암호화 키 ID | 2.5 |
wallet, did | 생성된 파일 경로 확인 | 2.8 |
실행 스크립트 실행
운영체제에 따라 스크립트를 실행해요.
Linux:
create_doc_linux.sh
Windows:
create_doc_window.bat
초기 화면
실행하면 아래와 같은 화면이 뜨고, 개발 환경에 따라 1 또는 2를 선택해요.

비밀번호 입력
Wallet 생성에 사용할 비밀번호를 입력해요.

예시 입력: komsco1
SIGN KEY ID 입력
Wallet에 추가할 서명 키 ID를 입력해요.

- 예시:
komsco.sp - 확장자는
.sp로 끝나야 해요. - 기본값으로 생성하려면 그냥
Enter만 눌러요.
ENCRYPT KEY ID 입력
Wallet에 추가할 암호화 키 ID를 입력해요.

- 예시:
komsco.sp.rsa - 확장자는
.sp.rsa로 끝나야 해요. - 기본값 사용 시
Enter
DID Document 파일명 입력
DID Document 파일 이름을 지정해요.

- 예시:
komsco.did - 확장자는
.did로 끝나야 해요. - 기본값 사용 시
Enter
생성 완료 메시지 확인
아래와 같은 메시지가 뜨면 생성이 완료된 거예요.

생성 결과 확인
지정된 경로에 .wallet, .did 파일이 생성되어 있어요.

DID Document 예시 및 설명
DID Document는 탈중앙화 신원(DID)을 표현하는 표준 문서예요. 생성된 .did 파일은 JSON 형식이며, 다음과 같은 구조로 되어 있어요.
예시 .did 파일 내용
json
{
"@context": "https://www.w3.org/ns/did/v1",
"id": "did:example:komsco.sp",
"verificationMethod": [
{
"id": "did:example:komsco.sp#key-1",
"type": "Ed25519VerificationKey2018",
"controller": "did:example:komsco.sp",
"publicKeyBase58": "3Hh4m1rD4Fq13tSn9xgPVbzx..."
}
],
"authentication": [
"did:example:komsco.sp#key-1"
],
"assertionMethod": [
"did:example:komsco.sp#key-1"
]
}필드 설명
| 항목 | 설명 |
|---|---|
@context | DID 문서가 따르는 JSON-LD 문맥 정의예요. |
id | 해당 DID의 고유 식별자예요. |
verificationMethod | DID 소유자가 사용하는 공개키 정보 목록이에요. |
└ id | 공개키 식별자예요. 보통 DID#키이름 형식이에요. |
└ type | 공개키 형식이에요. 예: Ed25519VerificationKey2018 |
└ controller | 이 키를 소유하는 DID예요. |
└ publicKeyBase58 | 공개키를 Base58 방식으로 인코딩한 값이에요. |
authentication | 이 DID를 인증할 때 사용할 키의 참조예요. |
assertionMethod | 서명이나 증명 용도로 사용할 수 있는 키의 참조예요. |
INFO
- 생성된
.did파일은 검증 서비스에서 VP를 확인할 때 사용돼요. - 이 문서는 블록체인에 등록되거나 로컬에서 사용할 수 있어요.
- 공개키는 DID 기반 서명 검증에 반드시 필요해요.
- 이 파일은 사용자가 변경하면 안 되고, 생성 도구를 통해 만들고 관리해야 해요.
Wallet 파일 설명
.wallet 파일은 DID와 연결된 키 정보를 암호화해 저장한 파일이에요.
DID 서명, 인증, VC 발급 등 다양한 작업에 필요한 개인키와 메타 정보를 포함하고 있어요.
주요 역할
- DID에 연관된 서명키와 암호화키를 안전하게 저장해요.
- 개인키는 평문으로 노출되지 않고, 비밀번호로 암호화돼 있어요.
- 이 파일 없이는 VC 발급이나 서명 같은 핵심 기능을 수행할 수 없어요.
구조 예시 (*.wallet 내부)
암호화된 파일이기 때문에 일반적으로 직접 열어보진 않지만, 디코딩 후의 논리 구조는 아래와 비슷해요.
json
{
"id": "did:example:komsco.sp",
"type": "Wallet",
"keys": [
{
"id": "komsco.sp",
"type": "Ed25519",
"publicKey": "3Hh4m1rD4Fq13tSn9xgPVbzx...",
"privateKey": "<암호화됨>",
"usage": "signing"
},
{
"id": "komsco.sp.rsa",
"type": "RSA",
"publicKey": "MIIBIjANBgkqhkiG9w0BAQE...",
"privateKey": "<암호화됨>",
"usage": "encryption"
}
]
}필드 설명
| 항목 | 설명 |
|---|---|
id | Wallet이 연결된 DID 식별자예요. |
type | 객체의 유형이예요. 항상 "Wallet"로 고정돼요. |
keys | DID에 포함된 키 목록 배열이에요. |
└ id | 키의 고유 식별자로서 보통 SIGN, ENCRYPT 용도로 나뉘어요. |
└ type | 키 유형으로 Ed25519, RSA 등이 있어요. |
└ publicKey | 공개키 문자열이에요. |
└ privateKey | 암호화된 개인키예요. 이 값은 암호화돼 있으므로 노출되지 않아요. |
└ usage | 키의 용도이며 signing, encryption 등으로 구분돼요. |
주의사항
.wallet파일은 비밀번호가 있어야만 열 수 있어요.- 이 파일이 유출되면 DID 기반 인증이 위협받을 수 있으니 꼭 안전하게 보관하세요.
- 다른 시스템으로 이동하거나 백업할 때도
.wallet과.did파일을 함께 관리해야 해요.
활용 예시
- VC 발급 시: issuer가
wallet을 통해 VC에 서명해요. - VP 생성 시: holder가
wallet의 키로 VP에 서명해요. - 검증 요청 시: verifier는
wallet의 공개키가 담긴 DID 문서로 서명을 검증해요.