Encontrei este artigo e é isso que usei para gerar o certificado CA:
openssl genrsa -des3 -out myCA.key 2048
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem
Eu o chamo de "MyCert"
E usei-o para assinar o certificado que gerei para localhost (foi a saída do ChatGPT)
$ openssl req -newkey rsa:2048 -nodes -keyout localhost.key -out localhost.csr
$ openssl x509 -req -in localhost.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out localhost.crt -days 365 -sha256
Adicionei o certificado CA ao sistema (eu uso o Fedora):
sudo cp myCA.pem /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust extract
Reiniciei o servidor e quando acessohttps://localhost
Recebi este erro:
NET::ERR_CERT_COMMON_NAME_INVALID
Subject: localhost
Issuer: MyCert
O que eu fiz de errado? Eu uso campos padrão para o certificado CA:
CN = MyCert
O = Default Company Ltd
L = Default City
C = pl
e o certificado localhost possuem esses campos:
CN = localhost
C = pl
Como criar corretamente o certificado CA e assinar o certificado para Apache no Fedora?
Isso funcionou para mim:
CN=localhost
também estamos definindosubjectAlternativeName
forlocalhost
, porque:(Observe que a descontinuação do commonName para identificar hosts ocorreu há 24 anos .)
-copy_extensions copy
para copiarmos asubjectAlternativeName
solicitação para o certificado.Estou testando o certificado configurando um servidor simples habilitado para TLS usando caddy . Eu começo com isso
Caddyfile
:E então:
E agora podemos ver que
curl
confia no certificado:Se eu remover o certificado CA do armazenamento confiável:
Então veremos que
curl
falha: