2012-01-08 3 views

답변

165

OpenSSL 사용하면 PFX를 변환 할 수 있습니다 다음 명령을 아파치 호환 형식 :

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

첫 번째 명령은 domain.cer에 공개 키를 추출합니다.
두 번째 명령은 개인 키를 domain.key으로 추출합니다.

업데이트와 아파치 설정 파일 :

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

이가 명령이 없습니다 인증 기관 파일을 생성하십시오. 아래 답변은보다 완벽합니다. – Hawkee

+0

이것은 Windows에서도 작동합니다. +1 내 엉덩이를 저장했습니다. – craigmoliver

3

주변에 몇 가지 도구를 툭 그러나 이것은 내가 함께 끝난 것입니다.

IIS7에서 인증서를 생성하고 설치했습니다. 는

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

참고 PKCS12로 변환

IIS

에서 PFX로 내보낼 : PEM 형식으로 PFX 변환하는 동안, 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 vhost에 추가되었습니다.

+0

개인 키와 인증서가 같은 파일에 저장되는 것을 원하지 않으면'-nokeys' (개인 키를 추출하지 않음)와'-clcerts' (인증서 만 추출)를 사용하십시오. 이것은 정확히 Matej가 말한 것입니다. – Bruno

+0

브루노, 고마워. 나는 그에게 정확한 답을 줄 것이다. 알아 둘만한. – AaronJAnderson

26

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----- 
+0

좋은! Bitnami 또는 CA crt를 필요로하는 다른 사람들을 위해 Andron의 대답을보고 CA crt를 포함 시키십시오. Andron의 답변에있는 domain-ca.crt 대신 server-ca.crt를 사용하고 domain.cer 대신 server.crt를 사용하고 Michael Ferrante 's의 server.key (domain.key 대신) 명명법을 사용합니다. 여기에 대답하십시오. – OldGreg

0

SSLSHopper는 다른 서버간에 이동하는 것에 대한 몇 가지 철저한 기사가 있습니다.

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

그냥이 페이지의 하단에 관련 링크를 선택하십시오.

참고 : 사용자에게 개인 키에 대한 액세스 권한을 부여하는 온라인 변환기가 있습니다. 그들은 아마도 신뢰할 수는 있지만 OPENSSL 명령 (이 사이트에도 표시되어 있음)을 사용하여 개인 키를 개인 컴퓨터에 비공개로 유지하는 것이 좋습니다.

78

또한

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 

그리고 아파치 설정 파일에 포함 :

<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> 
+5

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

+6

더 완벽하기 때문에 이것이 최고의 대답이라고 생각합니다. – Hawkee

+2

정답으로 표시해야합니다. –

관련 문제