인증서 포맷

From IT Wiki
Revision as of 16:24, 16 August 2022 by 보안공부메모 (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

인코딩 포맷[edit | edit source]

PEM 포맷[edit | edit source]

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 포맷을 사용하는 경우가 많다. (아래 내용 참고)

DER 포맷[edit | edit source]

Distinguished Encoding Rules

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

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

CSR 포맷[edit | edit source]

Certificate Signing Request

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

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

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

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

단순 확장자[edit | edit source]

CRT 확장자[edit | edit source]

Certificate의 약자

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

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

CER 확장자[edit | edit source]

Certificate의 약자

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

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

참고 문헌[edit | edit source]