Como criar um arquivo .pfx a partir de certificado e chave privada?

363

Preciso do arquivo .pfx para instalar https no site no IIS.

Eu tenho dois arquivos separados: certificado (.cer ou pem) e chave privada (.crt), mas o IIS aceita apenas arquivos .pfx.

Obviamente, instalei o certificado e ele está disponível no gerenciador de certificados (mmc), mas quando seleciono o Assistente para Exportação de Certificados não consigo selecionar o formato PFX (está acinzentado)

Existem ferramentas para fazer isso ou exemplos em C # de fazer isso programaticamente?

jlp
fonte
2
possível duplicata de converter um certificado CERT / PEM a um certificado PFX
Daniel DiPaolo
11
verdade, mas a resposta não é clara e não corrigir alguma coisa no meu caso
jlp
@alexl existe a versão do windows?
jlp
Openssl é totalmente desnecessário em quase todos os casos. Acabei de adicionar minha resposta (que eu crio uma entrada de blog para fornecer). A ironia é que, quando você gera o CSR como pretendido, provavelmente nem precisará do PFX.
rainabba

Respostas:

554

Você precisará usar o openssl.

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

O arquivo de chave é apenas um arquivo de texto com sua chave privada.

Se você possui uma autoridade de certificação raiz e certificados intermediários, inclua-os também usando vários -inparâmetros

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

Você pode instalar o openssl a partir daqui: openssl

jdehlin
fonte
11
"O arquivo de chave é apenas um arquivo de texto com sua chave privada." É verdade, exceto quando não é.
Casey #
37
Obrigado, eu também vou adicionar se você tiver uma CA raiz ou intermiediate cert você pode anexá-lo através do fornecimento de múltiplos -in parâmetro:openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
gerrytan
10
Fiz o trabalho para mim. Como observação secundária, para executar isso em uma máquina Windows, é necessário executar o openssl em um prompt de comando do Administrador.
Martin Costello
13
De onde você tira o arquivo-chave? Tenho um certificado SSL emitido, mas não vejo um arquivo de chave em lugar algum. Acabei de obter um arquivo p7b e um monte de arquivos * .crt.
Knelis
11
Para que isso funcionasse no openssl 1.0.2m, eu precisei especificar -certfile intermediate.crt -certfile rootca.crtantes de ser solicitado a proteger o .pfxcódigo com uma senha / senha. Acredito que isso seja possivelmente porque .keynão correspondeu aos -inarquivos adicionais, resultando na mensagem de erro "Nenhum certificado corresponde à chave privada" que eu estava recebendo.
dragon788
36

O utilitário de linha de comando do Microsoft Pvk2Pfx parece ter a funcionalidade que você precisa:

Pvk2Pfx (Pvk2Pfx.exe) é uma ferramenta de linha de comando que copia informações de chave pública e chave privada contidas nos arquivos .spc, .cer e .pvk em um arquivo de troca de informações pessoais (.pfx).
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx

Nota: se você precisar / desejar / preferir uma solução C #, considere usar o http://www.bouncycastle.org/ api.

Seymour
fonte
11
-spc argumento para o arquivo .cer
BozoJoe 23/02
2
C: \ Arquivos de Programas (x86) \ Windows Kits \ 10 \ bin \ 10.0.15063.0 \ x64 \ pvk2pfx.exe
Stefan Steiger
35

Se você está procurando uma GUI do Windows, consulte o DigiCert. Eu apenas usei isso e foi bastante simples.

Na guia SSL, primeiro importei o certificado. Depois que selecionei o certificado, pude exportar como um PFX, com e sem um arquivo de chave.

https://www.digicert.com/util

joelnet
fonte
15
Quando faço isso, ele diz que não tenho a chave privada importada no meu computador. Que é verdade.
Niels Brinch
6
@NielsBrinch Quando faço isso, também diz que não tenho a chave privada importada no meu computador. Esperar que é falso, é na mesma pasta como o certificado ...
aBertrand
@NielsBrinch Para resolver esse problema, tive que reenviar um novo CSR e fazer o download do certificado novamente quando ele foi processado. A chave privada estava oculta no servidor / máquina em que você criou o CSR. Isso resolveu essa mensagem de erro.
Paddymac 31/05/19
Posso recomendar o DigiCert com base em vários anos de experiência com eles.
mmell 10/02
Não se esqueça de incluir a chave privada no diretório raiz do DigiCertUtil.exeexecutável. O mais fácil é copiá-lo para a pasta do certificado.
Jonas
32

Você NÃO precisa de openssl ou makecert ou nada disso. Você também não precisa da chave pessoal fornecida pela sua CA. Eu quase posso garantir que o problema é que você espera poder usar os arquivos de chave e cer fornecidos pela sua CA, mas eles não são baseados na "maneira do IIS". Estou tão cansado de ver informações ruins e difíceis por aqui que decidi publicar o assunto e a solução no blog. Quando você perceber o que está acontecendo e ver como é fácil, vai querer me abraçar :)

