verify(1) Utilitaire de vérification de certificats

SYNOPSIS

openssl verify [-CApath répertoire] [-CAfile fichier] [-purpose raison] [-policy param] [-ignore_critical] [-attime horodatage] [-check_ss_sig] [-crlfile fichier] [-crl_check] [-crl_check_all] [-policy_check] [-explicit_policy] [-inhibit_any] [-inhibit_map] [-x509_strict] [-extended_crl] [-use_deltas] [-policy_print][-no_alt_chains] [-untrusted fichier] [-help] [-issuer_checks] [-verbose] [-] [certificats]

DESCRIPTION

La commande verify vérifie des chaînes de certificats.

OPTIONS DE LA COMMANDE

-CApath répertoire
Un répertoire de certificats de confiance. Les certificats devraient avoir des noms de la forme : hachage.0 ou avoir des liens symboliques vers eux de cette forme (« hachage » est le nom de sujet du certificat haché : consultez l'option -hash de l'utilitaire x509). Sous UNIX, le script c_rehash créera automatiquement les liens symboliques vers un répertoire de certificats.
-CAfile fichier
Un fichier avec des certificats de confiance. Le fichier doit contenir des certificats au format PEM, concaténés.
-attime horodatage
Réaliser les vérifications de validation en utilisant la date indiquée par horodatage au lieu de la date système actuelle. horodatage est le nombre de secondes écoulées depuis le 1er janvier 1970 (date UNIX).
-check_ss_sig
Vérifier la signature du certificat racine autosigné de l'autorité de certification. C'est désactivé par défaut parce que cela n'ajoute aucune sécurité.
-crlfile fichier
Ficher contenant une ou plusieurs listes de révocations de certificat (au format PEM).
-crl_check
Vérifier la fin de validité d'une entité de certificat en essayant de rechercher une liste valable de révocations de certificat. Cela produit une erreur si une liste valable de révocations de certificat ne peut pas être trouvée.
-untrusted fichier
Un fichier avec des certificats qui ne sont pas de confiance. Le fichier doit contenir des certificats au format PEM, concaténés.
-purpose raison
Le but de ce certificat. Si cette option n'est pas indiquée, verify ne considérera pas la raison du certificat lors de la vérification de chaîne. Les utilisations actuellement acceptées sont : sslclient, sslserver, nssslserver, smimesign et smimeencrypt. Consultez la section OPÉRATION DE VÉRIFICATION pour de plus amples renseignements.
-help
Afficher un message sur l'utilisation.
-verbose
Afficher des informations supplémentaires à propos des opérations effectuées.
-issuer_checks
Afficher les diagnostics relatifs aux recherches du certificat émetteur du certificat actuel. Cela montre la raison pour laquelle chaque certificat émetteur candidat a été rejeté. La présence de messages de rejets n'implique pas qu'il y a un problème ; lors du processus de vérification normal, plusieurs rejets peuvent avoir lieu.
-policy param
Activer le traitement de la politique et ajouter param à user-initial-policy-set (consultez la RFC 5280). La politique param peut être un nom d'objet ou un OID sous forme numérique. Cet argument peut être fourni plus d'une fois.
-policy_check
Activer le traitement de la politique de certificat.
-explicit_policy
Définir la variable de politique require-explicit-policy (consultez la RFC 5280).
-inhibit_any
Définir la variable de politique inhibit-any-policy (consultez la RFC 5280).
-inhibit_map
Définir la variable de politique inhibit-policy-mapping (consultez la RFC 5280).
-no_alt_chains
Lors de la construction d’une chaîne de certificats, si le premier certificat trouvé n’est pas de confiance, alors OpenSSL continuera à chercher si une chaîne alternative de confiance peut être trouvée. Avec cette option, ce comportement est supprimé, de telle façon que seule la première chaîne puisse être utilisée. Cette option oblige à un comportement identique aux précédentes versions d’OpenSSL.
-policy_print
Afficher les diagnostics relatifs au traitement de politique.
-crl_check
Vérifier la fin de validité d'une entité de certificat en essayant de rechercher une liste valable de révocations de certificat. Cela produit une erreur si une liste valable de révocations de certificat ne peut pas être trouvée.
-crl_check_all
Vérifier la validité de tous les certificats de la chaîne en essayant de rechercher une liste valable de révocations de certificat.
-ignore_critical
Normalement, si une extension critique non gérée mais présente n'est pas prise en charge par OpenSSL, le certificat est rejeté (conformément à la RFC 5280). Si cette option est définie, les extensions critiques sont ignorées.
-x509_strict
Pour une conformité X.509 stricte, désactiver les contournements non conformes pour les certificats cassés.
-extended_crl
Activer les fonctionnalités étendues de liste de révocations de certificat, comme les listes indirectes de révocations de certificat et les clefs de signature alternatives de liste de révocations de certificat.
-use_deltas
Activer la prise en charge pour les deltas de listes de révocations de certificat.
-check_ss_sig
Vérifier la signature du certificat racine autosigné de l'autorité de certification. C'est désactivé par défaut parce que cela n'ajoute aucune sécurité.
-
Indiquer la dernière option. Tous les arguments suivants sont considérés comme des fichiers de certificat. C'est pratique si le premier nom de fichier de certificat commence par un -.
certificats
Un ou plusieurs certificats à vérifier. Si aucun certificat n'est donné, verify essayera de lire un certificat depuis l'entrée standard. Les certificats devraient être au format PEM.

