This is an old revision of the document!
Connectez-vous sous root et allez dans le répertoire de configuration de votre serveur Apache2 /etc/apache2 (on peut évidemment choisir un autre répertoire) et créez un répertoire appelé ssl. Vous vous placerez dans ce répertoire afin que les clés et les certificats soient créés à l'intérieur avant d'effectuer les manipulations. Création du certificat serveur
Génération de la clé privée
On génère la clef privée avec la commande suivante en définissant un nom de fichier :
openssl genrsa 2048 > ltc.key
La sortie attendue est la suivante :
Generating RSA private key, 2048 bit long modulus ..................++++++ .................................................................++++++ e is 65537 (0x10001)
Si vous souhaitez que cette clé ait un mot de passe (qui vous sera demandé à chaque démarrage d'apache, donc à éviter !), ajoutez “-des3” après “genrsa”.
Ceci a pour effet de créer une clé SSL (fichier servwiki.key), ne la perdez pas… c'est votre clé privée… (ni éventuellement le mot de passe) !
Vous pouvez observer son contenu : less ltc.key
-----BEGIN RSA PRIVATE KEY----- MIICXgIBAAKBgQDQG9wvnuLC4aqzaJCAWGA1AxFzg00hjPObhq1mukzsGyuuWBFG vj/k9vFNYX55DHctb/4cXtsZRWWvgcjtYnCVwRu+DAjFsk//kOMfhplmiv9xQ+ZL 8w/Xrnm8JWdSS+S4LCMnsuIiQtLbhMrQnUV02hAtbIZiSM3k6OjShEZhDQIDAQAB AoGAHi0cBW+1k+qjFPbBlUq7UJSMUEKmyYmlvVSPCklTZB0gfVxZzPdDTpEcNks/ yo+rLFSD9Vsvy/9LGmLoXruadWlK67PCUnpM5/oRRGgy8t73YKrxflAU5Gtymjvc ZCf0CAs6wBft3yLU31Qc4WqVM2vTyUH76jebVhxEw8k63OUCQQD/1OmAXV+TxBPG ZTPFbzUeAE5rQqqOW4aoMNvM61Yn/19h6SzY2MfSQvF1BNns/efCRrqOMeyvPWUG g1okfogTAkEA0D7pDf/D2Yu5msbOAGF4QBU1erLzpi/s6Rv6VEPYCGnHQlo3jbg9 FZbjHJ4UcYyYaA8jIrkY+FIJM88YlGbWXwJBAILEdvJ5R/CFCkKf2j2yIWmLaIol En8fw43XI5L0PB7Hxx6KDLVu4XzVYQyahTZBdqR0eMlUNZJBhJE2tO3wi2cCQQCp JkCFd3es0BrNxqfzlThozRFofcz88za7TldydL0YcFtC4Sb4vWsYizwktZ6jcPEm rQz8Gl9W7MO+ynwLptB/AkEA1tsnFXoYzI71enmTdugGxbv0RqAd5iQpDYQkDSdn 2LImp/3YnXNJ9qpY91j87tKthh/Oetu6SHlmLg1LOYNIdw== -----END RSA PRIVATE KEY-----
Protégez votre fichier en faisant : chmod 400 ltc.key
De multiples autres options sont possibles mais il est inutile d'alourdir le sujet (à creuser pour une éventuelle PTI…)
A partir de votre clé, vous allez maintenant créer un fichier de demande de signature de certificat (CSR Certificate Signing Request).
On génère la demande de certificat avec la commande suivante :
openssl req -new -key ltc.key > ltc.csr
Le système va vous demander de saisir des champs ; remplissez-les en adaptant sauf le champ “Common Name” qui doit être identique au nom d'hôte de votre serveur virtuel :
Country Name (2 letter code) [AU]:be State or Province Name (full name) [Some-State]:brussels Locality Name (eg, city) []:brussels Organization Name (eg, company) [Internet Widgits Pty Ltd]:ulb Organizational Unit Name (eg, section) []:ltc Common Name (eg, YOUR name) []:ltc.ulb.ac.be Email Address []:
Ce n'est pas la peine de saisir d'autres “extra attributes”…
Ceci a pour effet de créer le formulaire de demande de certificat (fichier servwiki.csr) à partir de notre clé privée préalablement créée.
Ce fichier contient la clé publique à certifier. Un less servwiki.csr nous donne :
-----BEGIN CERTIFICATE REQUEST----- MIIBsTCCARoCAQAwcTELMAkGA1UEBhMCRlIxFTATBgNVBAgTDENvcnNlIGR1IFN1 ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExCMREwDwYDVQQLEwhCVFMg SU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZvLmZyMIGfMA0GCSqGSIb3DQEBAQUA A4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12kSbN/NWP0QUiPlksOkF2NkPfwW/m f55dD1hSndlOM/5kLbSBo5ieE3TgikF0IktjBWm5xSqewM5QDYzXFt031DrPX63F vo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLWwc0BzEgFZGGw7wiMF6wt5QIDAQAB oAAwDQYJKoZIhvcNAQEEBQADgYEAwwI4UvkfhBvyRrUXtjrLfZXLxZlF9o+URmHJ ysvrLKfesVBEzdA9mqk1OwIwLfe8Fw2fhip2LGqvcCPxDMoIE/0cDkqGRg9iKp7D DMuy69lPTEB6UtpVKO/1eage0oug6VqdfGAYMMSGyWFuO9FE4UE6HspVodb20wGV 4H8qZuk= -----END CERTIFICATE REQUEST-----
Maintenant il faut envoyer le fichier .csr à la Cellule Web/Centre de Calcul (Michel Jansens) et ainsi obtenir le certificat dûment signé par la société DigiCert. Ce certificat est placé dans le même répertoire que la clef /etc/apache2/ssl/
En pratique on reçoit deux fichiers crt ; un qui correspond au serveur à sécuriser et un autre de l'Autorité de Certification. Ces deux fichiers doivent être mentionnés dans la configuration d'Apache.
GnuTLS ne gère pas tout à fait les mêmes directives que mod_ssl pour l’indication des certificats, clés et chaînes nécessaires.
Les directives suivantes remplacent celles de mod_ssl :
GnuTLSCertificateFile remplace SSLCertificateFile ; GnuTLSKeyFile remplace SSLCertificateKeyFile ; GnuTLSClientCAFile remplace SSLCACertificateFile (?);
On ajoute dans notre virtualhost :
GnuTLSEnable on GnuTLSKeyFile /etc/apache2/ssl/ltc.key GnuTLSClientCAFile /etc/apache2/ssl/DigiCertCA.crt GnuTLSCertificateFile /etc/apache2/ssl/ltc_ulb_ac_be.crt GnuTLSPriorities NONE:+VERS-TLS1.1:+VERS-TLS1.0:+AES-256-CBC:+DHE-RSA:+RSA:+SHA1:+COMP-NULL:+COMP-DEFLATE
Références en ligne :
http://blog.lumo.fr/securiser-les-virtualhosts-dapache-grace-a-gnutls.html
https://wiki.archlinux.org/index.php/Apache_HTTP_Server/mod_gnutls