Certificados SSL para IIS com PFX de uma vez por todas - SSL e IIS explicados - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

Use a interface do usuário "Certificados do servidor" do IIS para "Gerar solicitação de certificado" (os detalhes desta solicitação estão fora do escopo deste artigo, mas são críticos). Isso fornecerá um CSR preparado para o IIS. Você então entrega esse CSR à sua CA e solicita um certificado. Então você pega o arquivo CER / CRT que eles fornecem, volte para o IIS, "Solicitação de certificado completa" no mesmo local em que você gerou a solicitação. Pode solicitar um .CER e você pode ter um .CRT. Eles são a mesma coisa. Apenas mude a extensão ou use o .suspenso de extensão para selecionar seu arquivo .CRT. Agora forneça um "nome amigável" adequado (* .seudominio.com, seudominio.com, foo.seudominio.com, etc.). ISTO É IMPORTANTE! Isso DEVE coincidir com o que você configurou o CSR e com o que sua CA forneceu. Se você solicitou um curinga, sua CA deve ter aprovado e gerado um curinga e você deve usá-lo. Se o seu CSR foi gerado para foo.yourdomain.com, você DEVE fornecer o mesmo nesta etapa.

rainabba
fonte
2
A pergunta foi aberta com: "Eu preciso do arquivo .pfx para instalar https no site no IIS".
21714 rainabba
34
Você pode colocar o conteúdo relevante da sua postagem na sua resposta, por favor? Dessa forma, a resposta ainda é relevante, mesmo que seu blog desapareça. Você ainda pode criar um link para seu blog. Como é, não há 0 informação útil no conteúdo da resposta.
Deanna
16
Essa é a maneira mais simples se você estiver solicitando um novo certificado, no entanto, não funcionará se você já tiver um certificado e / ou chave privada (por exemplo, uma que você usou anteriormente com apache) porque a solicitação de assinatura de certificado do IIS gerará uma nova senha privada key.Eu acho esse aspecto do IIS realmente irritante, já que toda a "solicitação completa" está fazendo é combinar a chave privada com o certificado público para produzir um pfx, por que ele não podia simplesmente aceitá-los como arquivos PEM separados, que sabem.
Chris Chilvers
2
Embora eu aprecie que sua solução seja provavelmente a "maneira certa de fazer" as coisas, acho que é mais esforço do que mexer com o openssl - uma ferramenta, uma chamada de linha de comando, uma senha. Também não sei se todas as empresas SSL suportam essa abordagem.
Jan Bühler
8
Receio que sua resposta não ajude se o certificado foi gerado em outro lugar. Ok, o IIS espera gerar e se apegar à própria chave privada - às vezes isso não é uma opção.
staticsan
8

Criei o arquivo .pfx a partir dos arquivos .key e .pem.

Como isso openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx

Siim Nelis
fonte
11
Este é basicamente o mesmo comando que usei, mas eu precisava adicionar o winpty antes do openssl (por exemplo, winpty openssl pkcs12 ....) enquanto usava o Git bash, que é uma solução comum para o openssl no Windows.
precisa saber é o seguinte
Eu não precisava do -exportinterruptor.
mmell
7

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

((citações relevantes do artigo estão abaixo))

Em seguida, você deve criar o arquivo .pfx que você usará para assinar suas implantações. Abra uma janela do prompt de comando e digite o seguinte comando:

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

Onde:

  • pvk - yourprivatekeyfile.pvk é o arquivo de chave privada que você criou na etapa 4.
  • spc - yourcertfile.cer é o arquivo de certificado que você criou na etapa 4.
  • pfx - yourpfxfile.pfx é o nome do arquivo .pfx que será criado.
  • po - yourpfxpassword é a senha que você deseja atribuir ao arquivo .pfx. Você será solicitado a fornecer essa senha ao adicionar o arquivo .pfx a um projeto no Visual Studio pela primeira vez.

(Opcionalmente (e não para o OP, mas para futuros leitores), você pode criar o arquivo .cer e .pvk a partir do zero) (você faria isso ANTES do acima). Observe que mm / dd / aaaa são espaços reservados para datas de início e término. consulte o artigo msdn para obter a documentação completa.

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

Você precisa usar a ferramenta Makecert.

Abra um prompt de comando como administrador e digite o seguinte:

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

Onde <CertifcateName>= o nome do seu certificado a ser criado.

Em seguida, você pode abrir o snap-in do Gerenciador de Certificados para o console de gerenciamento digitando certmgr.msc no menu Iniciar, clique em pessoal> certificados> e seu certificado estará disponível.