OPÉRATION DE VÉRIFICATION

Le programme verify utilise les mêmes fonctions que les vérifications internes SSL et S/MIME, par conséquent cette description s'applique aussi à ces opérations de vérification.

Une différence fondamentale existe entre les opérations de vérification réalisées par le programme verify : à chaque fois que c'est possible, une tentative de continuer est essayée après une erreur, alors que l'opération de vérification se serait normalement arrêtée après la première erreur. Cela permet de déterminer tous les problèmes avec une chaîne de certificats.

L'opération de vérification est constituée de plusieurs étapes séparées.

D'abord, une chaîne de certificats est construite à partir du certificat fourni jusqu'au certificat racine de l'autorité de certification. C'est une erreur si la chaîne complète ne peut pas être construite. La chaîne est construite en recherchant le certificat émetteur du certificat actuel. Si le certificat trouvé est son propre émetteur, il est considéré comme le certificat racine de l'autorité de certification.

Le processus de « recherche du certificat émetteur » lui-même implique un certain nombre d'étapes. Jusqu'à la version 0.9.5a d'OpenSSL, le premier certificat dont le nom de sujet correspond au nom de l'émetteur du certificat actuel était considéré comme le certificat émetteur. Dans OpenSSL 0.9.6 et les versions suivantes, tous les certificats dont le nom de sujet correspond au nom de l'émetteur du certificat actuel sont sujets à d'autres tests. Les composants identificateurs concernant la clef d'autorité du certificat actuel (s'ils existent) doivent correspondre au sujet de l'identificateur de clef (s'il existe), et l'émetteur, le numéro de série de l'émetteur candidat, en plus de l'extension keyUsage de l'émetteur candidat (s'il existe), doivent permettre la signature de certificat.

La recherche commence par la liste de certificats qui ne sont pas de confiance, et si aucune correspondance n'est trouvée, la recherche continue avec les certificats de confiance. Le certificat racine de l'autorité de certification est toujours recherché dans la liste des certificats de confiance : si le certificat à vérifier est un certificat racine, alors une correspondance exacte doit être trouvée dans la liste des certificats de confiance.

La deuxième opération est de vérifier toutes les extensions des certificats qui ne sont pas de confiance, en cohérence avec la raison fournie. Si l'option -purpose n'est pas incluse, aucune vérification n'est réalisée. Le certificat fourni ou « feuille » (VS racine) doit avoir des extensions compatibles avec la raison fournie et tous les autres certificats doivent aussi être des certificats d'autorité de certification valables. Les extensions exactes nécessaires sont décrites plus en détail dans la section EXTENSIONS DE CERTIFICATS de l'utilitaire x509.

La troisième opération est de vérifier les réglages de confiance du certificat racine de l'autorité de certification. Le certificat racine de l'autorité de certification devrait être de confiance pour la raison fournie. Par compatibilité avec les versions précédentes de SSLeay et OpenSSL, un certificat sans réglages de confiance est considéré valable dans tous les cas.

La dernière opération est de vérifier la validité de la chaîne de certificats. La période de validité est vérifiée par rapport à l'heure actuelle du système et les dates notBefore et notAfter du certificat. Les signatures de certificat sont aussi vérifiées à ce moment.

Si toutes les opérations se terminent avec succès, alors le certificat est considéré valable. Si n'importe quelle opération échoue, alors le certificat est incorrect.

DIAGNOSTIC

Quand une opération de vérification échoue, les messages de sortie peuvent être un peu abscons. La forme globale du message d'erreur est :

 server.pem: /C=AU/ST=Queensland/O=CryptSoft Pty Ltd/CN=Test CA (1024 bit)
 error 24 at 1 depth lookup:invalid CA certificate

La première ligne contient le nom du certificat en cours de vérification suivi par le nom de sujet du certificat. La deuxième ligne contient le numéro d'erreur et la profondeur. La profondeur est le nombre de certificats ayant été vérifiés quand un problème a été détecté, avec zéro pour le certificat vérifié lui-même, puis un pour l'autorité de certification qui a signé le certificat et ainsi de suite. Enfin, la version texte du numéro d'erreur est présentée.

Une liste exhaustive des codes d'erreur et messages est montrée ci-dessous, cela inclut également le nom du code d'erreur tel qu'il est défini dans le fichier d'en-têtes x509_vfy.h. Certains codes d'erreur sont définis mais jamais renvoyés : ce sont ceux décrits comme « inutilisés ».

0 X509_V_OK: ok
L'opération a réussi.
2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: unable to get issuer certificate
Le certificat émetteur d'un certificat recherché est introuvable. Cela signifie normalement que la liste de certificats de confiance n'est pas complète.
3 X509_V_ERR_UNABLE_TO_GET_CRL: unable to get certificate CRL
La liste de révocations de certificat est introuvable.
4 X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE: unable to decrypt certificate's signature
La signature de certificat n'a pas pu être déchiffrée. Cela signifie que la valeur de signature réelle n'a pas pu être déterminée, plutôt qu'elle ne correspond pas à la valeur attendue, ce n'est significatif que pour les clefs RSA.
5 X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE: unable to decrypt CRL's signature
La signature de liste de révocations de certificat n'a pas pu être déchiffrée : cela signifie que la valeur de signature réelle n'a pas pu être déterminée, plutôt qu'elle ne correspond pas à la valeur attendue. Inutilisé.
6 X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY: unable to decode issuer public key
La clef publique du certificat SubjectPublicKeyInfo n'a pas pu être lue.
7 X509_V_ERR_CERT_SIGNATURE_FAILURE: certificate signature failure
La signature du certificat est incorrecte.
8 X509_V_ERR_CRL_SIGNATURE_FAILURE: CRL signature failure
La signature du certificat est incorrecte.
9 X509_V_ERR_CERT_NOT_YET_VALID: certificate is not yet valid
Le certificat n'est pas encore valable : la date notBefore est après la date actuelle.
10 X509_V_ERR_CERT_HAS_EXPIRED: certificate has expired
Le certificat a expiré : c'est parce que la date notAfter est avant la date actuelle.
11 X509_V_ERR_CRL_NOT_YET_VALID: CRL is not yet valid
La liste de révocations de certificat n'est pas encore valable.
12 X509_V_ERR_CRL_HAS_EXPIRED: CRL has expired
La liste de révocations de certificat a expiré.
13 X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD: format error in certificate's notBefore field
Le champ notBefore du certificat contient une date incorrecte.
14 X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD: format error in certificate's notAfter field
Le champ notAfter du certificat contient une date incorrecte.
15 X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD: format error in CRL's lastUpdate field
Le champ lastUpdate de la liste de révocations de certificat contient une date incorrecte.
16 X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD: format error in CRL's nextUpdate field
Le champ nextUpdate de la liste de révocations de certificat contient une date incorrecte.
17 X509_V_ERR_OUT_OF_MEM: out of memory
Une erreur s'est produite en essayant d'allouer de la mémoire. Cela ne devrait jamais arriver.
18 X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: self signed certificate
Le certificat passé est autosigné et le même certificat est introuvable dans la liste des certificats de confiance.
19 X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN: self signed certificate in certificate chain
La chaîne de certificats aurait pu être construite en utilisant des certificats qui ne sont pas de confiance mais le certificat racine est introuvable localement.
20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: unable to get local issuer certificate
Le certificat émetteur est introuvable : cela arrive si le certificat émetteur d'un certificat qui n'est pas de confiance est introuvable.
21 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: unable to verify the first certificate
Aucune signature n'a pu être vérifiée car la chaîne ne contient qu'un seul certificat et il n'est pas autosigné.
22 X509_V_ERR_CERT_CHAIN_TOO_LONG: certificate chain too long
La longueur de la chaîne de certificats est plus grande que la profondeur maximale fournie. Inutilisé.
23 X509_V_ERR_CERT_REVOKED: certificate revoked
Le certificat a été révoqué.
24 X509_V_ERR_INVALID_CA: invalid CA certificate
Un certificat de l'autorité de certification est incorrect. Soit ce n'est pas une autorité de certification, soit ses extensions ne sont pas cohérentes avec la raison fournie.
25 X509_V_ERR_PATH_LENGTH_EXCEEDED: path length constraint exceeded
Le paramètre de longueur de chemin basicConstraints a été dépassé.
26 X509_V_ERR_INVALID_PURPOSE: unsupported certificate purpose
Le certificat fourni n'a pas pu être utilisé pour la raison fournie.
27 X509_V_ERR_CERT_UNTRUSTED: certificate not trusted
Le certificat racine de l'autorité de certification n'est pas marqué de confiance pour la raison fournie.
28 X509_V_ERR_CERT_REJECTED: certificate rejected
Le certificat racine de l'autorité de certification est marqué pour rejeter la raison fournie.
29 X509_V_ERR_SUBJECT_ISSUER_MISMATCH: subject issuer mismatch
Le certificat émetteur candidat actuel a été rejeté car son nom de sujet ne correspondait pas au nom d'émetteur du certificat actuel. Affiché seulement quand l'option -issuer_checks est activée.
30 X509_V_ERR_AKID_SKID_MISMATCH: authority and subject key identifier mismatch
Le certificat émetteur candidat actuel a été rejeté car son objet d'identificateur de clef était présent et ne correspondait pas à l'identificateur de clef d'autorité du certificat actuel. Affiché seulement quand l'option -issuer_checks est activée.
31 X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH: authority and issuer serial number mismatch
Le certificat émetteur candidat actuel a été rejeté car son nom d'émetteur et son numéro de série étaient présents et ne correspondaient pas à l'identificateur de clef d'autorité du certificat actuel. Affiché seulement quand l'option -issuer_checks est activée.
32 X509_V_ERR_KEYUSAGE_NO_CERTSIGN:key usage does not include certificate signing
Le certificat émetteur candidat actuel a été rejeté car son extension keyUsage ne permet pas la signature de certificat.
50 X509_V_ERR_APPLICATION_VERIFICATION: application verification failure
Une erreur spécifique à l'application. Inutilisé.

BOGUES

Bien que les vérifications d'émetteur constituent une amélioration considérable par rapport à l'ancienne technique, elles souffrent encore des limites de l'interface de programmation X509_LOOKUP sous-jacente. Une conséquence de cela est que les certificats de confiance avec un nom de sujet correspondant doivent soit apparaître dans un fichier (comme indiqué avec l'option -CAfile), soit dans un répertoire (comme indiqué avec l'option -CApath). S'ils apparaissent dans les deux, alors seuls les certificats du fichier seront reconnus.

Les versions précédentes d'OpenSSL considèrent que les certificats avec les mêmes noms de sujet sont identiques et les gèrent mal.

Les versions précédentes de cette documentation inversaient la signification des codes d'erreur X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT et 20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY.

HISTORIQUE

L'option -no_alt_chains a été ajoutée dans la version 1.0.2b d'OpenSSL.

TRADUCTION

La traduction de cette page de manuel est maintenue par les membres de la liste <debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr-extra.