모든 SSL 문서 SSL 및 인증서

SSL 인증서 형식: PEM, PFX, DER 설명

SSL 인증서와 개인키는 여러 파일 형식으로 저장할 수 있습니다. 내용은 동일하며 인코딩과 패키징 방식이 다릅니다. 대부분의 혼란은 서버에 특정 형식이 필요할 때 발생합니다.

형식 비교

형식확장자인코딩포함 내용사용처
PEM.pem, .crt, .cer, .keyBase64 (텍스트)인증서, 키 또는 체인 (파일당 하나)Nginx, Apache, 대부분의 Linux 서버
DER.der, .cer바이너리단일 인증서 또는 키Java, 일부 Windows 앱
PFX/PKCS#12.pfx, .p12바이너리인증서 + 키 + 체인을 하나의 파일로Windows IIS, Azure, macOS 키체인

PEM — 가장 일반적인 형식

PEM(Privacy Enhanced Mail)은 Base64로 인코딩된 텍스트입니다. 텍스트 편집기로 열 수 있습니다:

-----BEGIN CERTIFICATE-----
MIIFYjCCBEqgAwIBAgISA8ht...
(base64 encoded data)
-----END CERTIFICATE-----

PEM 파일은 인증서, 개인키 또는 인증서 체인을 포함할 수 있습니다. 헤더가 내용물을 알려줍니다:

  • BEGIN CERTIFICATE — 인증서
  • BEGIN PRIVATE KEY — 개인키 (또는 BEGIN RSA PRIVATE KEY / BEGIN EC PRIVATE KEY)
  • BEGIN CERTIFICATE REQUEST — CSR

GetHTTPS는 PEM 형식으로 출력합니다privkey.pem, cert.pem, chain.pem, fullchain.pem.

DER — 바이너리 인코딩

DER은 PEM이 텍스트로 인코딩하는 동일한 데이터의 바이너리 형태입니다. 사람이 읽을 수 없습니다. 주로 Java 애플리케이션(keytool)과 일부 Windows 구성 요소에서 사용됩니다.

PFX/PKCS#12 — 번들 형식

PFX(Personal Information Exchange)는 인증서, 개인키, 체인을 하나의 비밀번호로 보호된 파일로 묶습니다. Windows IIS, Azure App Service, macOS 키체인에서 이 형식이 필요합니다.

형식 간 변환

모든 변환은 OpenSSL을 사용합니다:

PEM → PFX

openssl pkcs12 -export \
  -out certificate.pfx \
  -inkey privkey.pem \
  -in cert.pem \
  -certfile chain.pem

내보내기 비밀번호를 설정하라는 메시지가 나타납니다.

PFX → PEM

# Extract certificate
openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out cert.pem

# Extract private key
openssl pkcs12 -in certificate.pfx -nocerts -nodes -out privkey.pem

# Extract chain
openssl pkcs12 -in certificate.pfx -cacerts -nokeys -out chain.pem

PEM → DER

openssl x509 -in cert.pem -outform DER -out cert.der

DER → PEM

openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem

어떤 형식이 필요한가요?

서버/플랫폼형식필요한 파일
NginxPEMfullchain.pem + privkey.pem
ApachePEMcert.pem + chain.pem + privkey.pem
IIS (Windows)PFXcertificate.pfx (PEM에서 변환)
Azure App ServicePFXcertificate.pfx
AWS (ACM)PEMcert.pem + chain.pem + privkey.pem (콘솔에 붙여넣기)
Java (Tomcat)JKS 또는 PFXPEM → PFX → JKS로 keytool을 사용하여 변환
Node.jsPEM코드에서 파일을 직접 읽기

파일 형식 식별 방법

어떤 형식인지 확실하지 않다면 확인하세요:

# If it starts with "-----BEGIN" — it's PEM (base64 text)
head -1 mystery-file.pem

# If it's binary (garbled text) — it's DER or PFX
file mystery-file.cer
# Output like "data" or "certificate" = DER
# Output like "PKCS12" = PFX

# Inspect a PEM certificate
openssl x509 -in cert.pem -noout -text

