Recentemente, o Chrome parou de funcionar com meus certificados SSL autoassinados e acha que eles são inseguros. Quando eu olho para o certificado na DevTools | Security
guia, posso ver que diz
Nome alternativo do assunto ausente O certificado para este site não contém uma extensão de nome alternativo do assunto contendo um nome de domínio ou endereço IP.
Erro de certificado Há problemas com a cadeia de certificados do site (net :: ERR_CERT_COMMON_NAME_INVALID).
Como posso consertar isso?
google-chrome
ssl
https
pkix
Brad Parks
fonte
fonte
CN=www.example.com
provavelmente está errado. Os nomes de host sempre vão no SAN . Se estiver presente no CN , deve estar presente também no SAN (neste caso, você deve listá-lo duas vezes). Para obter mais regras e motivos, consulte Como você assina a solicitação de assinatura de certificado com sua autoridade de certificação e Como criar um certificado autoassinado com o openssl? Você também precisará colocar o certificado autoassinado no armazenamento confiável apropriado.Respostas:
Para corrigir isso, você precisa fornecer um parâmetro extra ao
openssl
criar o certificado, basicamente-sha256 -extfile v3.ext
onde
v3.ext
está um arquivo como esse, com%%DOMAIN%%
substituído pelo mesmo nome que você usaCommon Name
. Mais informações aqui e aqui . Observe que normalmente você definiria oCommon Name
e%%DOMAIN%%
para o domínio para o qual está tentando gerar um certificado. Então, se fossewww.mysupersite.com
, você usaria para ambos.v3.ext
Nota: Scripts que tratam desse problema e criam certificados SSL totalmente confiáveis para uso no Chrome, Safari e de clientes Java podem ser encontrados aqui
Outra observação : se tudo o que você está tentando fazer é impedir que o Chrome emita erros ao visualizar um certificado autoassinado, você pode dizer ao Chrome para ignorar todos os erros de SSL para TODOS os sites, iniciando-o com uma opção de linha de comando especial, conforme detalhado aqui no SuperUser
fonte
bin\openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365 -sha256 -extfile v3.ext
. Claro que você ainda precisa salvar ov3.ext
arquivo em um arquivo na mesma pasta.unknown option -extfile
. Como faço para corrigir isso?extfile
diretiva no comando openssl errado? Em vez de ser usado emopenssl req -new ...
, é usado emopenssl x509 -req ...
. Pelo menos foi o que alguém aqui disse , o que parece verdadeiro pelo exemplo que tenho em outra resposta a uma pergunta semelhante de como gerar totalmente esses certificadosA solução a seguir funcionou para mim no Chrome 65 ( ref ) -
Crie um arquivo de configuração OpenSSL (exemplo: req.cnf)
Crie o certificado que faz referência a este arquivo de configuração
fonte
basicConstraints = CA:true
faltando aqui ?Bash Script
Criei um script bash para facilitar a geração de certificados TLS autoassinados que são válidos no Chrome.
Testado
Chrome 65.x
e ainda está funcionando. Certifique-se de reiniciar o Chrome após instalar novos certificados.Outros recursos
Outra ferramenta (muito mais robusta) que vale a pena conferir é o
cfssl
kit de ferramentas da CloudFlare :fonte
Eu simplesmente uso o
-subj
parâmetro adicionando o endereço IP das máquinas. Então resolvido com apenas um comando.Você pode adicionar outros atributos como C, ST, L, O, OU, emailAddress para gerar certificados sem ser solicitado.
fonte
openssl.exe req -x509 -sha256 -newkey rsa:2048 -keyout certificate.key -out certificate.crt -days 365 -nodes -subj "/CN=my.domain.com" -addext "subjectAltName=DNS:my.domain.com"
IIS então precisa do*.pfx
formato:openssl.exe pkcs12 -export -out certificate.pfx -inkey certificate.key -in certificate.crt
Tive muitos problemas para obter certificados autoassinados trabalhando em macos / Chrome. Por fim, descobri Mkcert, "Uma ferramenta simples de configuração zero para criar certificados de desenvolvimento confiáveis localmente com os nomes que você desejar." https://github.com/FiloSottile/mkcert
fonte
Faça uma cópia de sua configuração OpenSSL em seu diretório inicial:
ou no Linux:
Adicione o nome alternativo do assunto a
openssl-temp.cnf
, em[v3_ca]
:Substitua
localhost
pelo domínio para o qual você deseja gerar esse certificado.Gerar certificado:
Você pode então deletar
openssl-temp.cnf
fonte
Consegui me livrar de (net :: ERR_CERT_AUTHORITY_INVALID) alterando o valor DNS.1 do arquivo v3.ext
[alt_names] DNS.1 = domainname.com
Altere domainname.com com seu próprio domínio.
fonte
Esta é uma maneira muito simples de criar um certificado IP em que o Chrome confie.
O arquivo ssl.conf ...
Onde, é claro, 192.168.1.10 é o IP da rede local que queremos que o Chrome confie.
Crie o certificado:
No Windows, importe o certificado para o Armazenamento de certificados raiz confiável em todas as máquinas clientes. No telefone ou tablet Android, baixe o certificado para instalá-lo. Agora o Chrome vai confiar no certificado no Windows e no Android.
Na caixa de desenvolvimento do Windows, o melhor lugar para obter o openssl.exe é em "c: \ Arquivos de programas \ Git \ usr \ bin \ openssl.exe"
fonte
no MAC a partir do Chrome Versão 67.0.3396.99 meu certificado autoassinado parou de funcionar.
regeneração com tudo o que está escrito aqui não funcionou.
ATUALIZAR
tive a chance de confirmar que minha abordagem funciona hoje :). Se não funcionar para você, certifique-se de usar esta abordagem
copiado daqui https://ksearch.wordpress.com/2017/08/22/generate-and-import-a-self-signed-ssl-certificate-on-mac-osx-sierra/
END UPDATE
finalmente consegui ver o verde Seguro apenas quando removi meu certificado do sistema e o adicionei ao chaveiro local . (se houver um - largue-o primeiro).Não tenho certeza se isso importa, mas no meu caso eu baixei o certificado via chrome e verifiquei que a data de criação é hoje - então é o que acabei de criar.
espero que seja útil para alguém passar um dia nisso.
nunca atualize o Chrome!
fonte
Se você deseja executar o servidor localhost, é necessário configurar
CN = localhost
eDNS.1 = localhost
.fonte