Tous les navigateurs Web graphiques bien connus sont livrés avec une collection de certificats d'autorité de certification (CA) connus et fiables. Ainsi, lorsque vous visitez un site avec un certificat signé par l'un de ces certificats CA, le navigateur fait également confiance au site. Sinon, le navigateur passe par une série d'avertissements et d'options pour ajouter une exception après vous avoir encouragé à vérifier le certificat. Il existe également des options pour importer des certificats CA supplémentaires, tels que ceux documentés pour Firefox.
Utilisation de certificats CA avec des utilitaires de ligne de commande
Les certificats CA peuvent également être mis à disposition sur la ligne de commande. Un package inclus avec de nombreuses distributions, y compris Red Hat Enterprise Linux et Fedora, est appelé ca-certificates
. Ce package est auto-décrit comme contenant "l'ensemble de certificats CA choisis par la Fondation Mozilla pour une utilisation avec l'ICP Internet". Ce package inclut les mêmes certificats CA bien connus que ceux trouvés dans Firefox. Il peut être utilisé par n'importe quelle application CLI qui regarde directement le /etc/pki/ca-trust/extracted
répertoire, ainsi que les applications CLI qui chargent l'un des modules de confiance PKCS#11.
Utilitaires de ligne de commande tels que curl
et wget
peut utiliser ces certificats CA pour valider les certificats de serveur. De nombreux outils fournis avec Red Hat Enterprise Linux utilisent également ces certificats, y compris pour les interactions avec le support Red Hat (redhat-support-tool
), clusters Red Hat OpenShift (oc
) et les serveurs Red Hat Satellite 6 (hammer
). De nombreuses autres interactions avec les interfaces API du serveur utilisent également SSL/TLS et doivent valider les certificats proposés.
Avec les ca-certificates
package installé, je peux utiliser curl
pour afficher ou télécharger sans erreur le contenu d'une URL à partir d'un site à l'aide d'un certificat signé par une autorité de certification connue :
$ curl https://access.redhat.com -o /tmp/sample
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 103k 0 103k 0 0 339k 0 --:--:-- --:--:-- --:--:-- 337k
Si j'essaie d'accéder à un site interne qui possède un certificat auto-signé (ou un certificat signé par une autorité de certification qui n'est pas inclus avec les ca-certificates
package) je reçois un message indiquant que la connexion a été refusée car le certificat n'est pas fiable :
$ curl https://somehost.internal-FQDN/
curl: (60) SSL certificate problem: self-signed certificate in certificate chain More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
Certaines documentations encouragent une simple connexion non sécurisée pour ces sites internes et de confiance. Curl peut se connecter de manière non sécurisée avec le -k
choix :
$ curl -k https://somehost.internal-FQDN/
Ou, si j'ai vérifié et téléchargé mon certificat CA interne, je peux dire curl
pour vérifier le site avec ce certificat :
$ curl --cacert /path/to/cert-file https://somehost.internal-FQDN/
D'autres programmes sont similaires. Avec l'outil OpenShift et Origin de gestion des applications (oc
), une connexion à un cluster installé par défaut peut ne pas reconnaître le certificat CA auto-signé généré que le cluster utilise pour signer d'autres certificats internes. Ce problème inclut une connexion aux conteneurs CodeReady :
$ oc login -u developer -p developer https://api.crc.testing:6443
The server uses a certificate signed by an unknown authority.
You can bypass the certificate check, but any data you send to the server could be intercepted by others. Use insecure connections? (y/n):
Si vous avez une copie des certificats, spécifiez le certificat client avec le --client-certificate=""
option, ou le certificat CA avec le --certificate-authority=""
option, lors de l'utilisation de oc
commande.
Serveur Red Hat Satellite et l'outil CLI hammer
fonctionnent de la même manière, mais le certificat CA peut être spécifié sur la ligne de commande ou dans le ~/.hammer/cli_config.yml
dossier. Le hammer
La commande a également une option pour importer le certificat Satellite CA directement dans le .hammer
de l'utilisateur répertoire de configuration :
$ hammer --fetch-ca-cert https://satellite.example.com
CA certificate for https://satellite.example.com was stored to
..output omitted...
Cette commande ne rend le certificat disponible que pour l'utilisateur unique et doit être répétée pour chaque utilisateur du système. Pour rendre le certificat accessible à tous les utilisateurs d'un système, la sortie de la commande hammer suggère même d'utiliser ca-certificates
.
Mettre à jour les ca-certificates
pour valider les sites avec un certificat CA interne
Au lieu de spécifier manuellement le certificat CA avec chaque commande, nous pouvons ajouter nos certificats CA internes à la confiance CA fournie par ca-certificates
emballer. Ce paquet fournit une structure de répertoire dans /etc/pki/
pour gérer les certificats et une commande update-ca-trust
pour gérer la "configuration consolidée et dynamique des certificats AC et la confiance associée :"
$ ls /etc/pki/ca-trust/
ca-legacy.conf extracted README source
$ ls /etc/pki/ca-trust/source
anchors blacklist ca-bundle.legacy.crt README
Pour ajouter un certificat, téléchargez-le, placez-le dans le /etc/pki/ca-trust/source/anchors
répertoire, puis exécutez la commande update-ca-trust
. Vous devrez être root pour ces deux tâches :
$ sudo curl http://satellite.example.com/pub/katello-server-ca.crt -o /etc/pki/ca-trust/source/anchors/satellite-ca.crt
$ sudo update-ca-trust
Une fois la commande de mise à jour émise, le certificat est mis à disposition via /etc/pki/ca-trust/extracted
arbre :
$ ls /etc/pki/ca-trust/extracted
edk2 java openssl pem README
Les applications qui consultent ce répertoire pour vérifier les certificats peuvent utiliser n'importe lequel des formats fournis. La commande de mise à jour gère les copies, les conversions et la consolidation pour les différents formats. La page de manuel pour update-ca-trust
contient plus d'informations sur la structure des répertoires, les formats et les moyens d'accès aux certificats, mais un moyen rapide de répertorier tous les sujets de certificat dans le groupe consiste à utiliser le awk
suivant et openssl
commandes :
$ awk -v cmd='openssl x509 -noout -subject' '/BEGIN/{close(cmd)};{print | cmd}' < /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
Maintenant que j'ai ajouté le certificat CA pour mon serveur satellite, je peux utiliser curl
sans aucune option de certificat supplémentaire pour accéder à l'API :
$ curl --request GET --user admin https://satellite.example.com/katello/api/organizations
Enter host password for user 'admin':
{ "total": 1, "subtotal": 1,
...output omitted...
Il en va de même pour oc
commandes, hammer
commandes et de nombreuses autres applications en ligne de commande. Ces utilitaires peuvent utiliser les certificats gérés par ca-trust
pour valider vos connexions.
[Vous voulez en savoir plus sur la sécurité ? Consultez la liste de vérification de la sécurité informatique et de la conformité.]