Lister facilement le contenu d’un bundle de C.A

Dans les opérations quotidiennes d’un sysadmin, il est courant de devoir intéragir avec des bundle de C.A. Ici, C.A désigne une Autorité de Certification agissant comme tiers de confiance.

Qu’est ce qu’un bundle de C.A ?

Ce que l’on désigne sous le nom de bundle de C.A n’est rien d’autre qu’un fichier contenant un ou plusieurs certificats de C.A.

Exemple:

❯ cat /etc/ssl/certs/ca-certificates.crt
-----BEGIN CERTIFICATE-----
MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UE
AwwJQUNDVlJBSVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQsw
CQYDVQQGEwJFUzAeFw0xMTA1MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQ
BgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwHUEtJQUNDVjENMAsGA1UECgwEQUND
VjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCb
qau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gMjmoY
[...]
h1xA2syVP1XgNce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xF
d3+YJ5oyXSrjhO7FmGYvliAd3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2H
pPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3pEfbRD0tVNEYqi4Y7
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFgzCCA2ugAwIBAgIPXZONMGc2yAYdGsdUhGkHMA0GCSqGSIb3DQEBCwUAMDsx
[...]

affiche le bundle de C.A de mon système Ubuntu actuel.

Chaque certificat est délimité par les séparateurs -----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----.

Les certificats ci-dessus sont au format P.E.M. Ce format n’est pas fait pour être lu par des humains.

Voyons alors comment nous pouvons facilement afficher les informations de chaque certificat dans un format facile à lire par un humain.

Comment facilement voir le sujet de chaque C.A présente dans le bundle ?

Voici comment facilement afficher le sujet (l’un des nombreux champs contenus dans un certificat) de chaque C.A présente dans le fichier /etc/ssl/certs/ca-certificates.crt:

❯ awk -v cmd='openssl x509 -noout -subject' \
    '/BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt
subject=CN = ACCVRAIZ1, OU = PKIACCV, O = ACCV, C = ES
subject=C = ES, O = FNMT-RCM, OU = AC RAIZ FNMT-RCM
subject=C = IT, L = Milan, O = Actalis S.p.A./03358520967, CN = Actalis Authentication Root CA
[...]

Comme on peut le voir ci-dessus, il devient alors trivial de savoir quelles Autorités de Certifications sont présentes dans le fichier /etc/ssl/certs/ca-certificates.crt.

Si vous avez l’habitude de manipuler la commande openssl, vous pouvez bien entendu modifier la commande openssl x509 -noout -subject pour que cette dernière vous affiche d’autres informations relatives au certificat (fingerprint, etc…)