Como posso criar um certificado autoassinado para o host local?

133

Eu segui as etapas detalhadas em Como você usa https / SSL no host local? mas isso configura um certificado autoassinado para o nome da minha máquina e, ao navegar por https: // localhost , recebo o aviso do IE.

Existe uma maneira de criar um certificado autoassinado para "localhost" para evitar esse aviso?

chris
fonte
Você instalou o certificado como uma autoridade de certificação?
vcsjones
Eu segui o processo para instalar um certificado autoassinado no IIS no Win7. Mas isso cria o certificado para "mymachinename" e eu preciso de um para "localhost".
chris
1
Oi! Considere definir a resposta de Auri como a resposta principal, pois o makecert está obsoleto. Link para a resposta: stackoverflow.com/a/44164653/1461602
Tormod Haugene

Respostas:

81

Embora esta postagem esteja marcada para o Windows, é uma questão relevante no OS X que eu não vi respostas para outro lugar. Aqui estão as etapas para criar um certificado autoassinado para o host local no OS X :

# Use 'localhost' for the 'Common name'
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt

# Add the cert to your keychain
open localhost.crt

Em Keychain Access, clique duas vezes neste novo certificado de host local. Expanda a seta ao lado de "Confiar" e escolha "Sempre confiar". Agora o Chrome e o Safari devem confiar neste certificado. Por exemplo, se você deseja usar este certificado com o node.js:

var options = {
    key: fs.readFileSync('/path/to/localhost.key').toString(),
    cert: fs.readFileSync('/path/to/localhost.crt').toString(),
    ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
    honorCipherOrder: true,
    secureProtocol: 'TLSv1_2_method'
};

var server = require('https').createServer(options, app);
Ben Flynn
fonte
2
O primeiro comando ssh-keygen,, é desnecessário, pois o comando openssl também está criando uma nova chave (e substituindo a criada pelo ssh).
Félix Saparelli
7
Além disso, você pode automatizar o processo completamente adicionando -subj '/CN=localhost'aos opensslargumentos.
Félix Saparelli
8
Para ter confiança OS X a partir da linha em vez de clicar em torno de comando, você pode fazer:sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
philfreo
1
Também relevante para linux. Muito obrigado.
Marcel
1
Segui todas essas etapas e estou recebendo um ERR_SSL_VERSION_OR_CIPHER_MISMATCHno Chrome 60 e o Safari 10.1.2 também não gosta.
Styfle
61

Como esta pergunta está marcada IISe não consigo encontrar uma boa resposta sobre como obter um certificado confiável, darei meus 2 centavos sobre isso:

Primeiro, use o comando do @AuriRahimzadeh no PowerShell como administrador:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Isso é bom, mas o certificado não é confiável e resultará no seguinte erro. É porque não está instalado no Trusted Root Certification Authorities.

insira a descrição da imagem aqui

Resolva isso iniciando mmc.exe.

Então vá para:

Arquivo -> Adicionar ou remover snap-ins -> Certificados -> Adicionar -> Conta do computador -> Computador local. Clique em Finish.

Expanda a Personalpasta e você verá seu localhostcertificado:

insira a descrição da imagem aqui

Copie o certificado na Trusted Root Certification Authorities - Certificatespasta

O passo final é abrir Internet Information Services (IIS) Managerou simplesmente inetmgr.exe. A partir daí, acesse seu site, selecione Bindings...e Add...ou Edit.... Defina httpse selecione seu certificado na lista suspensa.

insira a descrição da imagem aqui

Agora, seu certificado é confiável:

insira a descrição da imagem aqui

