PEM과 CSR

2025. 6. 5. 15:58지식

 

PEM 파일이란?

PEM은 인증서, 공개키, 개인키 등을 텍스트 형식으로 저장하는 파일 포맷이다.

내부 데이터는 Base64로 인코딩 되어있고, 사람이 읽을 수 있는 형태이다. 

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASC...
(중간에 Base64로 인코딩된 암호화 키 데이터)
...snip...
-----END PRIVATE KEY-----

-----BEGIN PRIVATE KEY----- 와 -----END PRIVATE KEY----- 사이에 바이너리 데이터를 Base64로 인코딩한 문자열이 들어간다.

 

 

CSR 이란?

CSR은 인증서 발급은 요청하는 파일이다. CSR 안에는 공개키와 조직정보(회사명, 도메인명), 그리고 서명이 포함되어 있다. 이 서명은 해당 CSR이 진짜임을 증명하기 위해 개인키로 서명한 값이다. 

-----BEGIN CERTIFICATE REQUEST-----
MIICwDCCAagCAQAwgYkxCzAJBgNVBAYTAlJLMQswCQYDVQQIDAJHWTELMAkGA1UE
BwwCU0sxEjAQBgNVBAoMCUdBYmlhIEx0ZDEWMBQGA1UECwwNU0UgU2VjdGlvbjEW
MBQGA1UEAwwNKi5oaXdvcmtzLmNvbTEhMB8GCSqGSIb3DQEJARYSd2VibWFpbEBn
YWJpYS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+LJK03ZvR
...snip...
-----END CERTIFICATE REQUEST-----

-----BEGIN CERTIFICATE REQUEST----- ~ -----END CERTIFICATE REQUEST----- 사이에 CSR 데이터가 Base64로 인코딩되어있다.

 

CSR이 생성되는 과정

CSR은 PEM 파일에 저장된 개인키를 이용해서 생성된다.

openssl을 사용하여 csr 생성

CSR 생성시 핵심데이터(공개키, 조직정보)등을 SHA-256같은 해시 함수로 먼저 요약한다. 이 해시값을 개인키로 암호화해서 전자서명을 생성한다. 

즉, CSR 은 공개키, 주체정보, 전자서명, 서명알고리즘 등의 정보를 포함하고 있다. 

pem 에서 추출한 공개키와 CSR 에서 추출한 공개키가 일치하는지 검증을 거치면 좋다.

 

 

 

'지식' 카테고리의 다른 글

ASCII와 Base64  (0) 2025.06.04
Nginx의 $remote_addr  (0) 2025.05.15
TCP 연결 설정과 종료 과정  (0) 2025.03.30
HTTP 요청 메세지 분석  (0) 2025.03.29
인코딩의 종류  (0) 2025.03.29