Local padrão do pacote de certificação da CA

18

Preciso adicionar um arquivo .pem cert ao meu pacote de certificados CA padrão, mas não sei onde o pacote de certificados CA padrão é mantido.

Preciso anexar meu novo arquivo .pem a este pacote padrão. Prefiro fazer isso do que especificar minha própria localização usando --capath

O cURL sabe claramente onde procurar, mas não vejo nenhum comando cURL que revele a localização. Existe um comando que irá revelar este local? Como posso encontrá-lo?

De acordo com cURL:
Adicione o certificado de CA do seu servidor ao pacote configurável de CA padrão existente. O caminho padrão do pacote configurável da CA usado pode ser alterado executando o configure com a opção --with-ca-bundle apontando o caminho de sua escolha.

obrigado

Slinky
fonte
Qual sistema operacional você está usando?
Cristian Ciupitu

Respostas:

20

Correr curlcom stracepode dar uma pista.

strace curl https://www.google.com | & grep aberto

Muita produção, mas logo no final, vejo:

aberto ("/ etc / ssl / certs / 578d5c04.0", O_RDONLY) = 4

que é onde meus certificados são armazenados.

Flup
fonte
2
+1 por me mostrar sobre strace!
Robert Dundon
straceaparentemente não disponível no macOS. O "equivalente" dtrussme disse "dtrace: falha ao inicializar o dtrace: o DTrace requer privilégios adicionais". Então eu usei sudocom isso. Ao qual respondeu "dtrace: falha ao executar curl: o dtrace não pode controlar executáveis ​​assinados com direitos restritos". Não é muito útil.
LS
17

Deve haver um programa 'curl-config' no 'bin /' do curl, ou seja, onde o binário 'curl' reside.

./curl-config --ca

fornece o caminho de instalação do pacote CA.

Acabei de fazer o que é curl-config: "Obter informações sobre uma instalação da libcurl", então acho que só estará disponível se a libcurl estiver instalada, o que eu presumo que seja padrão.

lm713
fonte
11
Eu tive que instalar um pacote no Ubuntu para executá-lo (você verá uma lista de opções disponíveis, se não estiver instalada), mas o uso desse comando me levou ao lugar certo!
Robert Dundon
2
O curl-configprograma não está disponível em todas as versões do programa ou instalações. Por exemplo, alguns administradores podem não entender o objetivo do programa e não instalá-lo porque acham que é apenas uma ferramenta de configuração de compilação. Além disso, se o usuário que precisa do programa não for o administrador de um sistema, ele não poderá instalá-lo. Eu tenho acesso a dois sistemas, um não possui este programa, o outro nãosaída para curl-config --ca.
LS
Prefiro esta resposta à aceita - usar stracepara encontrar informações de configuração não deve ser necessário.
Ken Williams
7

Eu achei uma maneira fácil: use o --cacertcom um nome de arquivo errado , a saída mostrará o caminho.

Exemplo:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs
Chananel P
fonte
Eu pensei que isso parecia uma boa solução. No entanto, curl me deu o erro "77", mas não as informações adicionais.
LS
@LS tente adicionar flag verboso: -v ou --verbose #
Chananel P
2

Linux (Ubuntu, Debian)

Copie sua autoridade de certificação para dir / usr / local / share / ca-certificates /

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

Atualize o armazenamento da CA

sudo update-ca-certificates

Remova sua CA e atualize o armazenamento da CA:

sudo update-ca-certificates --fresh

Linux (CentOs 6)

Instale o pacote ca-certificates:

yum install ca-certificates

Habilite o recurso de configuração dinâmica da CA: update-ca-trust force-enable Adicione-o como um novo arquivo a /etc/pki/ca-trust/source/anchors/:

cp foo.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Linux (CentOs 5)

Anexe seu certificado confiável ao arquivo /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html link muito bom, que explica, como adicioná-lo a vários sistemas operacionais populares.

BiG_NoBoDy
fonte
Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Gerald Schneider
@GeraldSchneider> você comenta como lido e acionou;)
BiG_NoBoDy
1

você pode fazer o download do pacote de certificados raiz da CA do haxx.se, que é o criador do curl. basta anexar seu certificado no arquivo .pem e consultá-lo ao usar curl com a opção --cacert

iammyr
fonte
1

-v com https no URL.

$ curl -v https://google.com
* Rebuilt URL to: https://google.com/
* timeout on name lookup is not supported
*   Trying 172.217.9.174...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to google.com (172.217.9.174) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   *CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt*
Philip Rego
fonte
Não. Não mostrou nada disso para mim. Na verdade, comparei a saída disso com outra execução, adicionando a -kopção para ver se há alguma diferença. Não houve diferença.
LS
@LS você tem https no seu URL?
Philip Rego
0

O local padrão do pacote CA é dependente do SO. No RHEL5, ele está localizado em /etc/pki/tls/certs/ca-bundle.pem. Em outros tipos de sistemas operacionais Linux ou não-linux, ele pode estar em um local diferente.

John
fonte
Então eu acho que basta procurar por esse arquivo, então ...
Slinky
2
Outra idéia: # strings /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1