Ogglas
fonte
9
Essa deve ser a resposta aceita! Funciona! Se você mexeu com o host local e o certificado confiável. Certifique-se de remover todos os antigos certificados localhost (via console MMC e IIS (servidor superior gerenciado)
Tuan Jinn
Obrigado! Existem muitas respostas para SO e postagens no blog sobre esse tópico, mas muito poucas conversas sobre os problemas de confiança do certificado. Dica: Talvez você deva explicar por que não usa a porta SSL padrão 443? Eu acho que é porque essa porta é frequentemente usada por algum outro processo.
HoffZ
Resposta muito boa e funciona bem no IIS em 2020. Muito obrigado!
alessandrocb
Também funciona para aliases no arquivo hosts
Zef 27/07
52

Você pode usar o PowerShell para gerar um certificado autoassinado com o cmdlet new-selfsignedcertificate:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Nota: makecert.exe está obsoleto.

Referência do cmdlet: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate

Auri Rahimzadeh
fonte
Esta deve ser a resposta a partir de 2017.
Tormod Haugene
1
Para quem segue e não sabe como instalar o certificado resultante, siga as etapas deste vídeo, funcionou para mim! youtube.com/watch?v=y4uKPUFmSZ0
Eric Brown - Cal
6
onde os arquivos key e crt são armazenados?
precisa saber é o seguinte
1
@ woojoo666 com -KeyLocationsinalizador, você pode especificar o local.
hamid
46

Depois de dedicar um bom tempo a esse problema, sempre que seguia as sugestões de uso do IIS para criar um certificado autoassinado, descobri que o Emitido para e Emitido por não estava correto. SelfSSL.exe foi a chave para resolver esse problema. O site a seguir não apenas forneceu uma abordagem passo a passo para a criação de certificados autoassinados, mas também resolveu o problema Emitido e Emitido para. Aqui está a melhor solução que encontrei para criar certificados autoassinados. Se você preferir ver o mesmo tutorial em formato de vídeo, clique aqui .

Um exemplo de uso do SelfSSL seria semelhante ao seguinte:

SelfSSL /N:CN=YourWebsite.com / V: 1000 / S: 2

SelfSSL /? fornecerá uma lista de parâmetros com explicação.

app.developer.henry
fonte
O artigo de RobBagby.com funcionou perfeitamente para mim. Bom encontrar Henry.
Cymorg
MEGA! Esse vídeo tem baixa qualidade, mas tem tudo o que é necessário.
Tonco
2
O link para o site robbagby está morto. Veja a minha resposta para 2 tutoriais do YouTube de alta qualidade por CodeCowboyOrg
Moses Machua
Resposta editada para vincular ao arquivo de artigos do Wayback em robbagby.com.
Prometheus
23

Se você está tentando criar um certificado autoassinado que permite que você vá, http://localhost/mysite aqui está uma maneira de criá-lo

makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx

De http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200

David Burela
fonte
2
para onde foi o meu certificado: o não está em C: \ Windows \ system32
EaterOfCode
2
A propósito, a ferramenta makecert.exe é usada através do prompt de comando do Visual Studio para futuros leitores. Você também pode usar as Ferramentas do Kit de Recursos dos Serviços de Informações da Internet (IIS) e instalar o SelfSSL 1.0. microsoft.com/downloads/en/…
atconway
3
Embora as respostas rápidas sejam ótimas, elas nem sempre ajudam. "O certificado não pode ser usado como um certificado do servidor SSL" é um erro que vejo no IIS7. Op também mencionou avisos do navegador e não "Como faço para criar um certificado"?
Cmroanirgo
Você pode omitir o passo cert2spc devido parâmetro pvk2pfx -spc aceita tanto .spc e cer
abatishchev
1
O @EaterOfCode Mine estava em C: \ Windows \ SysWOW64
Bay Sola
10

Eu recomendaria a ferramenta do Pluralsight para criar certificados autoassinados: http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-or-programmatically-in-net

Faça seu certificado como .pfx e importe-o para o IIS. E adicione-o como uma autoridade de certificação raiz confiável.

cederlof
fonte
1
Depois de experimentar todos os tipos de "magia" do PowerShell e outras coisas que simplesmente não funcionaram - a ferramenta do Pluralsight gerou um script para mim em 30 segundos, e isso inclui o tempo que levou para comer a pizza (+ baixar e extrair a ferramenta, quero dizer). Como ainda estou executando o Windows 7 neste laptop antigo - essa foi a solução perfeita para mim, obrigado!
Ade
1

Sim e não. Os certificados autoassinados resultam nessa mensagem de aviso porque o certificado não foi assinado por uma Autoridade de Certificação confiável. Existem algumas opções que você pode considerar para remover esse aviso na sua máquina local. Veja as respostas mais altas classificadas para esta pergunta para obter detalhes:

O que preciso fazer para que o Internet Explorer 8 aceite um certificado autoassinado?

Espero que isto ajude!


EDITAR:

Desculpe, inicialmente não sabia que você estava restrito ao localhost. Você pode tentar seguir as instruções no link abaixo para "Gerar um certificado autoassinado com o nome comum correto".

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html

Phil Klein
fonte
Não, a mensagem de aviso está lá porque o URL ( host local ) não corresponde ao nome do certificado, emitido com o nome da máquina. Se eu mudar para mymachinename , não recebo o erro. Infelizmente, tenho que usar o host local e não o nome da máquina por motivos que não afetam a pergunta.
chris
1

você pode tentar mkcert.

macos: brew install mkcert

Clark Yu
fonte
0

Se você estiver usando o Visual Studio, existe uma maneira fácil de configurar e ativar o SSL usando o IIS Express, explicado aqui

Amir Chatrbahr
fonte