인증서 및 개인 키에서 .pfx 파일을 만드는 방법은 무엇입니까?


363

IIS의 웹 사이트에 https를 설치하려면 .pfx 파일이 필요합니다.

인증서 (.cer 또는 pem)와 개인 키 (.crt)라는 두 개의 별도 파일이 있지만 IIS는 .pfx 파일 만 허용합니다.

인증서를 분명히 설치했으며 인증서 관리자 (mmc)에서 사용할 수 있지만 인증서 내보내기 마법사를 선택하면 PFX 형식을 선택할 수 없습니다 (회색으로 표시됨)

프로그래밍 방식으로 수행하는 도구 또는 C # 예제가 있습니까?



1
사실이지만 그 대답은 명확하지 않으며 제 경우에는 아무것도 고쳐지지 않습니다
jlp

@ alexl Windows 버전이 있습니까?
jlp


Openssl은 거의 모든 경우에 필요하지 않습니다. 방금 답변을 추가했습니다 (제공 할 블로그 항목 작성). 아이러니 한 점은 의도 한대로 CSR을 생성 할 때 PFX가 필요하지 않다는 것입니다.
rainabba

답변:


554

openssl을 사용해야합니다.

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

키 파일은 개인 키가 들어있는 텍스트 파일입니다.

루트 CA 및 중간 인증서가있는 경우 여러 -in매개 변수를 사용하여 포함합니다

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt

openssl을 여기에서 설치할 수 있습니다 : openssl


11
"키 파일은 개인 키가 들어있는 텍스트 파일입니다." 그렇지 않은 경우를 제외하고는 사실입니다.
Casey

37
당신이 루트 CA 또는 여러 공급하여 추가 할 수 있습니다 CERT intermiediate 경우 덕분에, 나는 또한 추가 할 것이다 -in : 매개 변수를openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
gerrytan

10
나를 위해 일을 했어. 참고로 Windows 시스템에서이를 실행하려면 관리자 명령 프롬프트에서 openssl을 실행해야합니다.
Martin Costello

13
키 파일은 어디서 구할 수 있습니까? SSL 인증서가 발급되었지만 키 파일이 어디에도 없습니다. p7b 파일과 많은 * .crt 파일이 있습니다.
Knelis

11
이것을 openssl 1.0.2m에서 작동 시키려면 비밀번호 문구 / 비밀번호 -certfile intermediate.crt -certfile rootca.crt로 보호하라는 메시지를 표시하기 전에 지정 해야했습니다 .pfx. 이 파일 .key이 추가 -in파일 과 일치하지 않아서 "인증서와 일치하는 인증서 없음"오류 메시지가 표시 되었기 때문일 수 있습니다 .
dragon788

36

Microsoft Pvk2Pfx 명령 줄 유틸리티에 필요한 기능이있는 것 같습니다.

Pvk2Pfx (Pvk2Pfx.exe)는 .spc, .cer 및 .pvk 파일에 포함 된 공개 키 및 개인 키 정보를 개인 정보 교환 (.pfx) 파일로 복사하는 명령 줄 도구입니다.
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx

참고 : C # 솔루션이 필요 / 원하는 경우, http://www.bouncycastle.org/ api를 사용하는 것이 좋습니다.


1
.cer 파일에 대한 -spc 인수
BozoJoe

2
C : \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.15063.0 \ x64 \ pvk2pfx.exe
Stefan Steiger

35

Windows GUI를 찾고 있다면 DigiCert를 확인하십시오. 방금 이것을 사용했으며 상당히 간단했습니다.

SSL 탭에서 먼저 인증서를 가져 왔습니다. 그런 다음 인증서를 선택하면 키 파일 유무에 관계없이 PFX로 내보낼 수있었습니다.

https://www.digicert.com/util


15
이 작업을 수행하면 컴퓨터에서 개인 키를 가져 오지 않았다는 메시지가 나타납니다. 뭐가 진실이지.
Niels Brinch

6
@NielsBrinch이 작업을 수행하면 컴퓨터에서 개인 키를 가져 오지 않았 음을 나타냅니다. 그것이 틀린 것으로 예상하십시오, 그것은 인증서와 같은 폴더에 있습니다 ...
aBertrand

@NielsBrinch이 문제를 해결하려면 새 CSR을 다시 제출 한 다음 인증서가 처리 될 때 인증서를 다시 다운로드해야했으며 개인 키는 CSR을 만든 서버 / 컴퓨터에 숨겨져있었습니다. 이 오류 메시지를 해결했습니다.
Paddymac

