Seguiu o que parece ser o procedimento padrão para adicionar um certificado à confiança do Linux e parece adicionar o certificado:
$ sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt`
$ sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
No entanto curl
, wget
recuse-se a conectar-se a um servidor com esse certificado, com estes erros:
verify error: Unable to get local issuer certificate
Unable to locally verify the issuer's authority
(Ele se conecta se a verificação estiver desativada com curl -k
, mas isso não é uma solução.)
O próprio certificado foi criado usando este comando e é usado para habilitar o SSL em uma instância local do Gitlab (nginx):
$ openssl req -x509 -days 365 -newkey rsa:1024 -keyout bar.pem -nodes -out foo.crt -config openssl_conf
onde openssl_conf
está:
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = XX
ST = XX
L = XXX
O = XXXX
OU = XXXX
CN = ...
[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
IP.1 = XX.XX.X.X
O problema parecia estar no arquivo de configuração openssl para geração de cert (parece que não foi suficientemente preenchido). Os certificados criados com este novo arquivo de configuração foram adicionados com sucesso ao armazenamento confiável com
update-ca-certificates
. Com base neste post , parece que a linha chave aqui ébasicConstraints = CA:true
.(Mesmo comando de geração de cert)
$ openssl req -x509 -days 365 -newkey rsa:1024 -keyout bar.pem -nodes -out foo.crt -config openssl_conf
(Mesmo método para adicionar certificado ao armazenamento confiável)