OpenSSL VPN Serveurs de messagerie |
OpenSSL/Openssl-asn1OpenSSL.Openssl-asn1 HistoryHide minor edits - Show changes to output Changed line 1 from:
(:keywords openssl, asn1, asn.1, asn1parse, compilation, certificat :) to:
(:keywords openssl, asn1, asn.1, asn1parse, compilation, certificat, format :) Changed lines 1-3 from:
(:keywords openssl, asn1, asn.1, asn1parse, compilation:) (:description Introduction à la compréhension du format des certificats:) to:
(:keywords openssl, asn1, asn.1, asn1parse, compilation, certificat :) (:description Introduction à la compréhension du format binaire des certificats:) Changed line 11 from:
Contrairement au fichier XML pour lequel les données sont transportées en même temps que leurs descriptions, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est joué par un fichier au format Abstract Syntax Notation One (ASN.1). On retrouve ce langage de définition dans le protocole de management des équipements to:
Contrairement au fichier XML pour lequel les données sont transportées en même temps que leurs descriptions, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est joué par un fichier au format Abstract Syntax Notation One (ASN.1). On retrouve ce même langage de définition dans le protocole de management des équipements réseaux [[http://fr.wikipedia.org/wiki/Snmp|SNMP]].\\ Changed line 14 from:
Voici le début de cette to:
Voici le début de cette description pour les certificats Changed line 52 from:
Un certificat n'est donc ni plus ni moins qu'une simple structure binaire dont la valeur est garantie par l'apposition d'une signature (Hash to:
Un certificat n'est donc ni plus ni moins qu'une simple structure binaire dont la valeur est garantie par l'apposition d'une signature (Hash produit par une autorité de confiance). Au passage, remarquons qu'il n'y aucune différence technique entre un certificat, une CA, une CRL, etc ... tous ces fichiers sont des structures binaires associées à une signature. \\ Changed lines 12-13 from:
to:
\\ \\ Changed lines 15-17 from:
to:
\\ Added line 42:
\\ Changed line 1 from:
(:keywords openssl, asn1, asn1parse, compilation:) to:
(:keywords openssl, asn1, asn.1, asn1parse, compilation:) Changed lines 9-12 from:
Un certificat Contrairement au fichier XML pour lequel les données sont transportées en même temps que leurs descriptions, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est to:
Un certificat X509v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]] et le cadre d'utilisation par l'[[http://www.itu.int/rec/T-REC-X.509/|International Telecommunication Union (ITU)]].\\ Contrairement au fichier XML pour lequel les données sont transportées en même temps que leurs descriptions, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est joué par un fichier au format Abstract Syntax Notation One (ASN.1). On retrouve ce langage de définition dans le protocole de management des équipements réseau [[http://fr.wikipedia.org/wiki/Snmp|SNMP]].\\ Changed lines 116-118 from:
Deux librairies opensource to:
La syntaxe ASN1 : http://www.oss.com/asn1/booksintro.html\\ Deux librairies opensource ASN.1 : http://lionet.info/asn1c/basics.html , http://josefsson.org/libtasn1/\\ Changed lines 9-10 from:
Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]] et le cadre d'utilisation par l'[[http://www.itu.int/rec/T-REC-X.509/|International to:
Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]] et le cadre d'utilisation par l'[[http://www.itu.int/rec/T-REC-X.509/|International Telecommunication Union (ITU)]].\\ Changed lines 9-10 from:
Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]] to:
Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]] et le cadre d'utilisation par l'[[http://www.itu.int/rec/T-REC-X.509/|International Telecomunication Union (ITU)]].\\ Changed line 55 from:
C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout -inform DER -in google. to:
C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout -inform DER -in google.der\\ Changed lines 95-96 from:
Avec un éditeur hexa fixons to:
Nous apprenons que dans le fichier google.der à l'offset 10 se trouve trois octets (hl+l), le troisième octet est un entier dont la valeur est deux.\\ Avec un éditeur hexa fixons ce 12ème octet du fichier à 1 et voici le résultat Changed line 98 from:
C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout -inform DER -in google. to:
C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout -inform DER -in google.der\\ Changed lines 41-45 from:
On en comprend qu'un Certificat est composé de trois éléments : to:
On en comprend qu'un Certificat est composé de trois éléments :\\ - Une structure (tbsCertificate)\\ - Un algorithme de hashage (AlgorithmIdentifier)\\ - Une signature (signatureValue)\\ \\ Changed line 96 from:
Avec un éditeur hexa to:
Avec un éditeur hexa fixons le 12ème octet du fichier à 1 et voici le résultat Changed line 7 from:
!!!{+La structure binaire d' to:
!!!{+La structure binaire d'un certificat+} Changed line 7 from:
!!!{+ to:
!!!{+La structure binaire d'uin certificat+} Changed lines 10-11 from:
Contrairement au fichier XML pour lequel les données sont transportées en même temps que to:
Contrairement au fichier XML pour lequel les données sont transportées en même temps que leurs descriptions, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est jouée par un fichier au format ASN1.\\ Changed lines 49-51 from:
!!!{+Modification to:
!!!{+Modification de la version du certificat+} La version peut prendre trois valeurs : 0,1,2 chacune correspond respectivement à la version v1,v2 et v3 des certicats x509.\\ Le certificat de https://www.google.com contient ces informations : Changed lines 94-95 from:
Avec un éditeur hexa modifions la valeur du douzième octet to:
nous apprenons que dans le fichier google.der à l'offset 10 se trouve trois octets (hl+l) dont le troisième octet est un entier dont la valeur est deux.\\ Avec un éditeur hexa modifions le 12ème octet du fichier à 1 et voici le résultat Changed lines 110-112 from:
to:
\\ \\ Added line 117:
Changed line 119 from:
c:\libtasn1-0.3.9\tests>..\src\asn1Decoding -c pkix.asn google.der PKIX1. to:
c:\libtasn1-0.3.9\tests>..\src\asn1Decoding -c pkix.asn google.der PKIX1.Certificate\\ Changed line 37 from:
to:
CertificateSerialNumber ::= INTEGER Changed lines 93-101 from:
binaire distinguished encoding rules (DER) to:
à l'offset 10 du fichier se trouve trois octets (hl+l) dont le troisième octet est un entier dont la valeur est deux. Avec un éditeur hexa modifions la valeur du douzième octet à 1 et voici le résultat >>teal background-color:#f0f0f0 padding=5px font-family=monospace<< C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout -inform DER -in google.der Certificate: Data: Version: 2 (0x1) Serial Number: 68:76:64:38:3d:49:6e:2e:f5:e3:19:98:42:e0:7c:ee Signature Algorithm: sha1WithRSAEncryption Issuer: C=ZA, O=Thawte Consulting (Pty) Ltd., CN=Thawte SGC CA .../... >><< Le certificat est bien modifié, le code de hashage pourrait être recalculé mais ne pouvant être signé l'ouverture du certificat donne ceci : http://www.grandville.net/img/google.der.gif"fake google certificat " !!!{+Liens et outils+} la syntaxe ASN1 : http://www.oss.com/asn1/booksintro.html\\ Deux librairies opensource ASN1 : http://lionet.info/asn1c/basics.html , http://josefsson.org/libtasn1/\\ \\ \\ Un exemple obtenu par libtasn1 >>teal background-color:#f0f0f0 padding=5px font-family=monospace<< c:\libtasn1-0.3.9\tests>..\src\asn1Decoding -c pkix.asn google.der PKIX1.Certificate Parse: done. Decoding: SUCCESS DECODING RESULT: name:NULL type:SEQUENCE name:tbsCertificate type:SEQUENCE name:version type:INTEGER value:0x02 name:NULL type:DEFAULT value:v1 name:serialNumber type:INTEGER value:0x687664383d496e2ef5e3199842e07cee name:signature type:SEQUENCE name:algorithm type:OBJ_ID value:1.2.840.113549.1.1.5 name:parameters type:ANY value:0500 name:issuer type:CHOICE name:rdnSequence type:SEQ_OF name:NULL type:SET_OF name:NULL type:SEQUENCE name:type type:OBJ_ID name:value type:ANY name:?1 type:SET_OF name:NULL type:SEQUENCE name:type type:OBJ_ID name:value type:ANY name:?1 type:SEQUENCE name:type type:OBJ_ID value:2.5.4.6 name:value type:ANY value:13025a41 name:?2 type:SET_OF name:NULL type:SEQUENCE name:type type:OBJ_ID name:value type:ANY name:?1 type:SEQUENCE name:type type:OBJ_ID value:2.5.4.10 name:value type:ANY value:131c54686177746520436f6e73756c74696e67202850747929204c74642e name:?3 type:SET_OF name:NULL type:SEQUENCE name:type type:OBJ_ID name:value type:ANY name:?1 type:SEQUENCE name:type type:OBJ_ID value:2.5.4.3 .../... >><< Changed line 1 from:
(:keywords openssl, asn1, compilation:) to:
(:keywords openssl, asn1, asn1parse, compilation:) Added lines 24-38:
issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version shall be v2 or v3 extensions [3] EXPLICIT Extensions OPTIONAL -- If present, version shall be v3 } Version ::= INTEGER { v1(0), v2(1), v3(2) } .../... Changed lines 41-42 from:
n to:
On en comprend qu'un Certificat est composé de trois éléments : - Une structure (tbsCertificate) - Un algorithme de hashage (AlgorithmIdentifier) - Une signature (signatureValue) Un certificat n'est donc ni plus ni moins qu'une simple structure binaire dont la valeur est garantie par l'apposition d'une signature (Hash dont l'émetteur fait parti des autorités de confiance). Au passage, remarquons qu'il n'y aucune différence technique entre un certificat, une CA, une CRL, etc ... tous ces fichiers sont des structures binaires associées à une signature. \\ !!!{+Modification des valeurs d'un certificat+} Modification manuelle de la version du certificat, Trois valeurs sont autorisées : 0,1,2 chacune correspond respectivement à la version v1,v2 et v3 des certicats au format x509. Le certificat de https://www.google.com contient ces informations : >>teal background-color:#f0f0f0 padding=5px font-family=monospace<< C:\openssl-0.9.8g\out32dll>openssl x509 -text -noout -inform DER -in google.der Certificate: Data: Version: 3 (0x2) Serial Number: 68:76:64:38:3d:49:6e:2e:f5:e3:19:98:42:e0:7c:ee Signature Algorithm: sha1WithRSAEncryption Issuer: C=ZA, O=Thawte Consulting (Pty) Ltd., CN=Thawte SGC CA Validity Not Before: May 3 15:34:58 2007 GMT Not After : May 14 23:18:11 2008 GMT .../... >><< Le certificat est en v3 ( valeur 2 ) OpenSSL permet l'analyse binaire du certificat via l'option asn1parse >>teal background-color:#f0f0f0 padding=5px font-family=monospace<< C:\openssl-0.9.8g\out32dll>openssl asn1parse -i -inform DER -in google.der 0:d=0 hl=4 l= 801 cons: SEQUENCE 4:d=1 hl=4 l= 650 cons: SEQUENCE 8:d=2 hl=2 l= 3 cons: cont [ 0 ] 10:d=3 hl=2 l= 1 prim: INTEGER :02 13:d=2 hl=2 l= 16 prim: INTEGER :687664383D496E2EF5E3199842E07CEE 31:d=2 hl=2 l= 13 cons: SEQUENCE 33:d=3 hl=2 l= 9 prim: OBJECT :sha1WithRSAEncryption 44:d=3 hl=2 l= 0 prim: NULL 46:d=2 hl=2 l= 76 cons: SEQUENCE 48:d=3 hl=2 l= 11 cons: SET 50:d=4 hl=2 l= 9 cons: SEQUENCE 52:d=5 hl=2 l= 3 prim: OBJECT :countryName 57:d=5 hl=2 l= 2 prim: PRINTABLESTRING :ZA 61:d=3 hl=2 l= 37 cons: SET 63:d=4 hl=2 l= 35 cons: SEQUENCE 65:d=5 hl=2 l= 3 prim: OBJECT :organizationName 70:d=5 hl=2 l= 28 prim: PRINTABLESTRING :Thawte Consulting (Pty) Ltd. .../... >><< Added lines 1-32:
(:keywords openssl, asn1, compilation:) (:description Introduction à la compréhension du format des certificats:) \\ \\ !!!{+Le Certificat est une structure binaire+} \\ Un certificat X509 v3 est un fichier binaire dont la structure est définie par la [[http://www.ietf.org/rfc/rfc2459.txt|RFC2459]]. Contrairement au fichier XML pour lequel les données sont transportées en même temps que leur description, un fichier binaire nécessite pour son exploitation la fourniture d'un '''lexique''' permettant la compréhension de son contenu. Le rôle du lexique est jouée par un fichier au format ASN1.\\ Voici le début de cette description >>teal background-color:#f0f0f0 padding=5px font-family=monospace<< Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING } TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, >><< n binaire distinguished encoding rules (DER) |