수년간의 경험을 바탕으로 DigiCert를 추천 할 수 있습니다.
mmell

DigiCertUtil.exe실행 파일 의 루트 디렉토리에 개인 키를 포함시키는 것을 잊지 마십시오 . 가장 쉬운 방법은 인증서를 인증서 폴더에 복사하는 것입니다.
요나

32

openssl이나 makecert 또는 그 어떤 것도 필요하지 않습니다. 또한 CA에서 제공 한 개인 키가 필요하지 않습니다. CA가 제공 한 키 및 cer 파일을 사용할 수있을 것으로 기대하지만 "IIS 방식"을 기반으로하지 않는 것이 문제라는 것을 거의 보증 할 수 있습니다. 나는 여기서 나쁘고 어려운 정보를 보는 것에 질려서 주제와 솔루션을 블로그로 만들기로 결정했습니다. 무슨 일이 일어나고 있는지 알고 그것이 얼마나 쉬운 지 알면 나를 안아주고 싶을 것입니다 :)

PFX가 한 번인 IIS의 SSL 인증서-SSL 및 IIS 설명-http: //rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

IIS "서버 인증서"UI를 사용하여 "인증서 요청 생성"(이 요청의 세부 사항은이 기사의 범위를 벗어나지 만 해당 세부 사항은 중요 함) 그러면 IIS 용으로 준비된 CSR이 제공됩니다. 그런 다음 해당 CSR을 CA에 제공하고 인증서를 요청하십시오. 그런 다음 그들이 제공 한 CER / CRT 파일을 가져 와서 요청을 생성 한 동일한 위치에서 IIS "인증서 요청 완료"로 돌아갑니다. .CER을 요청할 수 있으며 .CRT가있을 수 있습니다. 그들은 같은 것입니다. 확장명을 변경하거나을 사용하십시오 .확장 드롭 다운 메뉴에서 .CRT를 선택하십시오. 이제 올바른 "친숙한 이름"(* .yourdomain.com, yourdomain.com, foo.yourdomain.com 등)을 입력하십시오. 이것은 중요합니다! 이것은 반드시 CSR을 설정 한 것과 CA가 제공 한 것과 일치해야합니다. 와일드 카드를 요청한 경우 CA에서 와일드 카드를 승인하고 생성해야하며 동일한 와일드 카드를 사용해야합니다. foo.yourdomain.com에 대한 CSR이 생성 된 경우이 단계에서 CSR을 동일하게 제공해야합니다.


2
"IIS의 웹 사이트에 https를 설치하려면 .pfx 파일이 필요합니다."
rainabba

34
게시물에 관련 내용을 답장에 넣을 수 있습니까? 그렇게하면 블로그가 사라져도 대답은 여전히 ​​관련이 있습니다. 여전히 블로그에 연결할 수 있습니다. 있는 그대로, 답변 내용에 유용한 정보가 0 개 있습니다.
Deanna

16
이것은 새로운 인증서를 요청하는 경우 가장 간단한 방법이지만 IIS의 인증서 서명 요청이 새로운 개인을 생성하기 때문에 이미 인증서 및 / 또는 개인 키 (예 : 아파치와 함께 사용한 키)가있는 경우 작동하지 않습니다 "완전한 요청"이 수행하는 모든 것이 개인 키를 공개 인증서와 결합하여 pfx를 생성하는 것이므로 IIS의 이러한 측면은 정말 성가시다.
Chris Chilvers

2
귀하의 솔루션이 "올바른 방법"일 가능성이 높지만, 하나의 도구, 하나의 명령 줄 호출, 하나의 비밀번호로 openssl을 다루는 것보다 더 많은 노력이 필요하다고 생각합니다. 또한 모든 SSL 회사 가이 접근법을 지원하는지 여부를 모르겠습니다.
Jan Bühler

8
인증서가 다른 곳에서 생성 된 경우 귀하의 답변이 도움이되지 않을까 걱정됩니다. 좋아, IIS는 개인 키 자체를 생성하고 매달릴 것으로 예상합니다. 때로는 옵션이 아닙니다.
staticsan

8

.key 및 .pem 파일에서 .pfx 파일을 만들었습니다.

이렇게 openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx


1
이것은 기본적으로 내가 사용한 것과 같은 명령이지만, windows에서 openssl에 대한 일반적인 솔루션 인 Git bash를 사용하는 동안 openssl 앞에 winpty를 추가해야했습니다 (예 : winpty openssl pkcs12 ....).
smoore4 2012

