Si vous avez un serveur Linux ou un VPS (machine virtuelle sur Internet) et que vous souhaitez sécuriser plusieurs services (web, mails, ...), il devient très intéressant d'utiliser une autorité de certification. Grâce à cette autorité de certification, il vous suffira d'importer le certificat de votre autorité de certification dans les autorités de confiance de vos périphériques (ordinateurs, smartphones, ...) pour que tous vos certificats soient considérés comme émanant d'une autorité reconnue.
Tutoriel testé sous Ubuntu 12.04 et Debian 7.7.0.
Par sécurité, faites une mise à jour de la liste des paquets.
Bash
apt-get update
Puis, installez le paquet "openssl".
Bash
apt-get install openssl
Pour modifiez les informations qu'OpenSSL utilisera pour créer l'autorité de certification, modifiez le fichier "/etc/ssl/openssl.cnf".
Dans ce fichier, vous pourrez modifiez la durée de validité des certificats que vous signerez.
Par exemple : 10 ans (3650 jours).
Plain Text
default_days = 3650
Modifier la taille de la clé utilisée. Pour information : Geotrust demande maintenant des certificats en 2048 bits. Donc, autant faire comme eux.
Plain Text
default_bits = 2048
Ainsi, que les informations de votre autorité de certification. Dont celles-ci :
Plain Text
# Le code du pays. countryName_default = BE # L'état ou la province. Perso, j'ai mis le pays pour protéger ma vie privée. stateOrProvinceName_default = Belgique # Le nom de votre organisation (ou le nom de votre site si vous le souhaitez). 0.organizationName_default = InformatiWeb # Dans la partie "[ usr_cert ]", ajoutez la ligne suivante : crlDistributionPoints=URI:http://www.informatiweblan.net/ca-crl.crl # Doc : https://www.openssl.org/docs/apps/x509v3_config.html#crl_distribution_points_
Pour finir, créer votre autorité de certification en utilisant le script "CA.sh" d'OpenSSL.
Bash
cd /usr/lib/ssl/misc/ sudo ./CA.sh -newca
Lors de la création de l'autorité de certification, le script vous demandera :
- un mot de passe pour protéger la clé privée de l'autorité de certification
- les informations à indiquer dans le certificat de l'autorité
Note : Le nom commun a indiquer lors de la création de l'autorité de certification est le nom de votre autorité de certification.
Plain Text
... writing new private key to './demoCA/private/./cakey.pem' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ... Country Name (2 letter code) [BE]: State or Province Name (full name) [Belgique]: Locality Name (eg, city) []: Organization Name (eg, company) [InformatiWeb]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:InformatiWeb CA Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: ...
Dans le dossier "/usr/lib/ssl/misc/demoCA" qui a été créé par ce script, vous trouverez tous les fichiers concernant votre autorité de certification.
Dont le certificat de l'autorité : "cacert.pem".
Bash
ls -l /usr/lib/ssl/misc/demoCA/
Bash
total 40 -rw-r--r-- 1 root root 4309 fév 11 16:14 cacert.pem -rw-r--r-- 1 root root 972 fév 11 16:14 careq.pem drwxr-xr-x 2 root root 4096 fév 11 16:14 certs drwxr-xr-x 2 root root 4096 fév 11 16:14 crl -rw-r--r-- 1 root root 94 fév 11 16:14 index.txt -rw-r--r-- 1 root root 21 fév 11 16:14 index.txt.attr -rw-r--r-- 1 root root 0 fév 11 16:14 index.txt.old drwxr-xr-x 2 root root 4096 fév 11 16:14 newcerts drwxr-xr-x 2 root root 4096 fév 11 16:14 private -rw-r--r-- 1 root root 17 fév 11 16:14 serial
Pour prendre un exemple courant, nous allons demander un certificat qui aura ces caractéristiques :
- valable 10 ans
- valide pour tous les sous-domaines (sauf le domaine)
- clé privée non protégée par mot de passe pour éviter qu'Apache ne le demande au démarrage (ou redémarrage en cas de problèmes)
Bash
openssl req -new -nodes -keyout /etc/ssl/private/www-key.pem -out /tmp/www-req.pem -days 3650
Comme tout à l'heure, des informations vous seront demandées.
Parmi ces informations, vous devez obligatoirement indiquer "*.domaine.net" pour le nom commun car c'est cette valeur que le navigateur web vérifiera.
Note : Pour générer un certificat valable pour le domaine uniquement, indiquez "domaine.net" pour le nom commun.
Plain Text
Generating a 2048 bit RSA private key ............+++ ..........+++ writing new private key to 'www-key.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) [BE]: State or Province Name (full name) [Belgique]: Locality Name (eg, city) []: Organization Name (eg, company) [InformatiWeb]: Organizational Unit Name (eg, section) []: Common Name (e.g. server FQDN or YOUR name) []:*.informatiweblan.net Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Pour finir, utilisez la demande de signature pour signer le certificat.
Bash
cd /usr/lib/ssl/misc/ openssl ca -out /etc/ssl/certs/www-cert.pem -infiles /tmp/www-req.pem
Plain Text
Using configuration from /usr/lib/ssl/openssl.cnf Enter pass phrase for ./demoCA/private/cakey.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 92:41:c8:a0:fa:43:33:f6 Validity Not Before: Feb 11 15:30:52 2015 GMT Not After : Feb 8 15:30:52 2025 GMT Subject: countryName = BE stateOrProvinceName = Belgique organizationName = InformatiWeb commonName = *.informatiweblan.net X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 9E:24:79:43:C8:90:6E:9E:52:4A:80:8C:35:32:92:AC:66:CD:20:F6 X509v3 Authority Key Identifier: keyid:10:44:64:86:EB:FE:F1:52:10:8A:0B:EF:2C:49:EE:DC:F0:1C:B3:2F Certificate is to be certified until Feb 8 15:30:52 2025 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
Linux 5/3/2015
Linux 31/12/2016
Linux 12/9/2015
Linux 11/1/2014
Contenu épinglé
Contact
® InformatiWeb-Pro.net - InformatiWeb.net 2008-2022 - © Lionel Eppe - Tous droits réservés.
Toute reproduction totale ou partielle de ce site est interdite et constituerait une contrefaçon sanctionnée par les articles L.335-2 et suivants du Code de la propriété intellectuelle.
Vous devez être connecté pour pouvoir poster un commentaire