Linux 서버에서 Apache와 함께 사용하기 위해 PFX 인증서 파일을 어떻게 변환 할 수 있습니까?


110

Linux 서버에서 Apache와 함께 사용하기 위해 PFX 인증서 파일을 어떻게 변환 할 수 있습니까?

Windows 인증서 서비스에서 PFX를 만들었습니다. PFX에는 전체 인증서 체인이 포함됩니다. (중개자가 아닌 루트 및 기본 인증서입니다.)

현명한 자들아, 나를 인도하십시오.

답변:


194

OpenSSL 을 사용하면 다음 명령을 사용하여 pfx를 Apache 호환 형식으로 변환 할 수 있습니다.

openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes  -out domain.key   

첫 번째 명령은 공개 키를 domain.cer.
두 번째 명령은 개인 키를 domain.key.

다음을 사용하여 Apache 구성 파일을 업데이트하십시오.

<VirtualHost 192.168.0.1:443>
 ...
 SSLEngine on
 SSLCertificateFile /path/to/domain.cer
 SSLCertificateKeyFile /path/to/domain.key
 ...
</VirtualHost>

인증 기관 파일을 생성하는 명령이 없습니다. 아래 답변이 더 완전합니다.
Hawkee 2013-08-01

100

추가로

openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes  -out domain.key

또한 CA (인증 기관) 인증서를 생성했습니다.

openssl pkcs12 -in domain.pfx -out domain-ca.crt -nodes -nokeys -cacerts

Apache 구성 파일에 포함 :

<VirtualHost 192.168.0.1:443>
 ...
 SSLEngine on
 SSLCertificateFile /path/to/domain.cer
 SSLCertificateKeyFile /path/to/domain.key
 SSLCACertificateFile /path/to/domain-ca.crt
 ...
</VirtualHost>

8
참고 : CA 인증서가 비어있는 경우 구성 파일에이 줄을 포함하지 마십시오.
Andron 2013 년

@Andron 세 번째 명령을 사용하여 CA 인증서를 만들면 결과는 빈 crt 파일입니다. 입력을 위해 serverSSL pfx 파일과 rootCA pfx 파일을 모두 사용해 보았습니다. (bitnami wamp) 최종 결과는 firefox에서 The certificate is not trusted because the issuer certificate is unknown SEC_ERROR_UNKNOWN_ISSUER오류가 발생 한다는 것 입니다.
khargoosh

@khargoosh 댓글에서보고 한대로 : 비어 있으면-이 줄을 사용 / 포함하지 마십시오. 저도 같은 상황이었습니다.
Andron

31

Apache와 함께 작동하려면 한 단계가 더 필요했습니다.

openssl pkcs12 -in domain.pfx -clcerts -nokeys -out domain.cer
openssl pkcs12 -in domain.pfx -nocerts -nodes  -out domain_encrypted.key
openssl rsa -in domain_encrypted.key -out domain.key

마지막 명령은 Apache에서 사용할 키를 해독합니다. domain.key 파일은 다음과 같아야합니다.

-----BEGIN RSA PRIVATE KEY-----
MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3
LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp
YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG
A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq
-----END RSA PRIVATE KEY-----

좋은! Bitnami 또는 CA crt가 필요한 다른 사용자의 경우 CA crt를 포함하는 Andron의 답변을 확인하십시오. Michael Ferrante의 server-ca.crt (Andron의 대답에서 domain-ca.crt 대신), server.crt (domain.cer 대신) 및 server.key (domain.key 대신) 명명법을 사용합니다. 여기에 대답하십시오.
OldGreg

3

몇 가지 도구를 사용했지만 이것이 내가 결국 얻은 것입니다.

IIS7에서 인증서를 생성하고 설치했습니다. IIS에서 PFX로 내보내기

변환하세요 pkcs12

openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes

참고 : PFX를 PEM 형식으로 변환하는 동안 openssl은 모든 인증서와 개인 키를 단일 파일에 저장합니다. 텍스트 편집기에서 파일을 열고 각 인증서 및 개인 키 (BEGIN / END 문 포함)를 개별 텍스트 파일에 복사하여 각각 certificate.cer, CAcert.cer, privateKey.key로 저장해야합니다.

-----BEGIN PRIVATE KEY-----
Saved as certificate.key
-----END PRIVATE KEY-----

-----BEGIN CERTIFICATE-----
Saved as certificate.crt
-----END CERTIFICATE-----

Webmin이있는 Apache 가상 호스트에 추가되었습니다.


개인 키와 인증서가 동일한 파일로 끝나지 -nokeys않도록 하려면 (개인 키를 추출하지 않음) 및 -clcerts(인증서 만 추출)을 사용하십시오. 이것이 바로 Matej가 말한 것입니다.
Bruno

0

SSLSHopper에는 서로 다른 서버 간 이동에 대한 꽤 철저한 기사가 있습니다.

http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html

이 페이지 하단에서 관련 링크를 선택하기 만하면됩니다.

참고 : 개인 키에 대한 액세스를 제공하는 온라인 변환기가 있습니다. 신뢰할 수 있지만 OPENSSL 명령 (이 사이트에도 표시됨)을 사용하여 개인 키를 자신의 컴퓨터에서 비공개로 유지하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.