나는 -export스위치 가 필요하지 않았다 .
mmell

7

https://msdn.microsoft.com/en-us/library/ff699202.aspx

((기사의 관련 인용문은 다음과 같습니다))

다음으로 배포에 서명하는 데 사용할 .pfx 파일을 만들어야합니다. 명령 프롬프트 창을 열고 다음 명령을 입력하십시오.

PVK2PFX –pvk yourprivatekeyfile.pvk –spc yourcertfile.cer –pfx yourpfxfile.pfx –po yourpfxpassword

어디:

  • pvk-yourprivatekeyfile.pvk는 4 단계에서 만든 개인 키 파일입니다.
  • spc-yourcertfile.cer는 4 단계에서 만든 인증서 파일입니다.
  • pfx-yourpfxfile.pfx는 만들 .pfx 파일의 이름입니다.
  • po-yourpfxpassword는 .pfx 파일에 할당하려는 비밀번호입니다. Visual Studio에서 프로젝트에 .pfx 파일을 처음 추가 할 때이 암호를 입력하라는 메시지가 표시됩니다.

(선택적으로 (OP가 아니라 향후 독자를 위해) .cer 및 .pvk 파일을 처음부터 새로 만들 수 있습니다) (위에서 수행하기 전에 수행). mm / dd / yyyy는 시작 및 종료 날짜의 자리 표시 자입니다. 전체 설명서는 msdn 기사를 참조하십시오.

makecert -sv yourprivatekeyfile.pvk -n "CN=My Certificate Name" yourcertfile.cer -b mm/dd/yyyy -e mm/dd/yyyy -r

6

makecert 도구를 사용해야합니다.

관리자 권한으로 명령 프롬프트를 열고 다음을 입력하십시오.

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

여기서 <CertifcateName>= 만들 인증서의 이름입니다.

그런 다음 시작 메뉴에서 certmgr.msc를 입력하여 관리 콘솔에 대한 인증서 관리자 스냅인을 열고 개인> 인증서를 클릭하면 인증서를 사용할 수 있습니다.

여기 기사가 있습니다.

https://azure.microsoft.com/documentation/articles/cloud-services-certs-create/


3
난 못해 내보내기 마법사에서 pfx 옵션이 회색으로 표시됨
jlp

내 인증서는 certifacate 관리자에서 사용할 수 있습니다. 내가 할 수없는 것은 pfx 형식으로 내보내는 것입니다. 명령 줄 명령은 무엇을합니까?
jlp

조언에 따라 인증서를 작성하고 작동하는지 알려주십시오. 아마도 5 분이 걸릴 것입니다. 링크 된 기사는 진행 상황에 대한 전체 설명을 제공합니다.
BentOnCoding 2016 년

내가 찾고있는 것이 아닙니다. 인증서를 만들고 싶지 않습니다. 자기. 인증 기관에서 2 개의 파일로 인증서를 구입했습니다. 차라리 OpenSSL 도구를 사용하고 싶습니다
jlp

5

귀하의 요구 사항과 관련이 있습니다. OpenSSL을 사용하여 CRT 및 KEY 파일을 PFX로 결합

위 링크에서 추출한 내용 :

먼저 기존 .crt 파일에서 루트 CA 인증서를 추출해야합니다. 나중에 필요하기 때문입니다. .crt를 열고 인증 경로 탭을 클릭하십시오.

최상위 인증서 (이 경우 VeriSign)를 클릭하고 인증서보기를 누르십시오. 세부 사항 탭을 선택하고 파일로 복사…를 누르십시오.

Base-64로 인코딩 된 X.509 (.CER) 인증서를 선택하십시오. rootca.cer 또는 이와 유사한 것으로 저장하십시오. 다른 파일과 같은 폴더에 저장하십시오.

rootca.cer에서 rootca.crt로 이름 바꾸기 이제 PFX 파일을 만들 수있는 폴더에 3 개의 파일이 있어야합니다.

여기에 OpenSSL이 필요합니다. 우리 중 하나를 수행 할 수 있습니다 다운로드 및 Windows에 설치 하거나, OSX에 단순히 개방 터미널.

