Eu criei um certificado SSL autoassinado para o CN do host local. O Firefox aceita esse certificado depois de reclamar inicialmente, como esperado. O Chrome e o IE, no entanto, se recusam a aceitá-lo, mesmo após adicionar o certificado ao armazenamento de certificados do sistema em Raízes Confiáveis. Embora o certificado esteja listado como instalado corretamente quando clico em "Exibir informações do certificado" no pop-up HTTPS do Chrome, ele ainda insiste que o certificado não é confiável.
O que devo fazer para que o Chrome aceite o certificado e pare de reclamar?
google-chrome
ssl
certificate
self-signed
pjohansson
fonte
fonte
net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM
.Respostas:
22-05 2020 : Com apenas 6 comandos de shell , você pode fazer isso.
Por favor , não altere as configurações de segurança do navegador.
Com o código a seguir, você pode (1) se tornar sua própria CA, (2) e assinar seu certificado SSL como uma CA. (3) Importe o certificado da CA (não o certificado SSL, que entra no seu servidor) para o Chrome / Chromium. (Sim, isso funciona mesmo no Linux.)
Para recapitular:
myCA.pem
como uma autoridade nas configurações do Chrome (Configurações> Gerenciar certificados> Autoridades> Importar).crt
arquivo no seu servidorEtapas extras (para Mac, pelo menos):
extendedKeyUsage=serverAuth,clientAuth
abaixobasicConstraints=CA:FALSE
e certifique-se de definir o "CommonName" como o mesmo que$NAME
quando estiver solicitando a instalaçãoVocê pode conferir seu trabalho
fonte
-days 825
vez de-days 1825
devido a superuser.com/questions/1492643/… , e vale a pena notar que para importar o certificado raiz para o Key Chain Access, você não precisa apenas "Arquivo > Importar arquivo ", mas também para encontrá-lo na lista, clique com o botão direito do mouse, expanda"> Confiar "e selecione" Sempre ".Por
localhost
apenas:Basta colar no seu chrome:
Você deverá ver o texto destacado dizendo: Permitir certificados inválidos para recursos carregados do host local
Clique em
Enable
.fonte
Isso funcionou para mim:
Chrome Settings > Show advanced settings > HTTPS/SSL > Manage Certificates
.Authorities
guia e role para baixo para encontrar seu certificado sob o Nome da organização que você forneceu ao certificado.Você deve obter o belo cadeado verde em suas páginas agora.
EDIT: Tentei novamente em uma nova máquina e o certificado não apareceu na janela Gerenciar certificados apenas continuando na página vermelha do certificado não confiável. Eu tive que fazer o seguinte:
https://
riscado em vermelho), clique no cadeado> Informações do certificado. NOTA: nas versões mais recentes do chrome, é necessário abrirDeveloper Tools > Security
e selecionarView certificate
.Details tab > Export
. EscolhaPKCS #7, single certificate
como formato de arquivo.Authorities tab > Import
e escolha o arquivo para o qual você exportou o certificado e escolhaPKCS #7, single certificate
o tipo de arquivo .fonte
Export
botão descritivo útil. Parece ter sido substituído pelo maravilhosoCopy to file
botão. Por 'exportação' não foi mantido, a mente só confundeATUALIZAÇÃO PARA CHROME 58+ (LANÇADO 19/04/2017)
No Chrome 58, a capacidade de identificar o host usando apenas
commonName
foi removida . Agora, os certificados devem ser usadossubjectAltName
para identificar seus hosts. Veja mais discussões aqui e rastreador de erros aqui . No passado,subjectAltName
era usado apenas para certificados de vários hosts, portanto algumas ferramentas internas da CA não os incluíam.Se seus certificados autoassinados funcionaram bem no passado, mas de repente começaram a gerar erros no Chrome 58, é por isso.
Portanto, qualquer que seja o método que você esteja usando para gerar seu certificado autoassinado (ou certificado assinado por uma CA autoassinada), verifique se o certificado do servidor contém um
subjectAltName
com as devidasDNS
e / ouIP
entradas / entradas, mesmo que seja apenas para um único host .Para o openssl, isso significa que sua configuração do OpenSSL (
/etc/ssl/openssl.cnf
no Ubuntu) deve ter algo semelhante ao seguinte para um único host:ou para vários hosts:
No visualizador de cert do Chrome (que se mudou para a aba "Segurança" sob F12), você deve vê-lo listado em
Extensions
comoCertificate Subject Alternative Name
:fonte
New-SelfSignedCertificate -DnsName localhost -CertStoreLocation cert:\LocalMachine\My
/etc/opt/chrome/policies/managed/EnableCommonNameFallbackForLocalAnchors.json
com o seguinte conteúdo:{ "EnableCommonNameFallbackForLocalAnchors": true }
Extensions
comoCertificate Subject Alternative Name
". Não vejo nenhuma seção "Extensões" ao abrir a guia Segurança nas ferramentas de desenvolvimento F12 (Chrome 62). Foi movido para outro lugar?No Mac, você pode usar o utilitário Keychain Access para adicionar o certificado autoassinado ao chaveiro do sistema, e o Chrome o aceitará. Encontrei as instruções passo a passo aqui:
Google Chrome, Mac OS X e certificados SSL autoassinados
Basicamente:
fonte
Always Trust
para a seção SSL. Basicamente, o que o @NeDark disse.Clique em qualquer lugar da página e digite um BYPASS_SEQUENCE
"
thisisunsafe
" é um BYPASS_SEQUENCE para Chrome versão 65"
badidea
" Versão Chrome 62 - 64."
danger
" costumava funcionar em versões anteriores do ChromeVocê não precisa procurar pelo campo de entrada, basta digitá-lo. Parece estranho, mas está funcionando.
Eu tentei no Mac High Sierra.
Para verificar novamente se eles foram alterados novamente, vá para o código-fonte mais recente do cromo
Para procurar por BYPASS_SEQUENCE, no momento, é assim:
Agora eles estão camuflados, mas para ver o BYPASS_SEQUENCE real, você pode executar a seguinte linha em um console do navegador.
fonte
thisisunsafe
thisisunsafe
parece ter o efeito de adicionar este site às exceções. (A barra de endereço ainda diz "Não seguro" em vermelho.) #Linux
Se você estiver usando Linux, também poderá seguir estas páginas wiki oficiais:
Basicamente:
Agora, o seguinte comando adicionará o certificado (onde YOUR_FILE é seu arquivo exportado):
Para listar todos os seus certificados, execute o seguinte comando:
Se ainda assim não funcionar, você pode ser afetado por este bug: Problema 55050: Erro SSL do Ubuntu 8179
PS Por favor, verifique também se você possui
libnss3-tools
, antes de poder usar os comandos acima.Se você não possui, instale-o:
Como bônus, você pode usar os seguintes scripts úteis:
Uso:
Solução de problemas
Execute o Chrome com o
--auto-ssl-client-auth
parâmetrogoogle-chrome --auto-ssl-client-auth
fonte
download_cert.sh
pode ser simplesmente o seguinte:echo | openssl s_client -connect $1:443
No Mac, você pode criar um certificado totalmente confiável para o Chrome e o Safari no nível do sistema, fazendo o seguinte:
O exemplo acima usa os seguintes scripts e um arquivo de suporte
v3.ext
para evitar erros ausentes no nome do assunto alternativoSe você deseja criar um novo certificado autoassinado totalmente confiável usando sua própria autoridade root, você pode fazê-lo usando esses scripts.
create_root_cert_and_key.sh
create_certificate_for_domain.sh
v3.ext
Mais uma etapa - Como tornar os certificados autoassinados totalmente confiáveis no Chrome / Safari
Para permitir que os certificados autoassinados sejam TOTALMENTE confiáveis no Chrome e Safari, você precisa importar uma nova autoridade de certificação para o seu Mac. Para fazer isso, siga estas instruções ou as instruções mais detalhadas sobre esse processo geral no site mitmproxy :
Você pode fazer isso de duas maneiras, na linha de comando, usando este comando que solicitará sua senha:
ou usando o
Keychain Access
aplicativo:e como bônus, se você precisar que os clientes java confiem nos certificados, poderá fazê-lo importando seus certificados para o keystore java. Observe que isso removerá o certificado do keystore, se ele já existir, pois será necessário atualizá-lo caso as coisas mudem. Obviamente, isso é feito apenas para os certificados sendo importados.
import_certs_in_current_folder_into_java_keystore.sh
fonte
$ ./create_root_cert_and_key.sh
. macOS 10.12.4 e OpenSSL 0.9.8zh 14 de janeiro de 2016.$ openssl genrsa -out rootCA.key 2048
anterior$ ./create_root_cert_and_key.sh
corrige o erro "Erro ao abrir a chave privada rootCA.key".openssl req -new -newkey rsa:2048 -sha256 -nodes -key device.key -subj "$SUBJECT" -out device.csr
é me dando o erro "Erro ao abrir chave privada device.key" Eu pensei que este comando era suposto para criardevice.key
, mas parece estar a tentar lê-lo por algum motivo-key
para-keyout
...openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout device.key -subj "$SUBJECT" -out device.csr
No site que você deseja adicionar, clique com o botão direito do mouse no ícone de cadeado vermelho na barra de endereço:
Clique na guia Conexão e , em seguida, clique em Informações do certificado
Clique no Detalhes guia, o clique no botão Copiar para Arquivo ... . Isso abrirá o Assistente para Exportação de Certificados, clique em Avançar para acessar a tela Formato do arquivo de exportação .
Escolha X.509 binário codificado por DER (.CER) , clique em Avançar
Clique em Procurar ... e salve o arquivo no seu computador. Dê um nome descritivo. Clique em Avançar e clique em Concluir .
Abra as configurações do Chrome, role para a parte inferior e clique em Mostrar configurações avançadas ...
Em HTTPS / SSL , clique em Gerenciar certificados ...
Clique na Certificação Autoridades Raiz Confiáveis guia, em seguida, clique no Import ... botão. Isso abre o Assistente para importação de certificados. Clique em Avançar para acessar a tela Arquivo a ser importado .
Clique em Procurar ... e selecione o arquivo de certificado que você salvou anteriormente e clique em Avançar .
Selecione Colocar todos os certificados na seguinte loja . O armazenamento selecionado deve ser Autoridades de Certificação Raiz Confiáveis . Caso contrário, clique em Procurar ... e selecione-o. Clique em Avançar e em Concluir
Clique em Sim no aviso de segurança.
Reinicie o Chrome.
fonte
certmgr.msc
para adicionar e excluir certs.Se você estiver em um Mac e não estiver vendo a guia de exportação ou como obter o certificado, isso funcionou para mim:
Clique em "Informações do certificado"
Agora você deve ver isso:
Arraste esse pequeno ícone de certificado na área de trabalho (ou em qualquer lugar).
Clique duas vezes no arquivo .cer que foi baixado. Isso deve importá-lo para o seu chaveiro e abrir o Acesso ao chaveiro à sua lista de certificados.
Em alguns casos, isso é suficiente e agora você pode atualizar a página.
De outra forma:
Agora recarregue a página em questão e ela deverá ser resolvida! Espero que isto ajude.
Editar a partir de Wolph
Para facilitar um pouco, você pode usar o seguinte script ( fonte ):
Salve o seguinte script como
whitelist_ssl_certificate.ssh
:Torne o script executável (a partir do shell):
Execute o script para o domínio que você deseja (simplesmente copie / cole os trabalhos completos do URL):
fonte
ATUALIZADO 23 de abril de 2020
Recomendado pela equipe Chromium
https://www.chromium.org/Home/chromium-security/deprecating-powerful-features-on-insecure-origins#TOC-Testing-Powerful-Features
Solução rápida e super fácil
Existe uma frase secreta de desvio que pode ser digitada na página de erro para que o Chrome continue apesar do erro de segurança: thisisunsafe (em versões anteriores do Chrome, digite badidea e, ainda mais, perigo ). DO NOT USE isto a menos que você entenda exatamente porque você precisa dele!
Fonte:
https://chromium.googlesource.com/chromium/src/+/d8fc089b62cd4f8d907acff6fb3f5ff58f168697%5E%21/
(NOTA que
window.atob('dGhpc2lzdW5zYWZl')
resolve parathisisunsafe
)A versão mais recente da fonte é @ https://chromium.googlesource.com/chromium/src/+/refs/heads/master/components/security_interstitials/core/browser/resources/interstitial_large.js e o
window.atob
função pode ser executada em um console JS.Para saber como a equipe do Chrome alterou a frase de desvio (a primeira vez):
https://bugs.chromium.org/p/chromium/issues/detail?id=581189
Se tudo mais falhar (Solução 1)
Para pontuais rápidos, se a opção "Prosseguir de qualquer maneira" não estiver disponível, nem a frase de desvio estiver funcionando, esse hack funcionará bem:
Para permitir erros de certificado
localhost
, ative esse sinalizador (observe que o Chrome precisa ser reiniciado após alterar o valor do sinalizador):chrome://flags/#allow-insecure-localhost
(e resposta à votação https://stackoverflow.com/a/31900210/430128 por @Chris)
Se o site ao qual você deseja se conectar for
localhost
, você está pronto. Caso contrário, configure um túnel TCP para escutar na porta 8090 localmente e conecte-se àbroken-remote-site.com
porta 443, verifique se vocêsocat
instalou e execute algo parecido com isto em uma janela de terminal:socat tcp-listen:8090,reuseaddr,fork tcp:broken-remote-site.com:443
Vá para https: // localhost: 8090 no seu navegador.
Se tudo mais falhar (Solução 2)
Semelhante a "Se tudo mais falhar (Solução 1)", aqui configuramos um proxy para o nosso serviço local usando o ngrok . Como você pode acessar os túneis ngrok http via TLS (nesse caso, é encerrado pelo ngrok com um certificado válido) ou por um nó de extremidade não TLS, o navegador não se queixará de certificados inválidos.
Baixe e instale o ngrok e exponha-o através de
ngrok.io
:O ngrok será iniciado e fornecerá um nome de host ao qual você pode se conectar, e todos os pedidos serão encaminhados para a sua máquina local.
fonte
Para um ambiente de teste
Você pode usar
--ignore-certificate-errors
como um parâmetro de linha de comando ao iniciar o chrome (Trabalhando na versão 28.0.1500.52 no Ubuntu).Isso fará com que ele ignore os erros e se conecte sem aviso. Se você já possui uma versão do chrome em execução, será necessário fechá-la antes de reiniciar a partir da linha de comando ou abrirá uma nova janela, mas ignore os parâmetros.
Eu configuro o Intellij para iniciar o chrome dessa maneira ao fazer a depuração, pois os servidores de teste nunca possuem certificados válidos.
Eu não recomendaria uma navegação normal como essa, pois as verificações de certificado são um importante recurso de segurança, mas isso pode ser útil para alguns.
fonte
Como alguém observou, você precisa reiniciar TODO o Chrome, não apenas as janelas do navegador. A maneira mais rápida de fazer isso é abrir uma guia para ...
chrome://restart
fonte
WINDOWS JUN / 2017 Windows Server 2012
Eu segui a resposta de @Brad Parks. No Windows, você deve importar o rootCA.pem no repositório de autoridades de certificados raiz confiáveis.
Eu fiz os seguintes passos:
Onde v3.ext é:
Então, no meu caso, eu tenho um aplicativo Web auto-hospedado, por isso preciso vincular o certificado ao endereço IP e à porta, o certificado deve estar em MINHA loja com informações de chave privada, então eu exportei para o formato pfx.
Com o console mmc (Arquivo / Adicionar ou Remover Snap-ins / Certificados / Adicionar / Conta Computert / LocalComputer / OK), importei o arquivo pfx no Personal store.
Mais tarde, usei este comando para ligar o certificado (você também pode usar a ferramenta HttpConfig):
certhash = Certificado Thumprint
appid = GUID (sua escolha)
Primeiro, tentei importar o certificado "device.crt" nas autoridades de certificados raiz confiáveis de maneiras diferentes, mas ainda estou recebendo o mesmo erro:
Mas percebi que deveria importar certificado de autoridade root e não certificado para domínio. Portanto, usei o console mmc (Arquivo / Adicionar ou remover snap-ins / Certificados / Adicionar / conta de computador / LocalComputer / OK). Importei o rootCA.pem no armazenamento de autoridades de certificados raiz confiáveis.
Reinicie o Chrome e pronto, ele funciona.
Com localhost:
Ou com endereço IP:
A única coisa que não consegui é que ela tenha uma cifra obsoleta (quadrado vermelho na foto). A ajuda é apreciada neste ponto.
Com o makecert, não é possível adicionar informações da SAN. Com o New-SelfSignedCertificate (Powershell), você pode adicionar informações da SAN, mas também funciona.
fonte
netsh http
etapa, a menos que use o servidor Windows. Também não acho necessário exportar o arquivo cert para pfx.Adicione o certificado da CA no CA Store raiz confiável.
Acesse o chrome e ative esta sinalização!
chrome://flags/#allow-insecure-localhost
Por fim, basta usar o domínio * .me ou qualquer domínio válido como * .com e * .net e mantê-los no arquivo host. Para meus desenvolvedores locais, uso * .me ou * .com com um arquivo host mantido da seguinte maneira:
Adicionar ao host. C: / windows / system32 / drivers / etc / hosts
127.0.0.1 nextwebapp.me
Nota: Se o navegador já estiver aberto ao fazer isso, o erro continuará sendo exibido. Portanto, feche o navegador e comece novamente. Melhor ainda, entre no modo anônimo ou inicie uma nova sessão para efeito imediato.
fonte
Tem certeza de que o endereço em que o site está sendo exibido é o mesmo que o certificado? Eu tive os mesmos problemas com o Chrome e um certificado autoassinado, mas no final, achei incrivelmente exigente a validação do nome de domínio no certificado (como deveria ser).
O Chrome não possui sua própria loja de certificados e usa a própria janela. No entanto, o Chrome não oferece nenhuma maneira de importar certificados para a loja, portanto você deve adicioná-los via IE.
Instalando certificados no Google Chrome
Instalando certificados no Internet Explorer
Veja também algumas abordagens diferentes para criar certificados autoassinados (presumo que você esteja usando o IIS como não mencionou).
Como criar um certificado autoassinado no IIS 7
fonte
Eu segui o processo de usar o que o bjnord sugeriu: Google Chrome, Mac OS X e certificados SSL autoassinados
O que é mostrado no blog não funcionou.
No entanto, um dos comentários ao blog foi de ouro:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain site.crt
Você precisará seguir o blog sobre como obter o arquivo cert; depois disso, você pode usar o comando acima e deve estar pronto.
fonte
A GUI para gerenciar certificados SSL no Chromium no Linux NÃO funcionou corretamente para mim. No entanto, seus documentos deram a resposta certa. O truque era executar o comando abaixo que importa o certificado SSL autoassinado. Atualize o nome do
<certificate-nickname>
ecertificate-filename.cer
, em seguida, reinicie o chromium / chrome.Dos documentos:
Trecho de: https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux_cert_management.md
fonte
Filippo Valsorda escreveu uma ferramenta multiplataforma
mkcert
, para fazer isso em muitas lojas de confiança. Presumo que ele tenha escrito pelo mesmo motivo que há tantas respostas para essa pergunta: é difícil fazer a coisa "certa" para os certificados SubjectAltName assinados por uma CA raiz confiável.mkcert
está incluído nos principais sistemas de gerenciamento de pacotes para Windows, macOS e vários tipos de Linux.fonte
Ao clicar no ícone de cadeado riscado ao lado do URL, você verá uma caixa assim:
Depois de clicar no link Informações do certificado , você verá a seguinte caixa de diálogo:
Ele informa qual armazenamento de certificados é o correto, é o armazenamento de Autoridades de Certificação Raiz Confiáveis .
Você pode usar um dos métodos descritos nas outras respostas para adicionar o certificado a esse armazenamento ou usar:
ROOT
é o nome interno do armazenamento de certificados mencionado anteriormente.cert.pem
é o nome do seu certificado autoassinado.fonte
certutil -addstore -user "ROOT" cert.pem
é o Windows?Trusted Root Certification Authorities
, mas ainda questão continua: imgur.com/a/mjlglVz imgur.com/a/n8BFH5S Windows 10, cromo 78Isso funcionou para mim. Consulte: http://www.robpeck.com/2010/10/google-chrome-mac-os-x-and-self-signed-ssl-certificates/#.Vcy8_ZNVhBc
Na barra de endereço, clique no pequeno cadeado com o X. Isso exibirá uma pequena tela de informações. Clique no botão que diz "Informações do certificado".
Clique e arraste a imagem para a área de trabalho. Parece um pequeno certificado.
Clique duas vezes nele. Isso exibirá o utilitário Keychain Access. Digite sua senha para desbloqueá-la.
Certifique-se de adicionar o certificado ao chaveiro do sistema, não ao chaveiro de login. Clique em "Sempre confie", mesmo que isso pareça não fazer nada.
Depois de adicionado, clique duas vezes nele. Talvez você precise se autenticar novamente.
Expanda a seção "Confiança".
"Ao usar este certificado", defina como "Sempre confie"
fonte
Tentei de tudo e o que fez funcionar: Ao importar, selecione a categoria correta, a saber, Autoridades de Certificação Raiz Confiáveis :
(desculpe, é alemão, mas siga a imagem)
fonte
fonte
Esta postagem já está repleta de respostas, mas eu criei um script bash com base em algumas das outras respostas para facilitar a geração de um certificado TLS autoassinado válido no Chrome (Testado em
Chrome 65.x
). Espero que seja útil para os outros.Depois de instalar ( e confiar ) no certificado, não se esqueça de reiniciar o Chrome (
chrome://restart
)Outra ferramenta que vale a pena conferir é o
cfssl
kit de ferramentas do CloudFlare :fonte
Para criar um certificado autoassinado no Windows em que o Chrome v58 e versões posteriores confiarão, inicie o Powershell com privilégios elevados e digite:
Depois que você fizer isso, o certificado será salvo nos certificados do Computador Local, em Personal \ Certificates repositório .
Você deseja copiar este certificado no armazenamento Autoridades de Certificação Raiz Confiáveis \ Certificados .
Uma maneira de fazer isso: clique no botão Iniciar do Windows e digite
certlm.msc
. Em seguida, arraste e solte o certificado recém-criado no armazenamento Autoridades de Certificação Raiz Confiáveis \ Certificados , conforme a captura de tela abaixo.fonte
Correção de host local SSL / HTTPS no mac / osx:
Clique no cadeado vermelho com a cruz na barra de endereço ao tentar abrir seu ambiente https localhost. Irá abrir uma janela com algumas informações sobre o certificado.
Clique na janela de informações "Detalhes"
Adicione-o ao seu chaveiro 'Sistema' (não ao seu chaveiro de 'login', que é selecionado por padrão).
Abra seu chaveiro (novamente) e encontre o certificado. Clique nele e certifique-se de "Confiar" em todos.
Reinicie o chrome e ele deve funcionar.
fonte
security import filename.pem -k ~/Library/Keychains/login.keychain
. O gráfico dá um erro -25294Eu estava com o mesmo problema: havia instalado o certificado no armazenamento de autoridades raiz confiáveis do Windows e o Chrome ainda recusou o certificado, com o erro
ERR_CERT_COMMON_NAME_INVALID
. Observe que quando o certificado não está instalado corretamente na loja, o erro éERR_CERT_AUTHORITY_INVALID
.Como sugerido pelo nome do erro, esse comentário e essa pergunta , o problema estava no nome de domínio declarado no certificado. Quando solicitado o "Nome comum" ao gerar o certificado, tive que inserir o nome de domínio que estava usando para acessar o site (
localhost
no meu caso). Reiniciei o Chrome usandochrome://restart
e finalmente fiquei feliz com este novo certificado.fonte
--allow-insecure-localhost
A partir do Chrome 58+, comecei a receber um erro de certificado no macOS devido à falta da SAN. Aqui está como obter o bloqueio verde na barra de endereço novamente.
Gere um novo certificado com o seguinte comando:
Importe o
server.crt
para o seu KeyChain, clique duas vezes no certificado, expanda Confiança e selecione Confiar sempreAtualize a página https://domain.dev no Google Chrome, para que a trava verde volte.
fonte
api.domain.dev
mas ainda tenho uma página de aviso emdomain.dev
:This server could not prove that it is domain.dev; its security certificate is from *.domain.dev. This may be caused by a misconfiguration or an attacker intercepting your connection.
Alguma idéia?Para o Chrome no MacOS, se você preparou um certificado:
fonte
Permitir que localhost inseguro funcione bem por meio deste método chrome: // flags / # allow-insecure-localhost
Só que você precisa criar o nome do host de desenvolvimento para xxx.localhost.
fonte