Aqui está um artigo.

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

BentOnCoding
fonte
3
Não posso. No assistente de exportação, a opção pfx está acinzentada
jlp 10/06
meu certificado está disponível no gerenciador de certificados. O que não posso fazer é exportar para o formato pfx. O que sua instrução de linha de comando faz?
jlp
Tente criar o certificado conforme recomendado e deixe-me saber se funciona. Provavelmente levará 5 minutos. O artigo vinculado fornece uma explicação completa do que está acontecendo.
BentOnCoding
Não é o que estou procurando. Eu não quero fazer cert. Eu mesmo. Comprei cert da autoridade cert em 2 arquivos. Eu prefiro usar a ferramenta OpenSSL
jlp
5

Eu tenho um link com sua exigência. Combine arquivos CRT e KEY em um PFX com OpenSSL

Extratos do link acima:

Primeiro, precisamos extrair o certificado da CA raiz do arquivo .crt existente, porque precisamos disso mais tarde. Então, abra o arquivo .crt e clique na guia Caminho da Certificação.

Clique no certificado superior (neste caso, VeriSign) e clique em Ver certificado. Selecione a guia Detalhes e clique em Copiar para arquivo…

Selecione o certificado X.509 (.CER) codificado em Base-64 Salve-o como rootca.cer ou algo semelhante. Coloque-o na mesma pasta que os outros arquivos.

Renomeie-o de rootca.cer para rootca.crt Agora devemos ter 3 arquivos em nossa pasta a partir dos quais podemos criar um arquivo PFX.

Aqui é onde precisamos do OpenSSL. Podemos fazer o download e instalá-lo no Windows ou simplesmente abrir o terminal no OSX.

EDITAR:

  1. Há um link de suporte com informações passo a passo sobre como instalar o certificado.

  2. Após a instalação bem-sucedida, exporte o certificado, escolha o .pfxformato, inclua chave privada.

    Nota importante :: Para exportar o certificado no formato .pfx, siga as etapas na mesma máquina na qual você solicitou o certificado .

  3. O arquivo importado pode ser carregado no servidor.

sudhAnsu63
fonte
11
Você pode explicar, por favor? como exatamente você criou o arquivo PFX a partir do arquivo CERT? Onde ou como você criou o arquivo KEY, por favor, todos são confusos.
3
Você pode gentilmente explicar a partir daqui como eles arquivam CHAVE? por exemplo:openssl pkcs12 -inkey example.com.key -in example.com.crt -export -out example.com.pfx
5

Esta é DE longe a maneira mais fácil de converter arquivos * .cer para * .pfx:

Basta baixar o conversor de certificado portátil do DigiCert: https://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

Execute-o, selecione um arquivo e obtenha seu * .pfx !!

user1613797
fonte
Ótimo! Isso funcionou. Eu tinha o arquivo .p7b. Eu importei isso para o meu IIS usando as instruções fornecidas pelo GoDaddy. Em seguida, gerou o arquivo .cer (arquivo-chave) e, em seguida, usou esse utilitário para obter o pfx.
Shiva Naru
A ferramenta Digicert é, de longe, a melhor.
L_7337 04/01
11
Não vejo nenhuma maneira de fazer o que o OP quer fazer usando essa ferramenta. Parece permitir apenas que você exporte certificados - não os crie a partir de arquivos de chaves e cer.
26917 NickG
11
Provavelmente vale a pena mencionar que você primeiro precisa "instalar" o certificado e, em seguida, voltar à guia SSL e "exportar" para obter o arquivo pfx real.
ACCESS_GRANTED
3

Quando você diz que o certificado está disponível no MMC, ele está disponível em "Usuário Atual" ou "Computador Local"? Descobri que só posso exportar a chave privada se estiver em Computador Local.

Você pode adicionar o snap-in de Certificados ao MMC e escolher para qual conta ele deve gerenciar certificados. Escolha Computador Local. Se o seu certificado não estiver lá, importe-o clicando com o botão direito do mouse na loja e escolhendo Todas as Tarefas> Importar.

Agora, navegue até o certificado importado na versão Computador local do snap-in do certificado. Clique com o botão direito do mouse no certificado e escolha Todas as tarefas> Exportar. A segunda página do assistente de exportação deve perguntar se você deseja exportar a chave privada. Selecione Sim. A opção PFX agora será a única disponível (fica acinzentada se você selecionar não e a opção de exportar a chave privada não estiver disponível na conta Usuário Atual).

Você será solicitado a definir uma senha para o arquivo PFX e, em seguida, definir o nome do certificado.

Ryan Elkins
fonte
1

Eu estava tendo o mesmo problema. Meu problema foi que o computador que gerou a solicitação inicial de certificado falhou antes que o processo de validação de SSL estendido fosse concluído. Eu precisava gerar uma nova chave privada e importar o certificado atualizado do provedor de certificados. Se a chave privada não existir no seu computador, você não poderá exportar o certificado como pfx. Eles opção está acinzentada.

