2006/06/28
On génère une clé privée et un certificat auto signé:
openssl req -x509 -new -days 1826 -out certs/ca.crt -keyout private/ca.key
Generating a 1024 bit RSA private key ...++++++ ..........++++++ writing new private key to 'private/ca.key' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- 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]:Bouches du Rhone Locality Name (eg, city) []:Chateauneuf le Rouge Organization Name (eg, company) [Internet Widgits Pty Ltd]:pacageek Organizational Unit Name (eg, section) []:Certificate Authority Common Name (eg, YOUR name) []:pacageek.org Email Address []:admin@pacageek.org
Voila, votre certificat est généré. C'est le fichier pacageek_ca.crt que vous pouvez distribuer à vos utilisateurs et qui va servir à certifier les futurs certificats (que nous signerons bien entendu avec la clé privée de ce certificat d'autorité).
D'abord, créer une clé privée propre à ce certificat. Nous ne la chiffrons pas, car sinon la passphrase doit être entrée à chaque redémarrage du serveur web (pénible) :
openssl genrsa -out private/server.key 1024
Ensuite, nous créons une demande de certificat, signée avec cette clé privée:
openssl req -new -key private/server.key -out server.csr
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]:Bouche du Rhone Locality Name (eg, city) []:Chateauneuf le Rouge Organization Name (eg, company) [Internet Widgits Pty Ltd]:pacageek.org Organizational Unit Name (eg, section) []:ISP Common Name (eg, YOUR name) []:www.pacageek.org Email Address []:admin@pacageek.org Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Arrivés à cette étape, vous êtes censés envoyer votre CSR à l'autorité de certification, qui en échange de ce fichier et d'une somme d'argent pas forcément négligeable, vous retournera un certificat digne de confiance. Ici, nous allons économiser quelques euros, et le faire nous-même:
openssl x509 -days 365 -req -CA certs/ca.crt -CAkey private/ca.key -CAcreateserial -in server.csr -out certs/server.crt
Signature ok subject=/C=FR/ST=Bouche du Rhone/L=Chateauneuf le Rouge/O=pacageek/OU=ISP/CN=pacageek.org/emailAddress=admin@pacageek.org Getting CA Private Key Enter pass phrase for ca.key:
On peut afficher le certificat, avec la ligne:
openssl x509 -in certs/server.crt -text -noout
Et verifier la signature de cette façon:
openssl verify -CAfile certs/ca.crt certs/server.crt
cat server.key server.crt > private/server.pem
openssl dhparam -2 >> private/server.pem
Generating DH parameters, 512 bit long safe prime, generator 2 This is going to take a long time .......+..+.....+..+.....................+...............................................+...........+.......+........+........................+..............+...............+.......................................+...+.......................................+.........+........................................+.........................................................+....................................+.......................+..............+.........+..........................+................+......+...........................+.................+.............................................+........................+........+...............+.................................+........+..........................+.........+..............+..................+...................................+...........+........................+.......................+.................................+.....................+......+.....................................+...+.....................++*++*++*++*++*++*
SSLEngine on SSLCertificateFile /etc/ssl/server.crt SSLCertificateKeyFile /etc/ssl/server.key
TLS_CERTFILE=/etc/ssl/server.pem