DER를 PEM으로 변환하는 방법
.der,.cer,.crt파일을 상자에 놓으세요. 바이너리 입력은 바이트로 읽습니다. 파일 대신 한 줄 Base64 DER나30 82 01 b7 …같은 hex를 붙여넣어도 됩니다.- 변환 형식은 PEM (64열) 그대로 두세요.
- PEM 레이블은 자동 감지로 두세요. 변환기가 ASN.1을 읽고
CERTIFICATE,CERTIFICATE REQUEST,PUBLIC KEY,PRIVATE KEY등을 씁니다. 도구가 특정 레이블을 고집할 때만 직접 고르세요. - 필요하면 Windows 줄 끝 (CRLF) 옵션을 체크한 뒤 출력 복사나 .pem 다운로드를 누르세요.
검사로 전환하면 변환한 내용을 확인할 수 있습니다. 주체, 만료일, 지문이 카드에 나옵니다.
DER 파일과 헤더 없는 Base64는 어디서 오나
| 출처 | 받게 되는 것 |
|---|---|
| Windows 인증서 내보내기, “DER로 인코딩된 바이너리 X.509(.CER)” | 바이너리 DER |
-rfc 없이 실행한 Java keytool -exportcert | 바이너리 DER |
| 인증서의 CA 발급자 URL(AIA 확장) | 대개 DER .cer |
JWK나 JWKS의 x5c | 인증서마다 한 줄 Base64 DER |
SAML 메타데이터의 <ds:X509Certificate> | Base64 DER, 줄 바꿈이 있을 때도 있음 |
| 패킷 캡처, HSM과 스마트카드 도구 | hex 덤프 |
이 모두가 같은 PEM이 됩니다. 443바이트 DER 인증서는 656바이트 PEM이 됩니다. Base64 592자가 열 줄에 걸쳐 들어가고 BEGIN과 END 줄이 더해집니다.
PEM 형식 요약
RFC 7468이 파서가 기대하는 형식을 설명하며, 출력은 이를 따릅니다.
-----BEGIN CERTIFICATE-----
MIIBtzCCAV2gAwIBAgIUfX6gOa1S96OttEsj3WbuIdu0cE0wCgYIKoZIzj0EAwIw
...64 characters per line, the last line shorter...
-----END CERTIFICATE-----
- BEGIN과 END의 레이블은 정확히 같아야 합니다.
- 본문 줄은
=패딩이 있는 표준 Base64 64자입니다. URL-safe 알파벳(-와_)이나 패딩 없는 입력도 받으며 표준 형식으로 씁니다. - 한 파일에 든 여러 인증서는 블록을 이어 붙인 것입니다.
fullchain.pem과 CA 번들이 그렇게 만들어집니다. 직접 만들려면 DER 인증서를 하나씩 변환해 리프 인증서부터 차례로 블록을 붙여넣으세요.
OpenSSL, Python, 셸에서 DER를 PEM으로
openssl x509 -inform der -in cert.cer -out cert.pem
openssl pkey -inform der -in key.der -out key.pem
openssl req -inform der -in app.der -out app.csr
오래된 OpenSSL 빌드는 -inform der를 빠뜨리면 unable to load certificate로 실패하며, 최근 빌드는 DER를 스스로 감지합니다. x5c 항목 같은 한 줄 Base64 문자열이라면 다음과 같이 합니다.
{ echo '-----BEGIN CERTIFICATE-----'; echo "$B64" | fold -w 64; echo '-----END CERTIFICATE-----'; } > cert.pem
Python에는 이 기능이 내장되어 있습니다. ssl.DER_cert_to_PEM_cert(open("cert.der", "rb").read())입니다. 더 많은 예시는 OpenSSL과 Python 페이지에 있습니다.
자주 생기는 문제
- “PEM도 아니고 올바른 Base64 DER도 아닙니다” 또는 "… 바이트 위치에서 올바른 DER/ASN.1이 아닙니다": Base64가 손상되었거나 잘렸거나 DER가 아닙니다.
.p12나.pfx파일도 DER이지만 내용이 암호화되어 있으므로 대신openssl pkcs12로 변환하세요. - 레이블이
DATA로 표시됨: 구조를 인증서, 키, 요청으로 인식하지 못한 것입니다. 바이트는 그래도 변환되므로, 무엇인지 안다면 레이블을 직접 지정하세요. - 처음부터 PEM이었던 파일: 확장자와 달리 PEM인
.cer파일도 있습니다. 이때 출력은 줄만 다시 맞춘 같은 인증서이며 따로 변환할 것은 없었습니다. 인증서 디코더에서 내용을 볼 수 있습니다. - 반대 방향이 필요할 때: PEM을 DER로는
.der다운로드, 한 줄 Base64, hex를 제공합니다.
자주 묻는 질문
내 .cer 파일이 DER인지 PEM인지 어떻게 알 수 있나요?
텍스트 편집기로 열어 보세요. -----BEGIN CERTIFICATE----- 텍스트가 읽히면 PEM이고, 읽을 수 없는 바이너리면 DER이며 첫 바이트가 0x30입니다. Linux와 macOS의 file 명령은 두 경우에 각각 PEM certificate와 Certificate, Version=3을 출력합니다.
SAML 메타데이터의 X509Certificate 값을 PEM 파일로 바꾸려면 어떻게 하나요?
<ds:X509Certificate> 안의 Base64 텍스트를 상자에 붙여넣으세요. 헤더 없는 DER이므로 변환기가 -----BEGIN CERTIFICATE-----를 붙이고 64자에서 줄을 바꾼 뒤 블록을 닫습니다.
DER 개인 키도 여기서 PEM으로 바꿀 수 있나요?
됩니다. PKCS#8, PKCS#1 RSA, SEC1 EC 키를 감지해 PRIVATE KEY나 EC PRIVATE KEY 같은 알맞은 레이블을 붙입니다. 변환은 로컬에서 이루어지며 키 값은 페이지에 표시되지 않습니다.
Windows 줄 끝 (CRLF)은 언제 체크해야 하나요?
Windows 도구나 엄격한 파서가 파일을 거부할 때만 체크하세요. 대부분의 소프트웨어는 둘 다 받으며, RFC 7468은 PEM에서 두 줄 끝 방식을 모두 허용합니다.