Emplacement de l'ensemble de certificats CA par défaut

18

Je dois ajouter un fichier de certificat .pem à mon ensemble de certificats CA par défaut, mais je ne sais pas où le groupe de certificats CA par défaut est conservé.

J'ai besoin d'ajouter mon nouveau fichier .pem à ce bundle par défaut. Je préfère faire cela plutôt que de spécifier mon propre emplacement en utilisant --capath

cURL sait clairement où chercher, mais je ne vois aucune commande cURL qui révèle l'emplacement. Existe-t-il une commande qui révélera cet emplacement? Comment le trouver?

Selon cURL:
ajoutez le certificat CA de votre serveur à l'ensemble de certificats CA par défaut existant. Le chemin par défaut du bundle CA utilisé peut être modifié en exécutant configure avec l'option --with-ca-bundle indiquant le chemin de votre choix.

Merci

Slinky
la source
Quel système d'exploitation utilisez-vous?
Cristian Ciupitu

Réponses:

20

Courir curlavec stracepourrait vous donner un indice.

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

Beaucoup de sortie, mais juste à la fin je vois:

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

qui est où mes certificats sont stockés.

Flup
la source
2
+1 pour m'avoir montré strace!
Robert Dundon
stracenon disponible sur macOS, apparemment. L '"équivalent" dtrussm'a dit "dtrace: n'a pas réussi à initialiser dtrace: DTrace nécessite des privilèges supplémentaires". Je l'ai donc utilisé sudoavec. A quoi il a répondu "dtrace: échec de l'exécution de curl: dtrace ne peut pas contrôler les exécutables signés avec des droits restreints". Pas très utile.
LS
17

Il devrait y avoir un programme 'curl-config' dans 'bin /' de curl, c'est-à-dire où réside le binaire 'curl'.

./curl-config --ca

donne le chemin d'installation du bundle ca.

Je viens de faire ce qui est curl-config: "Obtenir des informations sur une installation de libcurl" donc je suppose que cela ne sera disponible que si libcurl a été installé, ce qui, je présume, est standard.

lm713
la source
1
J'ai dû installer un paquet sur Ubuntu pour l'exécuter (vous verrez une liste des options disponibles si elle n'est pas installée), mais l'utilisation de cette commande m'a conduit au bon endroit!
Robert Dundon
2
Le curl-configprogramme n'est pas disponible avec toutes les versions du programme ou des installations. Par exemple, certains administrateurs peuvent ne pas comprendre le but du programme et ne pas l'installer car ils pensent que ce n'est qu'un outil de configuration de build. De plus, si l'utilisateur qui a besoin du programme n'est pas l'administrateur d'un système, il ne peut pas l'installer. J'ai accès à deux systèmes, l'un n'a pas ce programme, l'autre ne donne aucune sortie pour curl-config --ca.
LS
Je préfère cette réponse à celle acceptée - utiliser stracepour trouver des informations de configuration ne devrait pas être nécessaire.
Ken Williams
7

J'ai trouvé un moyen simple: utilisez le --cacertavec un nom de fichier incorrect , la sortie affichera le chemin.

Exemple:

~$ 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
la source
Je pensais que cela ressemblait à une bonne solution. Cependant, curl m'a donné l'erreur "77", mais pas les informations supplémentaires.
LS
@LS essayez d'ajouter un drapeau détaillé: -v ou --verbose
Chananel P
2

Linux (Ubuntu, Debian)

Copiez votre autorité de certification dans dir / usr / local / share / ca-certificats /

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

Mettre à jour le magasin CA

sudo update-ca-certificates

Supprimez votre CA et mettez à jour le magasin de CA:

sudo update-ca-certificates --fresh

Linux (CentOs 6)

Installez le paquet ca-certificats:

yum install ca-certificates

Activez la fonctionnalité de configuration dynamique de l'AC: update-ca-trust force-enable Ajoutez-le en tant que nouveau fichier à /etc/pki/ca-trust/source/anchors/:

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

Linux (CentOs 5)

Ajoutez votre certificat de confiance au fichier /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 très joli lien, qui explique, comment l'ajouter à plusieurs systèmes d'exploitation populaires.

BiG_NoBoDy
la source
Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Gerald Schneider
@GeraldSchneider> vous commentez lu et actionné;)
BiG_NoBoDy
1

vous pouvez télécharger le pack de certificats racine CA à partir de haxx.se qui sont les créateurs de curl. puis ajoutez simplement votre certificat dans leur .pem et faites-y référence lorsque vous utilisez curl avec l'option --cacert

Iammyr
la source
1

-v avec https dans l'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
la source
Nan. Cela ne m'a rien montré de tel. En fait, j'ai comparé la sortie de cela avec une autre exécution en ajoutant l' -koption pour voir s'il y a une différence. Il n'y avait aucune différence.
LS
@LS avez-vous https dans votre URL?
Philip Rego
0

L'emplacement par défaut du bundle CA dépend du système d'exploitation. Sur RHEL5, il se trouve dans /etc/pki/tls/certs/ca-bundle.pem. Sur d'autres versions de systèmes d'exploitation Linux ou non Linux, il peut se trouver dans un emplacement différent.

John
la source
Donc je suppose que je cherche juste ce fichier alors ...
Slinky
2
Une autre idée: # strings /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1