Bill Mahoney
fonte
1

Embora seja provavelmente mais fácil gerar um novo CSR usando o IIS (como disse o @rainabba), supondo que você tenha os certificados intermediários, existem alguns conversores on-line por aí - por exemplo: https://www.sslshopper.com/ssl-converter. html

Isso permitirá que você crie um PFX a partir do seu certificado e chave privada sem precisar instalar outro programa.

William
fonte
0

Na maioria dos casos, se você não conseguir exportar o certificado como PFX (incluindo a chave privada), o MMC / IIS não poderá encontrar / não ter acesso à chave privada (usada para gerar o CSR). Estas são as etapas que segui para corrigir esse problema:

  • Execute o MMC como administrador
  • Depois de obter o certificado da CA (crt + p7b), importe-o (Pessoal \ Certificados e Autoridade de Certificação Intermediária \ Certificados)
  • IMPORTANTE: Clique com o botão direito do mouse em seu novo certificado (Pessoal \ Certificados) Todas as tarefas ... Gerenciar chave privada e atribua permissões à sua conta ou a Todos (arriscado!). Você pode voltar às permissões anteriores depois de terminar.
  • Agora, clique com o botão direito do mouse no certificado e selecione Todas as tarefas .. Exportar, e você poderá exportar o certificado, incluindo a chave privada como um arquivo PFX, e poderá carregá-lo no Azure!

Espero que isto ajude!

Jose Parra
fonte
Eu já tenho meu certificado em Pessoal \ Certificados, mas com o Botão Direito não aparece "Gerenciar Chave Privada". As opções que recebo são: "Solicitar certificado com nova chave ...", "Renovar certificado com nova chave ..." e "Exportar" ... Você tem alguma idéia do que estou perdendo?
Gabrielizalo 21/08
11
I fixa-lo com o conversor certificado portátil de DigiCert: digicert.com/util/...
Gabrielizalo
Você falhou em "gerar CSR". Se você já possui a chave privada, não precisa gerar um CSR. Por favor, leia a pergunta original.
26417 NickG
0

Eu sei que alguns usuários falaram sobre instalar isso e aquilo e adicionar programas de linhas de comando e baixar ...

Pessoalmente, sou preguiçoso e acho todos esses métodos pesados ​​e lentos, além de não querer baixar nada e encontrar as linhas cmd corretas, se não for necessário.

A melhor maneira para mim, no meu servidor IIS pessoal, é usar o RapidSSLOnline. Esta é uma ferramenta que está em um servidor, permite que você faça upload de seu certificado e chave privada e pode gerar um arquivo pfx para você, que você pode importar diretamente para o IIS.

O link está aqui: https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

Abaixo estão as etapas usadas para o cenário solicitado.

  1. Selecionar tipo atual = PEM
  2. Alterar para = PFX
  3. Faça o upload do seu certificado
  4. Faça o upload da sua chave privada
  5. Se você possui certificado ROOT CA ou certificado intermediário, faça o upload deles também
  6. Defina uma senha de sua escolha, usada no IIS
  7. Clique no reCaptcha para provar que você não é um bot
  8. Clique em Convert

E é isso que você deve ter um PFX baixado e usá-lo em seu processo de importação no IIS.

Espero que isso ajude outras pessoas com a mesma mentalidade e preguiçosas da tecnologia.

TheNerdyNerd
fonte
6
É seguro fazer upload do seu certificado em um site de terceiros que não emitiu o certificado?
Kunal
11
Olá, Rapid SSL, acredito que sejam de propriedade da GeoTrust. Autoridades na obtenção de um certificado. Tanto quanto posso dizer ... digital.com/ssl-certificates/geotrust digital.com/ssl-certificates/RAPIDSSL no que diz respeito à segurança, acho que seria uma exploração mínima, pois seu certificado seria gerado por um sistema externo e ainda tem que ser válido. No meu caso eu usei o sslforfree.com que tem que ser renovado a cada 90 dias, mas é um pequeno preço a pagar por um custo mais baixo, especialmente para a minha demos local etc
TheNerdyNerd
5
@Kunal: Essa pode ser uma maneira simples de obter arquivos de certificado de teste / desenvolvimento, mas carregar sua chave privada em outra parte é muito comum para ambientes de produção seguros.
Stefan
0

Para arquivos cfx do SSLForFree, acho este https://decoder.link/converter mais fácil.

Simplesmente verifique se PEM -> PKCS # 12 está selecionado, faça o upload do certificado, ca_bundle e arquivos de chave e converta. Lembre-se da senha, faça o upload com a senha usada e adicione as ligações.

Pete Herc
fonte