Note: Formats de fichiers
- Les cles PKCS #8; Les certificats PKCS #12;
- PKCS #10 pour les requetes de signatures de certificats
- Encodage en ASM.1 qui donne un fichier binaire DER
- Encodage du DER en Base64 donnera un fichier PEM
- Tacitemetn: fichier clef extension .key, fichier certificat extension CRT (parfois CER)
- Noter que CER et BER ont le meme format
Chiffrer un fichier texte
Egalement possible sous windows en installant OpenSSL? precompiled binaries.
prompt>openssl enc -aes-256-cbc -in fichier.txt -out fichier.chf
prompt>openssl enc -aes-256-cbc -d -in fichier.chf -out fichier.txt
2018-02-16 07:11:33
Créer un CA auto-signé puis un certificat signé par cette CA
2020-11-17 14:20:59 voir aussi https://www.linuxtricks.fr/wiki/openssl-creation-de-certificats-et-ca-autosignes
<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-----
- 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, chiffrer, 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 chiffré.
|