# Inspect a DER certificate
openssl x509 -in cert.der -inform DER -noout -text

# Inspect a PFX file
openssl pkcs12 -in cert.pfx -info -nokeys

흔한 파일 확장자 혼동

확장자일반적인 의미다른 가능성
.pemPEM (base64)항상 PEM
.crtPEM 인증서Windows에서는 DER
.cerPEM 인증서Windows에서는 DER
.keyPEM 개인키DER (드묾)
.pfxPKCS#12 번들항상 PFX
.p12PKCS#12 번들항상 PFX (.pfx와 동일)
.derDER (바이너리)항상 DER
.jksJava KeyStore항상 JKS

경험 법칙: 텍스트 편집기로 파일을 여세요. -----BEGIN CERTIFICATE-----가 보이면 확장자와 관계없이 PEM입니다. 바이너리 데이터가 보이면 DER이나 PFX입니다.

자주 묻는 질문

.crt, .cer, .pem의 차이점은 무엇인가요?

모두 PEM 형식일 수 있습니다. 확장자는 형식 표시가 아니라 명명 관례입니다. .crt.cer는 인증서 파일에 흔히 사용되고, .pem은 모든 PEM 인코딩 파일에 사용됩니다. Windows에서는 .cer 파일이 때때로 DER 인코딩일 수 있으므로 텍스트 편집기로 확인하세요.

GetHTTPS가 왜 4개 파일을 제공하나요?

최대 호환성을 위해서입니다. GetHTTPS는 다음을 제공합니다: privkey.pem(개인키), cert.pem(인증서만), chain.pem(중간 CA 인증서), fullchain.pem(인증서 + 체인 결합). Nginxfullchain.pem이 필요하고, Apache는 별도의 cert.pem + chain.pem이 필요하며, IIS는 PFX(PEM에서 변환)가 필요합니다.

Windows/IIS용 PFX를 어떻게 만드나요?

위의 OpenSSL PEM → PFX 명령을 사용하세요. GetHTTPS의 privkey.pem, cert.pem, chain.pem이 필요합니다. 결과 .pfxIIS, Azure App Service 또는 macOS 키체인으로 가져올 수 있습니다.

개인키 없이 형식을 변환할 수 있나요?

인증서는 개인키 없이 PEM과 DER 간 변환이 가능합니다. 하지만 PFX를 만들려면 개인키가 필요합니다(인증서 + 키를 하나로 묶으므로). 개인키를 분실한 경우 새 인증서를 생성해야 합니다.

Let’s Encrypt는 어떤 형식을 사용하나요?

Let’s Encrypt(GetHTTPS를 포함한 모든 ACME 클라이언트를 통해)는 PEM 형식으로 출력합니다. 서버에 다른 형식이 필요한 경우 위의 OpenSSL 명령으로 변환하세요.

관련 기사

배포 2026-05-08
Nginx에 SSL 인증서를 설치하는 방법
Nginx에 SSL 인증서를 설치하는 단계별 가이드. 파일 업로드, 전체 서버 블록 설정, TLS 모범 사례, HTTP/2, HSTS, 리다이렉트 설정, 테스트, 6가지 일반 오류 문제 해결을 다룹니다.
배포 2026-05-08
Apache에 SSL 인증서를 설치하는 방법
mod_ssl을 사용하여 Apache에 SSL 인증서를 설치하는 단계별 가이드. 파일 업로드, VirtualHost 설정, TLS 모범 사례, HSTS, HTTP 리다이렉트, 5가지 일반 오류 문제 해결을 다룹니다.
SSL 및 인증서 2026-05-07
인증서 서명 요청(CSR)이란 무엇인가?
CSR은 SSL 인증서를 요청하기 위해 인증 기관에 보내는 메시지입니다. CSR에 포함된 내용, 생성 방법, GetHTTPS가 이를 자동으로 처리하는 이유를 알아보세요.
브라우저에서 무료 SSL 인증서 받기
설치 불필요, 계정 불필요. 개인키는 항상 기기에 남습니다.
인증서 발급