편집하다:

  1. 인증서 설치 방법에 대한 단계별 정보 가 포함 된 지원 링크가 있습니다.

  2. 성공적으로 설치 한 후 인증서를 내보내고 .pfx형식을 선택하고 개인 키 포함을 선택하십시오 .

    중요 참고 : 인증서를 .pfx 형식으로 내보내려면 인증서를 요청한 동일한 컴퓨터에서 단계를 수행해야합니다 .

  3. 가져온 파일을 서버에 업로드 할 수 있습니다.


1
설명해 주시겠습니까? CERT 파일에서 PFX 파일을 정확히 어떻게 만들었습니까? KEY 파일을 어디에서 어떻게 만들 었는지 모두 혼란 스럽습니다.

3
KEY 파일을 어떻게 얻었는지 여기에서 친절하게 설명해 주시겠습니까? 예 :openssl pkcs12 -inkey example.com.key -in example.com.crt -export -out example.com.pfx

5

이것은 * .cer를 * .pfx 파일로 변환하는 가장 쉬운 방법입니다 :

DigiCert에서 휴대용 인증서 변환기를 다운로드하십시오. https://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

그것을 실행하고 파일을 선택하고 * .pfx를 얻으십시오 !!


큰! 이것은 효과가 있었다. .p7b 파일이 있습니다. GoDaddy에서 제공 한 지침에 따라 IIS로 가져 왔습니다. 그런 다음 .cer 파일 (키 파일)을 생성 한 다음이 유틸리티를 사용하여 pfx를 얻습니다.
시바 나루

Digicert 도구는 최고의 도구입니다.
L_7337

1
OP 가이 도구를 사용하여 원하는 것을 수행하는 방법을 볼 수 없습니다. 키 및 cer 파일에서 인증서를 만들지 않고 인증서 만 내보낼 수있는 것 같습니다.
NickG

1
인증서를 "설치"한 다음 SSL 탭으로 돌아가서 "내보내기"하여 실제 pfx 파일을 가져와야 할 수도 있습니다.
access_granted

3

MMC에서 인증서를 사용할 수 있다고 말하면 "현재 사용자"또는 "로컬 컴퓨터"에서 인증서를 사용할 수 있습니까? 개인 키가 로컬 컴퓨터 아래에있는 경우에만 개인 키를 내보낼 수 있음을 발견했습니다.

인증서 스냅인을 MMC에 추가하고 인증서를 관리 할 계정을 선택할 수 있습니다. 로컬 컴퓨터를 선택하십시오. 인증서가 없으면 저장소를 마우스 오른쪽 단추로 클릭하고 모든 작업> 가져 오기를 선택하여 가져 오십시오.

이제 로컬 컴퓨터 버전의 인증서 스냅인에서 가져온 인증서로 이동하십시오. 인증서를 마우스 오른쪽 단추로 클릭하고 모든 작업> 내보내기를 선택하십시오. 내보내기 마법사의 두 번째 페이지는 개인 키를 내보낼 것인지 묻습니다. 예를 선택하십시오. PFX 옵션은 사용 가능한 유일한 옵션입니다 (아니요를 선택하고 개인 키를 내보내는 옵션을 현재 사용자 계정에서 사용할 수없는 경우 회색으로 표시됨).

PFX 파일의 암호를 설정 한 다음 인증서 이름을 설정하라는 메시지가 표시됩니다.


1

나는 같은 문제를 겪고 있었다. 내 문제는 확장 된 SSL 유효성 검사 프로세스가 완료되기 전에 초기 인증서 요청을 생성 한 컴퓨터가 다운되었다는 것입니다. 새 개인 키를 생성 한 다음 인증서 공급자에서 업데이트 된 인증서를 가져와야했습니다. 개인 키가 컴퓨터에 없으면 인증서를 pfx로 내보낼 수 없습니다. 옵션이 회색으로 표시됩니다.


1

