2 votos

¿Cómo puedo comprobar mediante programación si el certificado ISRG Root X1 está presente y es de confianza en Keychain Access?

El 30 de septiembre de 2021, el DST Root CA X3 expiró, y dejó a MacOS 10.11 y anteriores sin poder conectarse a ningún servidor HTTPS que utilice Let's Encrypt por defecto. Una forma fácil de arreglar esto es añadir manualmente el nuevo ISRG Root X1 a Keychain Access y marcarlo como de confianza.

¿Es posible que un shell script compruebe la presencia y el estado de confianza de este certificado? Si el certificado no está presente, me gustaría advertir al usuario y dirigirlo a posibles soluciones, como la de arriba.

Quiero una solución que pueda funcionar sin conexión. Intentar, por ejemplo, conectarse a un sitio web de prueba con curl parece poco fiable, ya que el sitio web podría caerse o podría haber alguna otra desconfiguración de la red.

¿Cómo puedo hacerlo?

1voto

Wowfunhappy Puntos 33

¡Gracias (de nuevo) a @1110101001 por la pista clave que necesitaba!

security find-certificate -c 'ISRG Root X1' devolverá un estado de salida negativo si no existe ningún certificado con ese nombre en un llavero. Por lo tanto:

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

Desafortunadamente, esto no comprueba realmente si el certificado es de confianza; estamos asumiendo que si existe, probablemente también sea de confianza. Hasta que pueda averiguar cómo comprobar el estado de confianza, esto servirá por ahora.

Incluso puedes instalar el certificado para el usuario... esto parece que no debería estar permitido, pero oye, no es nuestro problema y lo estamos usando por una buena causa...

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

El paso de la suma de comprobación es una precaución de seguridad, para evitar la instalación de una copia modificada (potencialmente maliciosa) del certificado. No es en absoluto infalible, pero probablemente sea una buena idea.

Por favor, añada también un mensaje para dar al usuario una idea de lo que está pasando.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X