2 votes

Comment puis-je tester de manière programmatique si le certificat Root X1 de l'IRSG est présent et approuvé dans Keychain Access ?

Le 30 septembre 2021, le DST Root CA X3 a expiré, et a laissé MacOS 10.11 et plus anciens incapables de se connecter à tout serveur HTTPS qui utilise Let's Encrypt par défaut. Une façon simple de résoudre ce problème est d'ajouter manuellement la nouvelle version de l'option Root X1 de l'AISR dans le Trousseau d'accès et marquez-le comme fiable.

Est-il possible pour un shell script de tester la présence et le statut de confiance de ce certificat ? Si le certificat n'est pas présent, j'aimerais avertir l'utilisateur et le diriger vers des solutions possibles, comme celle ci-dessus.

Je veux une solution qui puisse fonctionner hors ligne. Tenter de se connecter par exemple à un site web de test avec curl semble peu fiable, car le site web peut tomber en panne ou il peut y avoir une autre mauvaise configuration du réseau.

Comment puis-je m'y prendre ?

1voto

Wowfunhappy Points 6021

Merci (encore) à @1110101001 pour l'indice clé dont j'avais besoin !

security find-certificate -c 'ISRG Root X1' retournera un statut de sortie négatif si aucun certificat avec ce nom n'existe dans un trousseau. Ainsi :

if ! security find-certificate -c 'ISRG Root X1'
then
    # The certificate isn't installed.
fi

Malheureusement, cela ne vérifie pas réellement si le certificat est fiable ; nous supposons que s'il existe, il est probablement fiable lui aussi. Jusqu'à ce que je trouve un moyen de vérifier le statut de confiance, ceci fera l'affaire pour le moment.

Il est même possible d'installer le certificat pour l'utilisateur... On a l'impression que cela ne devrait pas être autorisé, mais bon, ce n'est pas notre problème et nous l'utilisons pour une bonne cause ?

if ! security find-certificate -c 'ISRG Root X1'
then
    if [ $(shasum -a 256 ./isrgrootx1.der | cut -d ' ' -f1) == "96bcec06264976f37460779acf28c5a7cfe8a3c0aae11a8ffcee05c0bddf08c6" ]
    then
        sudo security -v add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ./isrgrootx1.der
    fi
fi

L'étape de la somme de contrôle est une précaution de sécurité, pour éviter d'installer une copie modifiée (potentiellement malveillante) du certificat. Elle n'est en aucun cas infaillible, mais c'est probablement une bonne idée.

Veuillez également ajouter un message pour donner à l'utilisateur une idée de ce qui se passe.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X