@rainabba와 같이 IIS를 사용하여 새로운 CSR을 생성하는 것이 가장 쉬운 방법이지만 중간 인증서가 있다고 가정하면 온라인 변환기가 있습니다 (예 : https://www.sslshopper.com/ssl-converter). html

이를 통해 다른 프로그램을 설치하지 않고도 인증서와 개인 키에서 PFX를 만들 수 있습니다.


0

대부분의 경우 인증서를 PFX (개인 키 포함)로 내보낼 수없는 경우 MMC / IIS가 개인 키 (CSR 생성에 사용)를 찾을 수 없거나 액세스 할 수 없기 때문입니다. 이 문제를 해결하기 위해 수행 한 단계는 다음과 같습니다.

  • 관리자 권한으로 MMC 실행
    • MMC를 사용하여 CSR을 생성하십시오. 에 따라 이 지침에 인증서를 내보낼 수 있도록.
  • CA (crt + p7b)에서 인증서를 받으면 가져 오십시오 (개인 \ 인증서 및 중간 인증 기관 \ 인증서)
  • 중요 : 새 인증서 (Personal \ Certificates) All Tasks를 마우스 오른쪽 단추로 클릭하십시오. 개인 키를 관리하고 계정 또는 Everyone (Risk!)에 권한을 할당하십시오. 완료되면 이전 권한으로 돌아갈 수 있습니다.
  • 이제 인증서를 마우스 오른쪽 단추로 클릭하고 모든 작업 .. 내보내기를 선택하면 개인 키를 포함한 인증서를 PFX 파일로 내보내고 Azure에 업로드 할 수 있습니다.

도움이 되었기를 바랍니다!


Personal \ Certificates에 이미 인증서가 있지만 마우스 오른쪽 단추를 클릭하면 "개인 키 관리"가 나타나지 않습니다. 선택할 수있는 옵션은 "새 키로 인증서 요청 ...", "새 키로 인증서 갱신 ..."및 "내보내기"입니다. 내가 무엇을 놓치고 있는지 알고 있습니까?
Gabrielizalo

1
DigiCert의 휴대용 인증서 변환기로 수정했습니다 : digicert.com/util/…
Gabrielizalo

"CSR 생성"에 실패했습니다. 개인 키가 이미 있으면 CSR을 생성 할 필요가 없습니다. 원래 질문을 읽으십시오.
NickG

0

나는 몇 가지 사용자가 이것과 그 설치 및 명령 줄 프로그램 추가 및 다운로드에 대해 이야기했다고 알고 있습니다 ...

개인적으로 게으르고 모든 방법이 번거롭고 느리다는 것을 알았습니다. 필요하지 않은 경우 아무것도 다운로드하지 않고 올바른 cmd 줄을 찾고 싶지 않습니다.

개인 IIS 서버에서 가장 좋은 방법은 RapidSSLOnline을 사용하는 것입니다. 서버에있는 도구로 인증서와 개인 키를 업로드 할 수 있으며 IIS로 직접 가져올 수있는 pfx 파일을 생성 할 수 있습니다.

링크는 다음과 같습니다 : https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

요청 된 시나리오에 사용되는 단계는 다음과 같습니다.

  1. 현재 유형 선택 = PEM
  2. = PFX 변경
  3. 인증서 업로드
  4. 개인 키 업로드
  5. ROOT CA 인증서 또는 중간 인증서가 있으면 업로드하십시오.
  6. IIS에서 사용되는 비밀번호를 설정하십시오.
  7. 봇이 아님을 증명하려면 reCaptcha를 클릭하십시오.
  8. 변환을 클릭하십시오

PFX를 다운로드하여 IIS의 가져 오기 프로세스에서 사용해야합니다.

희망이 있고 게으른 기술 사람들과 같은 다른 사람들을 돕기를 바랍니다.


6
인증서를 발급하지 않은 타사 웹 사이트에 인증서를 업로드해도 안전합니까?
Kunal

1
안녕하세요, GeoTrust가 소유 한 Rapid SSL이 있습니다. 인증을받는 두 기관 내가 말할 수있는 한 ... digital.com/ssl-certificates/geotrust digital.com/ssl-certificates/RAPIDSSL 안전과 관련하여 인증서가 외부 시스템에 의해 생성되고 최소한의 익스플로잇이 될 것이라고 생각합니다. 여전히 유효해야합니다. 제 경우에는 90 일마다 갱신 해야하는 sslforfree.com 을 사용 했지만 특히 데모 사이트 등을 위해 더 저렴한 비용을 지불하는 것은 저렴한 가격입니다.
TheNerdyNerd

5
@Kunal : 테스트 / 개발 인증서 파일을 얻는 간단한 방법 일 수 있지만 개인 키를 다른 사람에게 업로드하는 것은 안전한 프로덕션 환경을위한 일반적인 용어입니다.
Stefan

0

SSLForFree의 cfx 파일의 경우 https://decoder.link/converter가 가장 쉽습니다.

PEM-> PKCS # 12가 선택되었는지 확인한 다음 인증서, ca_bundle 및 키 파일을 업로드하고 변환하십시오. 비밀번호를 기억 한 다음 사용한 비밀번호로 업로드하고 바인딩을 추가하십시오.

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