인증서 포맷

From IT Wiki
Revision as of 16:22, 16 August 2022 by 보안공부메모 (talk | contribs) (새 문서: == PEM 포맷 & 확장자 == PEM (Privacy Enhanced Mail)은 Base64 로 인코딩한 텍스트 형식의 파일이다. 메모장으로 열어볼 수 있다. 원래는 이메일 보안에 사용되는 인코딩 포맷이었는데 이메일에서는 잘 쓰이지 않고 인증서 또는 키 값을 저장하는데 많이 사용된다. 모든 Binary 파일이 대상이 될 수 있다. 어떤 바이너리 파일을 PEM 으로 변환했는지 구분하기 위해 파일의 맨 앞에 d...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

PEM 포맷 & 확장자

PEM (Privacy Enhanced Mail)은 Base64 로 인코딩한 텍스트 형식의 파일이다. 메모장으로 열어볼 수 있다. 원래는 이메일 보안에 사용되는 인코딩 포맷이었는데 이메일에서는 잘 쓰이지 않고 인증서 또는 키 값을 저장하는데 많이 사용된다. 모든 Binary 파일이 대상이 될 수 있다.

어떤 바이너리 파일을 PEM 으로 변환했는지 구분하기 위해 파일의 맨 앞에 dash(-) 를 5 개 넣고 BEGIN 파일 유형을 넣고 다시 dash(-) 를 5개 뒤에 END 파일 유형 구문을 사용한다.

예시1 - 인증서 인코딩

-----BEGIN CERTIFICATE-----
MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5MQswCQYDVQQG
EwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24gUm9vdCBDQSAzMB4XDTE1MDUy
NjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZ
MBcGA1UEAxMQQW1hem9uIFJvb3QgQ0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZB
f8ANm+gBG1bG8lKlui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjr
Zt6jQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSrttvXBp43
rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkrBqWTrBqYaGFy+uGh0Psc
eGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteMYyRIHN8wfdVoOw==
-----END CERTIFICATE-----

예시2 - OpenSSH 개인 키 인코딩

-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABC/fXuBoa WboQk95dZ4Udj3AAAAEAAAAAEAAAGXAAAAB3NzaC1yc2EAAAADAQABAAABgQC+dEvO8yL7 XgY1NlP/vro77yxiqq/hKe4QHMplS/LnMbaKtZP1ijyMSuTGoIA+Aw9CUDpWKXwekrBXpm GvbDlmHQieRJPhh/3dW1xPKgRPAMiiA/9awSM0sFcjyH8NQcfweu93QMBZAg/WrsQz1l7j ..... -----END OPENSSH PRIVATE KEY-----

예시3 - 암호화된 개인 키 인코딩 개인키는 BEGIN RSA PRIVATE KEY 로 시작하며 암호화되었을 경우 Proc-Type: 과 DEK-Info 헤더에 암호화 알고리즘 정보를 표시한다.

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,754D916B5B2D2AF9ACDEED19908F0336

oB2JARMSnliQOgu4V96xwuqqo9rP/XXJbYFT6XEriBpVX/qOwSpAkLXAL71SB0VS
iEDdxK96zctIgo0q3zpowO2cx6uAxk4BIDWxvpM4A8xCFJgskpXeXpI5pnpgDiLO
...
-----END RSA PRIVATE KEY-----

확장자

PEM 포맷은 일반적으로 .pem 이라는 확장자를 사용하지만, 흔히 쓰이는 포맷이라.crt, .cer 등 다른 확장자임에도 PEM 포맷을 사용하는 경우가 많다. (아래 내용 참고)

CRT 확장자

Cert의 약자

인증서를 의미하는 CERT 의 약자로 보통 PEM 형식의 인증서를 의미한다.

즉 확장자는 .crt이지만 열어보면 PEM 파일과 동일하다. Linux 나 Unix 계열에서 .crt 확장자를 많이 사용한다.

CER 확장자

Cert의 약자

Windows 에서 인증서를 내보내기 할 때 사용하는 확장자로, 이 또한 대부분 PEM 포맷을 사용한다.

유닉스, 리눅스 계열에서는 Cert를 CRT로 줄이고, 윈도우에선 Cert를 CER로 줄였을 뿐, 일반적으론 차이가 없다. (PEM 포맷)

DER 포맷

Distinguished Encoding Rules

DER 포맷의 파일은 PEM과 같은 텍스트 형식의 파일이 아닌, 바이너리 형태로 인코딩한 포맷이다. 확장자 또한 .der을 사용한다.

메모장으론 열어볼 수 없고 DER을 인식할 수 있는 프로그램이 있어야 한다. (ASN.1 파서 등)

CSR 포맷

Certificate Signing Request

CSR 포맷은 인증기관(CA)에 인증서 발급 요청을 하는 특별한 ASN.1 형식의 파일이며 그 안에는 내 공개키 정보와 사용하는 알고리즘 정보등이 들어 있다.

CSR 생성 시 보통 PEM 포맷으로 인코딩해서 전달하며 다음과 같은 PEM 헤더가 붙어 있다.

위의 다른 포맷이나 확장자들과 달리 인증서 파일이 아니다. 인증서 요청용 파일이다.

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDZjCCAs8CAQAwajELMAkGA1UEBhMCS1IxETAPBgNVBAgMCHdvb3dhaGFuMREw
DwYDVQQHDAh3b293YWhhbjERMA8GA1UECgwId29vd2FoYW4xETAPBgNVBAsMCHdv
b3dhaGFuMQ8wDQYDVQQDDAZhZGJldGEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
...
-----END NEW CERTIFICATE REQUEST-----

참고 문헌