임베디드 관련 카테고리/프로토콜
SSL/TLS 인증서 파일 확장자 종류(pem, key, csr, crt) 및 사용 가이드
CBJH
2025. 3. 11. 15:57
728x90
반응형
1. SSL/TLS 인증서 관련 주요 파일 형식
1.1 PEM (Privacy Enhanced Mail)
- 가장 일반적인 인증서 포맷
- Base64로 인코딩된 텍스트 파일
- 보통 .pem, .crt, .cer, .key 확장자 사용
- -----BEGIN CERTIFICATE-----와 -----END CERTIFICATE----- 형태로 시작과 끝 표시
- 인증서, 개인 키, 공개 키, 인증서 체인 등 다양한 정보를 포함할 수 있음
1.2 키 파일 (.key)
- 개인 키(Private Key)가 저장된 파일
- 서버에서만 보관하고 절대 외부에 노출되면 안 됨
- SSL/TLS 연결 시 암호화 및 복호화에 사용
- 내부적으로는 보통 PEM 형식 사용
1.3 CSR (Certificate Signing Request) 파일
- 인증서 서명 요청 파일
- 인증 기관(CA)에 인증서 발급을 요청할 때 제출하는 파일
- 웹사이트 정보와 공개 키를 포함
- .csr 확장자 사용
1.4 CRT (Certificate) 파일
- 서명된 SSL/TLS 인증서 파일
- CA에서 CSR을 검증하고 서명한 후 발급
- 웹 서버에 설치하여 클라이언트에게 제공
- .crt 또는 .cer 확장자 사용
- 내부적으로는 보통 PEM 형식 사용
1.5 레포키(Repo Key)
- 일반적으로 코드 저장소(Repository)에 접근하기 위한 인증 키
- Git과 같은 버전 관리 시스템에서 사용
- SSL 인증서와는 직접적인 관련이 적으나, 보안 통신에 사용되는 키의 한 종류
2. PEM 형식과 파일 확장자의 관계
2.1 PEM 형식의 특징
- PEM은 파일 내용의 형식을 나타냄
- .pem, .crt, .key 등은 파일의 용도를 나타내는 확장자
2.2 확장자별 주요 용도
- .key: 주로 개인 키(Private Key)를 나타냄
- .crt, .cer: 주로 인증서(Certificate)를 나타냄
- .pem: 위의 어느 것이든 포함할 수 있음 (범용적인 확장자)
2.3 PEM 파일의 내용 구분
PEM 파일은 시작과 끝 태그로 내용을 구분합니다:
-----BEGIN CERTIFICATE-----
(Base64 인코딩된 인증서 내용)
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
(Base64 인코딩된 개인 키 내용)
-----END PRIVATE KEY-----
이러한 태그를 통해 하나의 PEM 파일에 여러 종류의 데이터(인증서, 키, 체인 등)를 포함할 수 있습니다.
3. 인증서 발급 과정
- 개인 키(.key) 생성
- 개인 키를 이용해 CSR 파일 생성
- CSR 파일을 인증 기관(CA)에 제출
- CA가 검증 후 서명된 인증서(.crt) 발급
- 웹 서버에 개인 키(.key)와 인증서(.crt) 설치
4. 인증서 및 키 관련 작업 예시
4.1 인증서와 키 생성 (OpenSSL 사용)
# 개인 키 생성
openssl genrsa -out private.key 2048
# CSR 생성
openssl req -new -key private.key -out request.csr
# 자체 서명 인증서 생성 (테스트용)
openssl x509 -req -days 365 -in request.csr -signkey private.key -out certificate.crt
4.2 웹 서버 설정 (Nginx 예시)
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate.crt; # 인증서 파일
ssl_certificate_key /path/to/private.key; # 개인 키 파일
}
4.3 파일 변환 예시
# DER 형식에서 PEM 형식으로 인증서 변환
openssl x509 -inform der -in certificate.der -out certificate.pem
# PEM 형식의 인증서와 키를 하나의 파일로 결합
cat certificate.crt private.key > combined.pem
# PFX/PKCS#12 형식에서 PEM 형식으로 변환
openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes
4.4 인증서 정보 확인
# 인증서 내용 확인
openssl x509 -in certificate.crt -text -noout
# 개인 키 확인
openssl rsa -in private.key -check
# 인증서 체인 확인
openssl verify -CAfile ca.crt certificate.crt
4.5 MQTT TLS 설정 예시
# Mosquitto 브로커 설정
listener 8883
protocol mqtt
cafile /path/to/ca.crt
certfile /path/to/server.crt
keyfile /path/to/server.key
# 또는 단일 PEM 파일 사용
certfile /path/to/combined.pem # 인증서와 키가 모두 포함된 단일 파일
5. 주의사항
- 개인 키(.key)는 절대 외부에 노출되어서는 안 됨
- 프로덕션 환경에서는 인증서와 개인 키를 별도 파일로 분리하는 것이 보안상 권장됨
- 모든 인증서 파일에 적절한 권한 설정이 필요 (일반적으로 600 또는 400)
- 인증서 만료일을 주기적으로 확인하고 갱신 필요
- 자체 서명 인증서는 테스트 환경에서만 사용 권장