Listar todos os certificados ssl ca disponíveis

35

Meu cliente git reivindica

error: Peer's Certificate issuer is not recognized.

Isso significa que não é possível encontrar a chave do servidor ssl correspondente no conjunto de chaves do sistema global. Eu quero verificar isso olhando para a lista de todas as chaves ssl disponíveis em todo o sistema em um sistema gentoo linux. Como posso obter esta lista?

Jonas Stein
fonte

Respostas:

65

Não são as chaves SSL que você deseja, são as autoridades de certificação e, mais precisamente, os respectivos certificados.

Você poderia tentar:

awk -v cmd='openssl x509 -noout -subject' '
    /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt

Para obter o "assunto" de cada certificado CA em /etc/ssl/certs/ca-certificates.crt

Cuidado, às vezes, você recebe esse erro quando os servidores SSL esquecem de fornecer os certificados intermediários.

Use openssl s_client -showcerts -connect the-git-server:443para obter a lista de certificados enviados.

Stéphane Chazelas
fonte
2
//, isso não funciona no CEntOS 6, mas eu adicionei uma resposta para o CEntOS 6 aqui: unix.stackexchange.com/a/363309/48498
Nathan Basanese
11
A lista de trust listpartir pacote p11-kit é essencialmente o mesmo?
Pablo A
15

Não tenho certeza sobre o Gentoo, mas a maioria das distros coloca seus certificados em links diretos em todo o sistema em /etc/ssl/certs.

  • Os arquivos principais entram em /etc/ssl/private
  • Os arquivos reais fornecidos pelo sistema estão localizados em /usr/share/ca-certificates
  • Certificados personalizados entram em /usr/local/share/ca-certificates

Sempre que você colocar um certificado em um dos caminhos mencionados acima, execute update-ca-certificatesa atualização de /etc/ssl/certslistas.

SHW
fonte
11
/etc/ssl/certsé a pasta correta no gentoo. Mas os arquivos não são fáceis de ler para os olhos humanos.
Jonas Stein
3
É update-ca-certificatescom um adicional s(não é possível editar isso sozinho, pois é apenas uma edição de um caractere).
Slaven Rezic
@SlavenRezic - Alguém consertou.
Craig S. Anderson
3

Eu tinha o requisito de listar todos os certificados em nosso servidor e notificar se eles devem expirar. Criamos este comando:

locate .pem | grep "\.pem$" | xargs -I{} openssl x509 -issuer -enddate -noout -in {}
Dwight Emmons
fonte