PEM을 DER로 변환하는 방법
- PEM 블록을 입력란에 붙여넣거나
.pem,.crt,.key,.csr파일을 놓으세요. - 변환 형식에서 출력을 고르세요.
- DER – 한 줄 Base64: 헤더 줄과 줄 바꿈을 뺀 PEM 본문으로, JSON 필드나 환경 변수에 바로 쓸 수 있습니다.
- DER – hex: 같은 바이트를 hex로 표시하며, 바이트 배열과 프로토콜 추적에 씁니다.
- PEM (64열) 과 공개 키 (PEM) 는 반대 방향 변환과 공개 키 추출을 위해 있습니다.
- .der 다운로드를 눌러 바이너리 파일을 저장하거나, 텍스트 형태는 출력 복사를 누르세요.
변환기는 인증서, CSR, CRL, 공개 키, 개인 키(PKCS#1, PKCS#8, SEC1 EC)를 감지하므로 입력 형식을 고를 필요가 없습니다.
변환이 하는 일
PEM은 DER를 감싼 텍스트 래퍼입니다. 다음 인증서(줄임)를 보세요.
-----BEGIN CERTIFICATE-----
MIIBtzCCAV2gAwIBAgIUfX6gOa1S96OttEsj3WbuIdu0cE0wCgYIKoZIzj0EAwIw
...
-----END CERTIFICATE-----
표시 줄 두 개를 지우고, 나머지 줄을 이어 붙이고, Base64를 디코딩하면 DER 파일이 됩니다. 이 예에서는 ASN.1 SEQUENCE 헤더인 30 82 01 b7로 시작하는 443바이트입니다. 사라지는 정보는 표시 줄의 레이블뿐입니다. DER 파일에는 레이블이 없으므로, DER를 읽는 도구는 파일이 무엇인지 알려 주거나 구조를 보고 추측해야 합니다.
| 형태 | 이 인증서의 크기 | 쓰이는 곳 |
|---|---|---|
| PEM | 656바이트 | nginx, Apache, HAProxy, 대부분의 Linux 도구 |
| 한 줄 Base64 DER | 592자 | JSON API, JWK의 x5c 배열, 환경 변수 |
| DER (바이너리) | 443바이트 | Java와 Windows 도구, 펌웨어, application/pkix-cert 다운로드 |
DER가 필요한 곳
- 임베디드 기기와 펌웨어: C에 바이트 배열로 컴파일해 넣는 인증서는 거의 항상 DER입니다. hex 출력을 배열에 붙여넣으세요.
- Apple 플랫폼:
SecCertificateCreateWithData는 PEM 텍스트가 아니라 DER 데이터를 받습니다. - JWK의
x5c파라미터와 SAML 메타데이터의<ds:X509Certificate>요소에는 PEM 헤더 없는 Base64 DER가 들어갑니다. - 인증서의 CA 발급자 URL은 대개 DER
.cer파일을 제공합니다. - Windows:
.cer파일은 두 형태 모두일 수 있지만, 일부 오래된 가져오기 대화 상자와 장비는 DER만 받습니다.
OpenSSL, Python, certutil로 PEM을 DER로
openssl x509 -in cert.pem -outform der -out cert.der
openssl req -in app.csr -outform der -out app.der
openssl pkey -in key.pem -outform der -out key.der
grep -v -- '-----' cert.pem | tr -d '\n'
마지막 줄은 인증서 하나가 든 파일의 한 줄 Base64 DER를 출력합니다. Python에서는 ssl.PEM_cert_to_DER_cert(open("cert.pem").read())가 인증서의 DER 바이트를 돌려줍니다. Windows에서는 certutil -decode cert.pem cert.der가 표시 줄을 지우고 디코딩합니다. 자세한 내용은 OpenSSL의 Base64와 Python의 Base64에 있습니다.
자주 생기는 문제
- 파일 하나에 블록이 여러 개: 텍스트 출력은 모든 블록을 변환하지만, DER 파일에는 객체가 정확히 하나만 들어가므로 .der 다운로드는 첫 번째 객체만 저장합니다. 먼저 체인을 나누거나, 인증서 디코더에서 인증서마다 카드에서 다운로드하세요.
-----BEGIN ENCRYPTED PRIVATE KEY-----: 변환은 되지만 DER도 여전히 암호화되어 있습니다. 복호화에는 비밀번호가 필요하며 여기서는 하지 않습니다.Proc-Type: 4,ENCRYPTED헤더: 레거시 OpenSSL 암호화에는 DER 형태가 없습니다. 먼저 비밀번호와 함께openssl pkey -in key.pem -out plain.pem을 실행하세요.-----BEGIN OPENSSH PRIVATE KEY-----: 아예 ASN.1이 아니므로 만들 DER가 없습니다. 공개 키는 SSH 키 도구를 사용하세요.
자주 묻는 질문
PEM은 DER의 Base64일 뿐인가요?
네. PEM 파일은 DER 바이트를 Base64로 인코딩해 64자에서 줄을 바꾸고, -----BEGIN label----- 줄과 -----END label----- 줄 사이에 넣은 것입니다. 이 두 줄을 지우고 Base64를 디코딩하면 정확히 DER 파일이 나옵니다.
PEM 개인 키를 DER로 바꾸려면 어떻게 하나요?
여기에 붙여넣고 DER – 한 줄 Base64나 .der 다운로드를 고르거나, openssl pkey -in key.pem -outform der -out key.der를 실행하세요. 키는 페이지 밖으로 나가지 않으며 비밀 값은 표시되지 않습니다.
DER 파일이 PEM보다 작은 이유는 무엇인가요?
Base64는 3바이트를 4문자로 바꾸고, PEM은 줄 바꿈과 헤더 줄 두 개를 더합니다. 443바이트 DER 인증서는 656바이트 PEM 파일이 되어 약 48% 커집니다.