Tentando seguir várias instruções sobre como criar um certificado autoassinado para uso com o host local, a maioria das instruções parece ser para o IIS, mas estou tentando usar o Nodejs / Express. Nenhum deles funciona corretamente porque, embora o certificado seja instalado, ele não é confiável. aqui está o que eu tentei que falha:
- Como posso criar um certificado autoassinado para o host local?
- https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-nginx-for-ubuntu-12-04/
- http://blogs.developerforce.com/developer-relations/2011/05/generating-valid-self-signed-certificates.html
- http://www.robbagby.com/iis/self-signed-certificates-on-iis-7-the-easy-way-and-the-most-effective-way/
Alguém pode oferecer um fluxo de trabalho que possa fazer isso? Posso instalar um certificado, mas não posso confiar no certificado no chrome (v32) ou no IE (v10).
EDIT: foi sugerido nos comentários que o problema não é raiz certificada confiável. Eu instalei o certificado via IE, mas ele ainda não é confiável.
Respostas:
As respostas acima foram parciais. Passei tanto tempo fazendo isso funcionar, é insano. Observe o meu futuro eu, aqui está o que você precisa fazer:
Estou trabalhando no Windows 10, com o Chrome 65. O Firefox está se comportando bem - basta confirmar o host local como uma exceção de segurança e ele funcionará. O Chrome não:
Etapa 1. No seu back-end, crie uma pasta chamada
security
. nós trabalharemos dentro dele.Etapa 2. crie um arquivo de configuração de solicitação nomeado
req.cnf
com o seguinte conteúdo (o crédito vai para: @Anshul )req.cnf:
Uma explicação para esses campos está aqui .
Etapa 3. navegue até a pasta de segurança no terminal e digite o seguinte comando:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout cert.key -out cert.pem -config req.cnf -sha256
Etapa 4. Em seguida, fora da
security
pasta, no seu aplicativo expresso, faça algo assim: (o crédito vai para @Diego Mello)server.js:
Etapa 5. inicie o servidor,
node server.js
e vá para https: // localhost: 3000 .Neste ponto, temos a configuração do servidor. Mas o navegador deve mostrar uma mensagem de aviso.
Precisamos registrar nosso certificado autoassinado, como uma Autoridade de Certificação confiável da CA, no armazenamento de certificados chrome / windows. (o Chrome também salva isso no Windows)
Etapa 6. abra o Dev Tools no chrome, acesse o painel Security e clique em View Certificate.
Etapa 7. vá para o painel Detalhes, clique em Copiar arquivo e, quando o Assistente para Exportação de Certificados aparecer, clique em Avançar, como abaixo:
Etapa 8. deixe a codificação DER, clique em Avançar, escolha
Browse
, coloque-a em uma pasta de fácil acesso, como a Desktop, e dê um nome ao certificadolocalhost.cer, then click Save and then Finish.
. Você poderá ver seu certificado na área de trabalho.Etapa 9. Abra
chrome://settings/
inserindo-o na caixa de URL. Abaixo, clique emAdvanced / Advanced Options
e role para baixo para encontrarManage Certificates
.Etapa 10. Vá para o painel Autoridades de certificação raiz confiáveis e clique em Importar.
Importaremos o
localhost.cer
certificado que acabamos de exportar na etapa 8.Etapa 11. clique em procurar, localize
localhost.cer
, deixe os valores padrão clique em um próximo conjunto de vezes - até esse aviso aparecer, clique em sim.Etapa 12. feche tudo e reinicie o chrome. Então, ao ir para
https://localhost:3000
você deve ver:fonte
https://localhost:3000
e o Chrome fica parado no carregamento. Alguém pode dizer qual pode ser o motivo?crl+shift+i
ouF12
para abrir o console.DNS.1 = server.local
Então sobre a actualização máquina ligando o arquivo HOSTS para apontar o endereço IP do servidor para o nome do host, por exemplo:192.168.0.50 server.local
Esta vontade permita que o certificado e o endereço correspondam e valide o certificado.Caminho mais curto. Testado no MacOS, mas pode funcionar de maneira semelhante em outro sistema operacional.
Gerar pem
Seu servidor expresso
https://localhost:3000
no Google Chrome e você verá que não é seguro. Ainda!fonte
Drag image to your desktop and double click it
-> não consigo arrastar nada para a minha área de trabalho, não é arrastável .. Do queimage
você está falando exatamente de minério?openssl req -newkey rsa:2048 -x509 -nodes -keyout keytmp.pem -new -out cert.pem -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650
vez da primeira linha sugerida. E também este irá pedir menos perguntas no processo ...Você pode tentar o openSSL para gerar certificados. Dê uma olhada nisso .
Você precisará de um arquivo .key e .crt para adicionar HTTPS ao servidor JS Express do nó. Depois de gerar isso, use este código para adicionar HTTPS ao servidor.
Isso está funcionando bem em minha máquina local e no servidor em que eu implantei isso. O que eu tenho no servidor foi comprado do goDaddy, mas o localhost tinha um certificado autoassinado.
No entanto, todo navegador gerou um erro dizendo que a conexão não é confiável. Deseja continuar. Depois de clicar em continuar, funcionou bem.
Se alguém já contornou esse erro com certificado autoassinado, informe-o.
fonte
openssl genrsa -out key.pem 2048
para uma chave melhor.Como gerar um certificado SSL para localhost: link
você precisa digitar uma senha aqui e digitar novamente nas etapas a seguir
quando perguntado "Nome comum", digite: localhost
fonte
cp server.crt /usr/local/share/ca-certificates/.
e execute Assudo update-ca-certificates
solicitações https do host local funcionam no NodeJS 8+. Id também aumentar1024 to 2048
Aqui está o que está funcionando para mim
no windows
1) Adicione isso ao seu arquivo% WINDIR% \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net (o navegador causa problemas com 'localhost' (para scripts de origem cruzada)
O Windows Vista e o Windows 7 O Vista e o Windows 7 usam o Controle de Conta de Usuário (UAC), portanto o Bloco de Notas deve ser executado como Administrador.
Clique em Iniciar -> Todos os Programas -> Acessórios
Clique com o botão direito do mouse em Bloco de notas e selecione Executar como administrador
Clique em Continuar na janela do UAC "O Windows precisa de sua permissão".
Quando o Bloco de notas abrir, clique em Arquivo -> Abrir
No campo nome do arquivo, digite C: \ Windows \ System32 \ Drivers \ etc \ hosts
Clique em Abrir
Adicione isso ao seu arquivo% WINDIR% \ System32 \ drivers \ etc \ hosts: 127.0.0.1 localdev.YOURSITE.net
Salve
Feche e reinicie os navegadores
No Mac ou Linux:
su
permissão127.0.0.1 localdev.YOURSITE.net
Ao desenvolver, use localdev.YOURSITE.net em vez de localhost; portanto, se você estiver usando configurações de execução / depuração em seu ide, certifique-se de atualizá-lo.
Use ".YOURSITE.net" como domínio de culinária (com um ponto no início) ao criar o ambiente de cozinha; ele deverá funcionar com todos os subdomínios.
2) crie o certificado usando esse localdev.url
DICA: Se você tiver problemas para gerar certificados no Windows, use uma máquina VirtualBox ou Vmware.
3) importe o certificado conforme descrito em http://www.charlesproxy.com/documentation/using-charles/ssl-certificates/
fonte
Mkcert de @FiloSottile torna este processo infinitamente mais simples:
mkcert -install
criar uma autoridade de certificação localmkcert localhost 127.0.0.1 ::1
criar um certificado confiável para localhost no diretório atualexport NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"
Configuração básica do nó:
fonte
Se você usa o OSX / Chrome, pode adicionar o certificado SSL autoassinado ao chaveiro do sistema, conforme explicado aqui: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and -self-assinado-ssl-certificados
É um processo manual, mas finalmente consegui. Apenas verifique se o Nome Comum (CN) está definido como "localhost" (sem a porta) e após a adição do certificado, verifique se todas as opções de Confiança no certificado estão definidas como "Sempre Confie". Além disso, certifique-se de adicioná-lo ao chaveiro "Sistema" e não ao chaveiro "login".
fonte
Se você estiver usando o nó, por que não gerá-los com o nó? Este módulo parece ser bastante completo:
Observe que eu não geraria em tempo real. Gere com algum tipo de script de construção para ter um certificado e uma chave consistentes. Caso contrário, você precisará autorizar o certificado autoassinado recém-gerado todas as vezes.
fonte
Algumas das respostas postadas têm partes que foram muito úteis para eu superar esse problema também. No entanto, eu também estava interessado no número mínimo de etapas e, idealmente, evitando o OpenSSL (no Windows 10).
Portanto, uma parte crítica das respostas (crédito: @ TroyWorks ) é que você precisa editar seu arquivo HOSTS para criar um servidor fictício e mapeá-lo para 127.0.0.1. Isso pressupõe que você fará desenvolvimento local.
No meu caso, eu estava usando o certificado SS para proteger um soquete da Web no NodeJS, e esse soquete estava sendo conectado programaticamente (ao contrário do navegador). Então, para mim, era fundamental que o certificado fosse aceito sem avisos ou erros, e a parte crítica que havia para obter o certificado criado com uma CN adequada (e, é claro, aceitá-lo nas Autoridades de Confiança, conforme descrito em outras partes das respostas) . O uso do IIS para criar um certificado autoassinado não criará o CN adequado, então eu descobri o seguinte comando simples usando o Powershell:
Isso precisa ser executado no console PS Admin, mas simplesmente funciona e coloca o certificado na seção "Pessoal" do armazenamento de certificados LocalMachine. Você pode verificar se ele foi criado executando:
Para confiar, basta copiar e colar em "Autoridades de certificação raiz confiáveis" usando o Gerenciador de certificados (verifique se você está olhando para os certificados da máquina local, não para o usuário atual!).
Se você se vincular a este certificado no IIS, poderá acessar https://gandalf.dummy.dev/ e obter uma conexão segura sem nenhum aviso.
A parte final, usando isso no NodeJS, é descrita acima e em outras respostas do SO, portanto, apenas adicionarei isso no Windows, é mais fácil trabalhar com um arquivo pfx que combina o certificado e a chave privada. Você pode exportar um pfx facilmente do Gerenciador de certificados, mas isso afeta como você o usa no NodeJS. Ao instanciar um servidor usando o módulo 'https', as opções que você usaria (em vez de 'key' e 'cert') seriam 'pfx' e 'passphrase', como em:
fonte
no windows, confiei no certificado de desenvolvimento do iis usando o MMC (iniciar> executar> mmc) e, em seguida, adicione o snap-in do certificado, escolhendo "computador local" e aceitando os padrões. Depois que o snap-in do certificado for adicionado, expanda a árvore de certificados do computador local para procurar em Pessoal, selecione o certificado do host local, clique com o botão direito do mouse em> todas as tarefas> exportar. aceite todos os padrões no assistente de exportação.
Depois que o arquivo for salvo, expanda certificados confiáveis e comece a importar o certificado que você acabou de exportar.
https://localhost
agora é confiável no chrome sem avisos de segurança.Eu usei este guia de resolução 2 do blog do MSDN, o op também compartilhou um link em sua pergunta sobre o que também deveria usar o MMC, mas isso funcionou para mim. resolução # 2
fonte
Vamos para:
chrome://flags/
Habilitar: permite certificados inválidos para recursos carregados do host local.
Você não tem a segurança verde, mas sempre tem permissão para https: // localhost no chrome.
fonte
Existem mais aspectos nisso.
Você pode obter o TLS (alguns continuam dizendo SSL) com um certificado, autoassinado ou não.
Para ter uma barra verde para um certificado autoassinado, você também precisa se tornar a Autoridade de Certificação (CA). Esse aspecto está ausente na maioria dos recursos que encontrei na minha jornada para alcançar a barra verde na minha configuração de desenvolvimento local. Tornar-se uma CA é tão fácil quanto criar um certificado.
Este recurso abrange a criação do certificado da CA e do servidor e resultou em minha instalação mostrando uma barra verde no host local Chrome, Firefox e Edge: https://ram.k0a1a.net/self-signed_https_cert_after_chrome_58
Observe: no Chrome, você precisa adicionar o certificado da CA às suas autoridades confiáveis.
fonte
Se você precisar ir além das etapas detalhadas da @ alon e também criar um ca autoassinado:
package.json
Usando o localhost.cnf conforme descrito:
fonte