4 votes

Vérification des certificats conformes aux exigences d'Apple

Existe-t-il une commande ou une interface utilisateur que je peux utiliser pour tester les certificats ou diagnostiquer pourquoi ils ne sont pas valides ?

Il y a quelque temps, Apple a modifié les exigences relatives aux certificats TLS et a annoncé les dates auxquelles ces changements prendraient effet. Par exemple, ne pas accepter les certificats qui durent plus de 865 jours, exiger des attributs étendus, etc.

Si j'utilise un tel certificat, Chrome/Safari ne me dit pas pourquoi il n'est pas considéré comme invalide s'il s'agit d'une raison imposée par Apple telle que celles mentionnées ci-dessus.

Ce serait génial d'avoir une étape de débogage à portée de main qui me dirait si un certificat est bon ou non et qui inclurait les restrictions d'Apple.

Clarification : Je ne suis pas intéressé par la génération de certificats ou la façon de les coder. Je veux juste savoir comment tester si un certificat donné est valide sur un système MacOS en utilisant le terminal ou une autre interface utilisateur de l'OS.

6voto

Evgeny Points 1387

Il s'avère donc qu'il existe un outil au niveau du système d'exploitation, security

Par exemple, je peux tester si un certificat ca.crt est valable comme ceci :

security verify-cert -c ca.crt

Voici à quoi ressemblera un certificat valide :

 security verify-cert -c ca.crt
...certificate verification successful.

Et voici un certificat avec une expiration de 10 ans qui viole les règles d'Apple, mais qui est autrement valide selon OpenSSH :

 security verify-cert -c ca.crt
Cert Verify Result: CSSMERR_TP_NOT_TRUSTED

1voto

Martin Allert Points 898

Il y a deux façons possibles d'utiliser le CLI pour vérifier la validité des certificats :

  1. Vous avez les fichiers du certificat à un endroit accessible sur votre disque dur.
  2. Vous les avez seulement installés, mais pas accessibles sur le disque dur.

La première nécessite un peu plus de travail en CLI, la deuxième peut être réalisée en ligne et montre la chaîne de certificats complète.

  1. Vous avez les fichiers du certificat à un endroit accessible sur votre disque dur. Pour vérifier le fichier de certificat, nous devons savoir dans quel format il se trouve. Voici un exemple avec un fichier au format PEM :

    openssl x509 -in FILENAME -text

Vous pouvez également choisir le format d'entrée avec

openssl x509 -inform PEM -in FILENAME -text

(PEM est la valeur par défaut) Cela vous donne une sortie texte assez longue pour chaque fichier de certificat et vous devez valider l'émetteur, le CN, la date d'expiration manuellement en les comparant au certificat CA ou racine. La deuxième méthode sera plus pratique :

  1. Vous les avez seulement installés, mais pas accessibles sur le disque dur.

Vous pouvez utiliser la commande openssl s_client pour valider la chaîne complète.

openssl s_client -connect YOURSERVER:SSLPORT

Vous verrez immédiatement le certificat ET la chaîne racine installée et openssl vous indique également les dates d'expiration, etc. Voici un exemple tiré de mon site web personnel :

openssl s_client -connect FQDN-DELETED:443
CONNECTED(00000005)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = FQDN-DELETED
verify return:1
---
Certificate chain
 0 s:/CN=FQDN-DELETED
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
...
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIGUzCCBTugAwIBAgISA+Y4i63Ury6g85b3DghU9muyMA0GCSqGSIb3DQEBCwUA
...
-----END CERTIFICATE-----
subject=/CN=FQDN-DELETED
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3742 bytes and written 322 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 4096 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES128-GCM-SHA256
...

Il y a beaucoup plus de résultats - il suffit de jeter un coup d'œil. Envoyez-moi vos questions, si vous en avez.

0voto

Oskar Points 1242

Apple a annoncé quelques changements pour les certificats racine à partir du 1er septembre 2020.

Les certificats de serveur TLS émis à partir du 1er septembre 2020 00:00 GMT/UTC ne doivent pas avoir une période de validité supérieure à 398 jours.

Ce changement n'affectera que les certificats de serveur TLS émis par les autorités de certification racine préinstallées avec iOS, iPadOS, MacOS, watchOS et tvOS.

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