Autres
AideEnLigne
CahierDeBrouillon
Présentation
Administration

MesLectures
[Journal d'Ophelia]
[Blog Larnac]
[Traitement texte en ligne]
[Kim Khal]

Informations
[Rue 89]
[Tele libre]

DNS etc
[Robtex]
Logins
Votre ID: 111
Nom:
Login utilisateur
Mot de passe éditeur

SSLViteFait

Quelques rappels pour créer un CA auto-signé puis un certificat signé par cette CA

<2012-02-29 13:10:24 cmic>

Openssl vite fait ou les etapes de base pour creer un jeu de clefs publique/privée puis des certificats.

  • Creation d'un jeu de clefs (publique et privée dans un seul fichier)
 chiffree en aes256, encodée en PEM (Base 64)

 prompt>openssl genrsa -aes256 -out macle.pem 1024
 Generating RSA private key, 1024 bit long modulus
 ........................++++++
 .++++++
 e is 65537 (0x10001)
 Enter pass phrase for macle.pem:
 Verifying - Enter pass phrase for macle.pem:

NB: mot de passe : passphrase

NB: macle.pem est au format PEM et lisible

NB: au lieu de -aes256, on peut choisir -des, -des3, etc

  • visualisation de ce fichier

 prompt>openssl rsa -in macle.pem -text
 .. le mot de passe est demandé.

  • exportation de la clef publique

 prompt>openssl rsa -in macle.pem -pubout -out maclepub.pem
 Enter pass phrase for macle.pem:
 writing RSA key
 babel/usr/share/ssl/misc >more maclepub.pem
 -----BEGIN PUBLIC KEY-----
 MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSYXEnnf4FteUCY2MC8XMtt61T
 3N0T9jiPNSuH0nqrSyoZ/vh0JHb+buEHmh/glV7azdId9AYwUNY1Pkh+vX/+IL02
 pxFDVJPrtylNTcE6OsI4wyGxvYm6KfNqc0eQyYdWi5t3zmlac9IDSjL9qakgcmw5
 nzDL7xktmmbDxd91hQIDAQAB
 -----END PUBLIC KEY-----

  • FIXME faire idem un jeu de cle pour le correspondant sacle.pem saclepub.pem

  • chiffrer des donnes avec la clef rsa.

 prompt>openssl rsautl -encrypt -in getmac.pl -inkey macle.pem -out getmac.pl.ssl

NB Le fichier a chiffrer doit avoir une taille inferieure a la taille de la cle -11B (1024b soit 128B-11)

  • pour des fichiers plus gros, chiffer, protéger par un mot de passe. Puis chiffrer le mot de passe avec la clef privée :

    • chiffrer (option -e) le texte an blowfish (option -bf)

 prompt>openssl enc -bf -in getmac.pl -salt -e -out getmac.pl.ssl 
 enter bf-cbc encryption password: 
 Verifying - enter bf-cbc encryption password: 

NB: mot de passe toutUbu

    • mettre le mot de passe dans le fichier pass.txt. Chiffrer ce fichier avec la clef publique du destinataire :

 prompt>openssl rsautl -encrypt -pubin -inkey saclepub.pem -in pass.txt -out pass.txt.ssl

    • transmettre le pass.txt.ssl et getmac.ssl

    • dechiffrage du fichier mot de passe avec la clef privee du correspondant :

 prompt>openssl rsautl -decrypt -in pass.txt.ssl -inkey sacle.pem -out pass.txt

    • dechiffrage du texte avec le fichier du mot passe pass.txt ( sans "-pass file:pass.txt", la commande demandera le mot de passe)

 prompt>openssl enc -bf -d -in getmac.pl.ssl -salt -pass file:pass.txt -out getmac2.pl

  • signer un fichier : pour petits documents, ok.

    • Pour les gros documents, on calcule un hash

 prompt>openssl dgst -md5 getmac.pl > getmac.pl.md5 

    • On signe ensuite le hash de ce document avec la cle privee :

 prompt>openssl rsautl -sign -in getmac.pl.md5 -inkey macle.pem -out getmac.pl.signed

    • Le correpondant verifie que le hash du document signed est le même que le hash du document original (getmac.pl.md5 tmac2.pl.md5 identiques) :

 prompt>openssl rsautl -verify -in getmac.pl.signed -pubin -inkey maclepub.pem -out getmac2.pl.md5 

  • Créer un certificat d'autorité de certification (auto-signé)

    • Creation d'un jeu public/privé et chiffre en des3

 prompt>openssl grersa -des3 -out monCA.pem

 passphrase : passCA

    • Création du certificat auto-signe

 prompt>>openssl req -new -x509 -days 700 -key monCA.pem -out monCA.crt
 Enter pass phrase for monCA.pem:
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 Country Name (2 letter code) [AU]:FR
 State or Province Name (full name) [Some-State]:france
 Locality Name (eg, city) []:bron
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:MaCompagnie?
 Organizational Unit Name (eg, section) []:unit1
 Common Name (eg, YOUR name) []:CA
 Email Address []:cmic@abc.fr

  • Creation d'un certificat serveur

    • Creation d'une demande de signature de certificat pour macle.pem (csr)

 prompt>openssl req -new -key macle.pem  -out macle.csr
 Enter pass phrase for macle.pem:
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 Country Name (2 letter code) [AU]:FR
 State or Province Name (full name) [Some-State]:france
 Locality Name (eg, city) []:antibes
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyBigComany?
 Organizational Unit Name (eg, section) []:info
 Common Name (eg, YOUR name) []:MBC corp
 Email Address []:boss@mbc-corp.net   

 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:challenge
 An optional company name []:

NB: Le fichier macle.csr est lisible

    • Signature du certificat macle par l'autorite monCA

 prompt>openssl x509 -req -in macle.csr -out macle.crt -CA monCA.crt -CAkey monCA.pem          -CAcreateserial -CAserial ca.srl
 Signature ok
 subject=/C=FR/ST=france/L=antibes/O=MyBigComany?/OU=info/CN=MBC corp/emailAddress=boss@mbc-corp.net
 Getting CA Private Key
 Enter pass phrase for monCA.pem:

NB: le fichier macle.crt est lisible

    • Verification de la validite du certificat :

 prompt>openssl verifi -CAfile mpnCA.crt macle.crt
 macle.crt: OK

  • Conversion du certificat de PEM en PKCS12. Le format PKCS12 (pas vraiment un standard) est utilisé comme format pour les certificats X509

 prompt> openssl pkcs12 -export -out macle.p12 -inkey macle.pem -in macle.crt
 Enter pass phrase for macle.pem:
 Enter Export Password:
 Verifying - Enter Export Password:

NB: Export Password : exportpass

    • Recuperer le certificat eu format PEM a partir du certificat PKCS12

 prompt>openssl pkcs12 -clcerts -nokeys -in macle.p12 -out macle2.crt
 Enter Import Password:
 MAC verified OK

NB: import password : exportpass

NB: macle.crt et macle2.crt sont identiques.

    • On récupère la cle privee depuis le certificat PKCS12

 prompt>>openssl pkcs12 -nocerts -in macle.p12 -out maclepriv.pem
 Enter Import Password:
 MAC verified OK
 Enter PEM pass phrase:
 Verifying - Enter PEM pass phrase:

NB: import password: exportpass

NB: PEM passphrase: blabla . On peut choisir un nouveau mot de passe pour coder ce nouvel exemplaire (idem à macle.pem) de la clef privee.

    • On peut verifier que c'est bien la meme clef privee en comparant f1 et f2 :
 prompt>openssl rsa -in maclepriv.pem -text > f1
 prompt>openssl rsa -in macle.pem -text > f2
 prompt>diff f1 f2

  • Extraction du contenu du certificat PKCS12

  prompt>openssl pkcs12 -in macle.p12 -out cert-et-clepriv.pem -nodes 
  Enter Import Password:
  MAC verified OK

NB: Import Password: exportpass

NB: Le fichier cert-et-clepriv.pem contient la clef privée et le certificat. L'option -nodes permet de garder ce fichier non crypté.