it-swarm-ko.tech

Pem 파일이란 무엇이며 다른 OpenSSL 생성 키 파일 형식과 어떻게 다릅니 까?

두 개의 데비안 서버를 관리 할 책임이 있습니다. 보안 인증서로 무엇이든해야 할 때마다 Google은 자습서를 제공하고 최종적으로 작동 할 때까지 이기고 있습니다.

그러나 내 검색에서 종종 다른 파일 형식 (.key, .csr, .pem) 그러나 각 파일 형식의 목적이 무엇인지에 대한 좋은 설명을 찾지 못했습니다.

ServerFault의 좋은 사람들 이이 문제에 대해 명확하게 설명 할 수 있는지 궁금합니다.

1413
Noah Goodrich

SSL은 오랫동안 사용되어 왔으며 컨테이너 형식에 동의 할 것이라고 생각할 것입니다. 그리고 당신 말이 맞아. 표준이 너무 많습니다. 이것이 제가 아는 것입니다. 다른 사람들도 그렇게 할 것입니다.

  • . csr -이것은 인증서 서명 요청입니다. 일부 응용 프로그램은이를 인증 기관에 제출하기 위해이를 생성 할 수 있습니다. 실제 형식은 RFC 2986 에 정의 된 PKCS10입니다. 여기에는 서명 할 인증서의 public key뿐만 아니라 요청 된 인증서의 주요/일부 (예 : 제목, 조직, 상태, 기타) 정보가 포함됩니다. 이것들은 CA에 의해 서명되고 인증서가 반환됩니다. 반환 된 인증서는 공개 certificate (공개 키는 포함하지만 개인 키는 포함하지 않음)이며, 그 자체는 몇 가지 형식 일 수 있습니다.
  • . pem -RFC에 정의 1421 ~ 1424 , 다음을 포함 할 수있는 컨테이너 형식입니다. 공개 인증서 (예 : Apache 설치 및 CA 인증서 파일 /etc/ssl/certs) 또는 공개 키, 개인 키 및 루트 인증서를 포함한 전체 인증서 체인을 포함 할 수 있습니다. 혼란스럽게도 PKCS10 형식이 PEM으로 변환 될 수 있으므로 CSR을 인코딩 할 수도 있습니다 (예 : 여기 ). 이름은 PEM (Privacy Enhanced Mail) 에서 왔으며, 보안 이메일에 실패한 방법이지만 사용 된 컨테이너 형식은 x509 ASN.1 키의 base64 변환입니다.
  • . key -특정 인증서의 개인 키만 포함하는 PEM 형식 파일이며 표준 이름이 아니라 일반적인 이름 일뿐입니다. Apache 설치에서 이것은 종종 /etc/ssl/private에 있습니다. 이러한 파일에 대한 권한은 매우 중요하며 일부 프로그램은 이러한 인증서를 잘못 설정하면로드를 거부합니다.
  • . pkcs12 .pfx .p12 -원래 RSA에서 Public-Key Cryptography Standards (약어 PKCS)에서 " 12 "변형은 원래 Microsoft에 의해 향상되었으며 나중에 RFC 7292 로 제출되었습니다. 이것은 공개 및 개인 인증서 쌍을 모두 포함하는 비밀번호 컨테이너 형식입니다. .pem 파일과 달리이 컨테이너는 완전히 암호화됩니다. Openssl은 공개 키와 개인 키가 모두있는 .pem 파일로 변환 할 수 있습니다 : openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

때때로 나타나는 다른 형식들 :

  • . der -ASN.1 구문을 이진수로 인코딩하는 방법 인 .pem 파일은 Base64로 인코딩 된 .der 파일입니다. OpenSSL은이를 .pem (openssl x509 -inform der -in to-convert.der -out converted.pem)으로 변환 할 수 있습니다. Windows는이를 인증서 파일로 간주합니다. 기본적으로 Windows는 인증서를 다른 확장자를 가진 .DER 형식의 파일로 내 보냅니다. 처럼...
  • . cert .cer .crt -다른 확장자를 가진 .pem (또는 드물게 .der) 형식의 파일 (Windows 탐색기에서 Windows 탐색기로 인식되는 파일) .pem이 아닌 인증서.
  • . p7b .keystore - RFC 2315 에 PKCS 번호 7로 정의되어 있으며 이는 Windows에서 인증서 교환을 위해 사용하는 형식입니다. Java 이것들을 기본적으로 이해하고 종종 확장으로 .keystore를 사용합니다. .pem 스타일 인증서와 달리이 형식에는 defined 방법이 있습니다 인증 경로 인증서를 포함합니다.
  • . crl -인증서 해지 목록. 인증 기관은 만료 전에 인증서를 인증 해제하는 방법으로이를 생성합니다. 때로는 CA 웹 사이트에서 다운로드 할 수 있습니다.

요약하면, 인증서 및 해당 구성 요소를 표시하는 네 가지 방법이 있습니다.

  • [~ # ~] pem [~ # ~] -RFC에 의해 관리되며 오픈 소스 소프트웨어에서 우선적으로 사용됩니다. 다양한 확장명을 가질 수 있습니다 (.pem, .key, .cer, .cert 등).
  • PKCS7 -Java에서 사용하고 Windows에서 지원하는 공개 표준입니다. 개인 키 자료는 포함하지 않습니다.
  • PKCS12 -나중에 일반 텍스트 PEM 형식에 비해 향상된 보안을 제공하는 RFC에 정의 된 Microsoft 개인 표준입니다. 여기에는 개인 키 자료가 포함될 수 있습니다. Windows 시스템에서 우선적으로 사용되며 openssl을 사용하여 PEM 형식으로 자유롭게 변환 할 수 있습니다.
  • [~ # ~] der [~ # ~] -PEM의 부모 형식입니다. base64로 인코딩 된 PEM 파일의 이진 버전으로 생각하면 유용합니다. 일상적으로 Windows 외부에서는 많이 사용되지 않습니다.

이게 도움이 되길 바란다.

1730
sysadmin1138

PEM 자체는 인증서가 아니며 데이터를 인코딩하는 방법 일뿐입니다. X.509 인증서는 PEM을 사용하여 일반적으로 인코딩되는 데이터 유형 중 하나입니다.

PEM은 X.509 인증서 (이 구조는 ASN.1을 사용하여 정의 됨)이고 ASN.1 DER (고유 인코딩 규칙)을 사용하여 인코딩 된 다음 Base64 인코딩을 통해 실행되고 일반 텍스트 앵커 라인 (BEGIN CERTIFICATE 및 END CERTIFICATE) 사이에 붙어 있습니다. ).

PKCS # 7 또는 PKCS # 12 표현을 사용하여 동일한 데이터를 표시 할 수 있으며 openssl 명령 행 유틸리티를 사용하여이를 수행 할 수 있습니다.

PEM의 확실한 이점은 앵커 라인이 있고 7 비트로 깨끗하기 때문에 전자 메일 메시지 본문에 붙여 넣기가 안전하다는 것입니다.

RFC1422 에는 키 및 인증서와 관련된 PEM 표준에 대한 자세한 내용이 있습니다.

146
James F

때때로 .crt 파일은 이미 .pem. 참조 : https://stackoverflow.com/questions/991758/openssl-pem-key

57
mgold