====== Openssl ======
===== Générer un certitifcat auto-signé =====
openssl genrsa -des3 -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
===== Tester que le .key est bien associé au .crt =====
openssl x509 -noout -modulus -in .crt | openssl md5
openssl rsa -noout -modulus -in .key | openssl md5
Si les 2 commandes ne génèrent pas le meme md5 c'est que le le .key n'est pas celui qui à servi pour générer le .crt.
===== Hash d'un certificat =====
$ openssl x509 -hash -in ssl/server.crt -noout
deb1aaa8
===== Voir l'émetteur du certificat =====
$ openssl x509 -noout -issuer -subject -in google.crt -nameopt multiline
issuer=
countryName = US
organizationName = Google Inc
commonName = Google Internet Authority G2
subject=
countryName = US
stateOrProvinceName = California
localityName = Mountain View
organizationName = Google Inc
commonName = google.com
===== Tester la validité d'un certificat (erreur si auto-signé) =====
openssl verify ssl/server.crt
$ openssl verify -CAfile ssl/ca.crt ssl/server.crt
ssl/server.crt: OK
===== Lecture d'un fichier CSR =====
openssl req -noout -text -in keys/server.csr
===== Lecture d'un fichier PEM =====
openssl x509 -noout -text -in .crt
===== Lecture d'un fichier DER (binaire) =====
openssl x509 -noout -text -in nnn -inform DER
===== Fingerprint =====
openssl x509 -fingerprint -noout -in client.crt
===== Conversion =====
==== PEM to DER ====
openssl x509 -in input.crt -inform PEM –out output.crt -outform DER
openssl rsa -in input.key -inform PEM -out output.key -outform DER
==== DER to PEM ====
openssl x509 -in input.crt -inform DER -out output.crt -outform PEM
openssl rsa -in input.key -inform DER -out output.key -outform PEM
===== Voir le certificat d'un site distant =====
openssl s_client -showcerts -connect www.google.com:443
openssl s_client -port 443 -host www.google.com
===== Connexion sur port SSL =====
openssl s_client -connect 127.0.0.1:9999
===== Crypter / signer un fichier =====
==== signer ====
openssl smime -sign -in message -out signed-message \
-signer /path/to/your/certificate.pem \
-inkey /path/to/your/secret-key.pem -text
==== crypter ====
openssl smime -encrypt -out encrypted-signed-message \
-in signed-message /path/to/intended-operators/certificate.pem
==== Décrypter ====
openssl smime -decrypt -in encrypted-signed-message \
-out received-msg \
-recip /path/to/operators/certificate.pem \
-inkey /path/to/operators/private-key.pem
==== Cypter / Décrypter un dossier ou fichier ====
$ tar -zcf - directory | openssl aes-128-cbc -salt -out directory.tar.gz.aes # Encrypt
$ openssl aes-128-cbc -d -salt -in directory.tar.gz.aes | tar -xz -f - # Decrypt
$ openssl aes-128-cbc -salt -in file -out file.aes
$ openssl aes-128-cbc -d -salt -in file.aes -out file
==== Vérifier la signature ====
openssl smime -verify -text -CApath /global/globus/share/certificates \
-in received-msg