답변:
암호화 인증서의 파일 확장자는 예상 한 것만 큼 표준화되지 않았습니다. Windows는 기본적으로 .crt
파일을 두 번 클릭하는 것을 Windows 루트 인증서 저장소로 인증서를 가져 오기위한 요청으로 처리하지만 .cer
파일을 인증서를보기위한 요청으로 처리합니다 . 따라서 Windows는 각 파일 유형을 두 번 클릭 할 때 발생하는 일에 대해 고유 한 다른 의미를 가지고 있다는 점에서 다릅니다.
그러나 두 번 클릭 할 때 Windows에서 처리하는 방식은 둘 사이의 유일한 차이점입니다. 두 확장 모두 공용 인증서가 포함되어 있음을 나타냅니다. 내가 본 모든 시스템 또는 구성 파일에서 다른 확장자 대신 하나의 확장자를 사용하도록 인증서 파일의 이름을 바꿀 수 있습니다. 그리고 Windows가 아닌 플랫폼 (및 Windows에서도)에서 사람들은 어떤 확장자를 사용하는지에 대해 특별히주의하지 않고 파일 내용이 정확하다면 둘 사이에 차이가 없기 때문에 두 가지를 상호 교환 적으로 취급합니다.
좀 더 혼란스럽게 만드는 것은 인증서 데이터를 파일에 저장하는 두 가지 표준 방법이 있다는 것입니다. 하나는 "이진"X.509 인코딩이고 다른 하나는 일반적으로 " -----BEGIN CERTIFICATE-----
"로 시작하는 "텍스트"base64 인코딩입니다 . 이들은 동일한 데이터를 다른 방식으로 인코딩합니다. 대부분의 시스템은 두 가지 형식을 모두 허용하지만 필요한 경우 openssl 또는 다른 도구를 통해 하나를 다른 형식으로 변환 할 수 있습니다. 인증서 파일 내의 인코딩은 누군가가 파일에 부여한 확장자와는 무관합니다.
문서 mod_ssl 에 따르면 :
SSLCertificateFile:
Name: SSLCertificateFile
Description: Server PEM-encoded X.509 certificate file
인증서 파일은 PEM 인코딩 된 X.509 인증서 파일이어야합니다.
openssl x509 -inform DER -in certificate.cer -out certificate.pem
zscaler
실행중인 SSL 인증서 오류를 해결할 수 있습니까? 나는 '다음 전환을 사용 심볼릭 링크를로 그들을 거라고 또한에 내용을 복사 프로비저닝하기 전에 파일을 여전히 메신저 얻기 에 오류 dev에 상자. vagrant
win
vbox
homestead
scp
/etc/ssl/certs
ca-certificates.crt
google-recaptcha
tls
ssl
file_get_contents
기본적으로 DER 및 Base64의 두 가지 CER 인증서 인코딩 유형이 있습니다. 유형 DER가 오류로드 인증서 (asn1 인코딩 루틴)를 반환 할 때 PEM을 시도하면 작동합니다.
openssl x509 -inform DER -in certificate.cer -out certificate.crt
openssl x509 -inform PEM -in certificate.cer -out certificate.crt
PKCS # 7로 인코딩 된 인증서 데이터가 포함 된 .cer 파일이 있고이를 PEM으로 인코딩 된 인증서 데이터 (일반적으로 .crt 또는 .pem 파일)로 변환하려고한다고 가정합니다. 예를 들어 PKCS # 7로 인코딩 된 데이터가 포함 된 .cer 파일은 다음과 같습니다.
----- PKCS7 시작 ----- MIIW4gYJKoZIhvcNAQcCoIIW0zCCFs8CAQExADALBgkqhkiG9w0BBwGggha1MIIH ... POI9n9cd2cNgQ4xYDiKWL2KjLB + 6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G + bKhADEA ----- PKCS7 종료 -----
PEM 인증서 데이터는 다음과 같습니다.
----- 인증 시작 ----- MIIHNjCCBh6gAwIBAgIQAlBxtqKazsxUSR9QdWWxaDANBgkqhkiG9w0BAQUFADBm ... nv72c / OV4nlyrvBLPoaS5JFUJvFUG8RfAEY = ----- 인증서 종료 -----
.cer 파일 (PKCS # 7 데이터 포함)을 예상 할 수있는 PEM 데이터 ( BEGIN CERTIFICATE
위 예제 의 블록 )로 변환하는 OpenSSL 명령이 있습니다 . certfile.cer라는 파일에서이 명령을 사용하여 PKCS # 7 데이터를 PEM 형식으로 강제 변환 할 수 있습니다.
openssl pkcs7 -text -in certfile.cer -print_certs -outform PEM -out certfile.pem
.cer 또는 .pem 파일에는 하나 이상의 인증서 (아마도 전체 인증서 체인)가 포함될 수 있습니다.
CER 는 바이너리 형식의 X.509 인증서이며 DER로 인코딩됩니다.
CRT 는 텍스트 ( base-64 ) 인코딩으로 캡슐화 된 이진 X.509 인증서 입니다.
동일한 인코딩이 아닙니다.
.cer 파일을 .crt 파일로 변환하는 방법에 대한 질문에 대한 대답은 다음과 같습니다.
openssl pkcs7 -print_certs -in certificate.cer -out certificate.crt
openssl x509 -inform der -in certificate.cer -out certificate.pem
unable to load PKCS7 object
나는 명령을 사용합니다.
openssl x509 -inform PEM -in certificate.cer -out certificate.crt
그러나 CER는 DER로 인코딩 된 바이너리 형식의 X.509 인증서입니다. CRT는 텍스트 (base-64) 인코딩으로 캡슐화 된 이진 X.509 인증서입니다.
따라서 다음을 사용해야합니다.
openssl x509 -inform DER -in certificate.cer -out certificate.crt
그런 다음 인증서를 가져 오려면 :
CA를 디렉토리에 복사하십시오.
/usr/local/share/ca-certificates/
사용 명령 :
sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
CA 저장소를 업데이트합니다.
sudo update-ca-certificates
cer 파일에 바이너리 형식이있는 경우 다음과 같이 변환해야합니다.
openssl x509 -inform DER -in YOUR_CERTIFICATE.cer -out YOUR_CERTIFICATE.crt
.cer 및 .crt 파일은 키 저장소로 가져 오는 한 교환 할 수 있어야합니다.
.cer 파일의 내용을 살펴보십시오. -----BEGIN CERTIFICATE-----
줄 앞과 줄 뒤를 지우십시오 -----END CERTIFICATE-----
. BEGIN / END 줄 사이에 Base64로 인코딩 된 항목이 많이 남게됩니다.
-----BEGIN CERTIFICATE-----
MIIDQTCCAqqgAwIBAgIJALQea21f1bVjMA0GCSqGSIb3DQEBBQUAMIG1MQswCQYD
...
pfDACIDHTrwCk5OefMwArfEkSBo/
-----END CERTIFICATE-----
그런 다음 keytool을 사용하여 키 파일로 가져옵니다.
keytool -import -alias myalias -keystore my.keystore -trustcacerts -file mycert.cer
그냥 해
openssl x509 -req -days 365 -in server.cer -signkey server.key -out server.crt
CER
및CRT
확장은 아무 의미도 없습니다. 다른 PKI 공급 업체는 동일한 항목에 대해 다른 확장을 사용합니다. 파일이 바이너리 인 경우 ASN.1 / DER로 인코딩되었을 수 있습니다. 를 사용하여 사람이 읽을 수있는 파일이면-----BEGIN CERTIFICATE-----
PEM이 인코딩됩니다. 무엇을 가지고 있고 (DER 또는 PEM) 무엇이 필요합니까 (DER 또는 PEM)?