인코딩 포맷
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 포맷을 사용하는 경우가 많다. (아래 내용 참고)
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-----
단순 확장자
CRT 확장자
Certificate의 약자
인증서를 의미하는 CERT 의 약자로 보통 PEM 형식의 인증서를 의미한다.
즉 확장자는 .crt이지만 열어보면 PEM 파일과 동일하다. Linux 나 Unix 계열에서 .crt 확장자를 많이 사용한다.
CER 확장자
Certificate의 약자
Windows 에서 인증서를 내보내기 할 때 사용하는 확장자로, 이 또한 대부분 PEM 포맷을 사용한다.
유닉스, 리눅스 계열에서는 Cert를 CRT로 줄이고, 윈도우에선 Cert를 CER로 줄였을 뿐, 일반적으론 차이가 없다. (PEM 포맷)