This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dev:mise_en_place_d_un_serveur_https [2020/01/10 09:08] rdaulie |
dev:mise_en_place_d_un_serveur_https [2024/04/04 10:19] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | Connectez-vous sous root et allez dans le répertoire de configuration de votre serveur Apache2 / | ||
| - | Création du certificat serveur | ||
| - | Génération de la clé privée | + | GnuTLS contrairement au plus utilisé mod_ssl est une implémentation libre du protocole SSL pour Apache. |
| - | On génère | + | Il supporte le SNI (Server Name Indication) permettant d’avoir plusieurs sites protégés par SSL sur la même adresse IP contrairemnt à mod_ssl (du moins sur les implémentations anciennes). |
| + | |||
| + | |||
| + | Installation du module | ||
| <code bash> | <code bash> | ||
| - | openssl genrsa 1024 > servwiki.key | + | sudo apt-get install libapache2-mod-gnutls |
| </ | </ | ||
| - | La sortie attendue est la suivante | + | |
| + | On n’oublie pas de désactiver le module mod_ssl si présent pour éviter d’utiliser deux fois le port 443 : | ||
| <code bash> | <code bash> | ||
| - | Generating RSA private key, 1024 bit long modulus | + | sudo a2dismod ssl |
| - | ..................++++++ | + | </ |
| - | .................................................................++++++ | + | On active ensuite le module GnuTLS : |
| - | e is 65537 (0x10001) | + | <code bash> |
| + | sudo a2enmod gnutls | ||
| </ | </ | ||
| - | Si vous souhaitez que cette clé ait un mot de passe (qui vous sera demandé à chaque démarrage d' | + | On doit ensuite redémarrer |
| - | + | ||
| - | Ceci a pour effet de créer une clé SSL (fichier servwiki.key), | + | |
| - | + | ||
| - | Vous pouvez observer son contenu | + | |
| <code bash> | <code bash> | ||
| - | -----BEGIN RSA PRIVATE KEY----- | + | sudo /etc/init.d/apache2 restart |
| - | MIICXgIBAAKBgQDQG9wvnuLC4aqzaJCAWGA1AxFzg00hjPObhq1mukzsGyuuWBFG | + | |
| - | vj/k9vFNYX55DHctb/4cXtsZRWWvgcjtYnCVwRu+DAjFsk// | + | |
| - | 8w/ | + | |
| - | AoGAHi0cBW+1k+qjFPbBlUq7UJSMUEKmyYmlvVSPCklTZB0gfVxZzPdDTpEcNks/ | + | |
| - | yo+rLFSD9Vsvy/ | + | |
| - | ZCf0CAs6wBft3yLU31Qc4WqVM2vTyUH76jebVhxEw8k63OUCQQD/ | + | |
| - | ZTPFbzUeAE5rQqqOW4aoMNvM61Yn/ | + | |
| - | g1okfogTAkEA0D7pDf/ | + | |
| - | FZbjHJ4UcYyYaA8jIrkY+FIJM88YlGbWXwJBAILEdvJ5R/ | + | |
| - | En8fw43XI5L0PB7Hxx6KDLVu4XzVYQyahTZBdqR0eMlUNZJBhJE2tO3wi2cCQQCp | + | |
| - | JkCFd3es0BrNxqfzlThozRFofcz88za7TldydL0YcFtC4Sb4vWsYizwktZ6jcPEm | + | |
| - | rQz8Gl9W7MO+ynwLptB/ | + | |
| - | 2LImp/ | + | |
| - | -----END RSA PRIVATE KEY----- | + | |
| </ | </ | ||
| - | Protégez votre fichier en faisant : chmod 400 servwiki.key | + | Configuration spécifique |
| - | De multiples autres options sont possibles mais il est inutile d' | + | Activer |
| - | A partir de votre clé, vous allez maintenant créer un fichier de demande de signature de certificat | + | Pour activer la possibilité d’avoir plusieurs sites différents utilisant le port 443 (ssl), il faut utiliser la directive NameVirtualHost. |
| - | On génère la demande | + | On édite le fichier |
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| - | openssl req -new -key servwiki.key > servwiki.csr | + | Et ajouter dans la partie < |
| - | + | <code bash> | |
| - | Le système va vous demander de saisir des champs ; remplissez-les en adaptant sauf le champ " | + | NameVirtualHost *:443 |
| - | + | </code> | |
| - | Country Name (2 letter code) [AU]:FR | + | |
| - | State or Province Name (full name) [Some-State]: | + | |
| - | Locality Name (eg, city) []: | + | |
| - | Organization Name (eg, company) [Internet Widgits Pty Ltd]:LLB | + | |
| - | Organizational Unit Name (eg, section) []: | + | |
| - | Common Name (eg, YOUR name) []:wiki.domain1.org | + | |
| - | Email Address []: | + | |
| - | + | ||
| - | Ce n'est pas la peine de saisir d' | + | |
| - | + | ||
| - | 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/ | + | |
| - | f55dD1hSndlOM/ | + | |
| - | vo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLWwc0BzEgFZGGw7wiMF6wt5QIDAQAB | + | |
| - | oAAwDQYJKoZIhvcNAQEEBQADgYEAwwI4UvkfhBvyRrUXtjrLfZXLxZlF9o+URmHJ | + | |
| - | ysvrLKfesVBEzdA9mqk1OwIwLfe8Fw2fhip2LGqvcCPxDMoIE/ | + | |
| - | DMuy69lPTEB6UtpVKO/ | + | |
| - | 4H8qZuk= | + | |
| - | -----END CERTIFICATE REQUEST----- | + | |
| - | + | ||
| - | + | ||
| - | Maintenant, deux choix s' | + | |
| - | + | ||
| - | envoyer le fichier servwiki.csr à un organisme (le tiers de confiance ou l' | + | |
| - | + | ||
| - | ou bien signer vous-même le certificat. | + | |
| - | + | ||
| - | Ce dernier choix a notre préférence... | + | |
| - | Création du certificat de l' | + | |
| - | + | ||
| - | Pour signer un certificat, vous devez devenir votre propre autorité de certification, | + | |
| - | + | ||
| - | La création de la clé privée de l' | + | |
| - | + | ||
| - | openssl genrsa -des3 1024 > ca.key | + | |
| - | + | ||
| - | Ce qui a pour effet de créer la clé privée de l' | + | |
| - | + | ||
| - | Ensuite, à partir de la clé privée, on crée un certificat x509 pour une durée de validité d'un an auto-signé | + | |
| - | + | ||
| - | openssl req -new -x509 -days 365 -key ca.key | + | |
| - | + | ||
| - | Il faut saisir la passphrase... puisqu' | + | |
| - | + | ||
| - | Attention | + | |
| - | + | ||
| - | Country Name (2 letter | + | |
| - | State or Province Name (full name) [Some-State]: | + | |
| - | Locality Name (eg, city) []: | + | |
| - | Organization Name (eg, company) [Internet Widgits Pty Ltd]:LLB | + | |
| - | Organizational Unit Name (eg, section) []: | + | |
| - | Common Name (eg, YOUR name) []: | + | |
| - | Email Address []: | + | |
| - | + | ||
| - | C'est notre certificat d' | + | |
| - | La signature du certificat serveur par le CA (Certificate Autority) | + | |
| - | + | ||
| - | La commande qui signe la demande de certificat est la suivante : | + | |
| - | + | ||
| - | openssl x509 -req -in servwiki.csr -out servwiki.crt -CA ca.crt -CAkey ca.key\ | + | |
| - | -CAcreateserial -CAserial ca.srl | + | |
| - | + | ||
| - | L' | + | |
| - | + | ||
| - | Il faut saisir la passphrase... | + | |
| - | + | ||
| - | Le certificat signé est le fichier " | + | |
| - | + | ||
| - | Signature ok | + | |
| - | subject=/ | + | |
| - | Getting CA Private Key | + | |
| - | Enter pass phrase for ca.key: | + | |
| - | + | ||
| - | Vous avez maintenant un certificat pour votre serveur se nommant servwiki.crt. | + | |
| - | + | ||
| - | less servwiki.crt | + | |
| - | + | ||
| - | -----BEGIN CERTIFICATE----- | + | |
| - | MIICVDCCAb0CAQEwDQYJKoZIhvcNAQEEBQAwdDELMAkGA1UEBhMCRlIxFTATBgNV | + | |
| - | BAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExC | + | |
| - | MREwDwYDVQQLEwhCVFMgSU5GTzEbMBkGA1UEAxMSc2VydmV1ci5idHNpbmZvLmZy | + | |
| - | MB4XDTA0MDIwODE2MjQyNloXDTA0MDMwOTE2MjQyNlowcTELMAkGA1UEBhMCRlIx | + | |
| - | FTATBgNVBAgTDENvcnNlIGR1IFN1ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UE | + | |
| - | ChMDTExCMREwDwYDVQQLEwhCVFMgSU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZv | + | |
| - | LmZyMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12 | + | |
| - | kSbN/ | + | |
| - | BWm5xSqewM5QDYzXFt031DrPX63Fvo+tCKTQoVItdEuJPMahVsXnDyYHeUURRWLW | + | |
| - | wc0BzEgFZGGw7wiMF6wt5QIDAQABMA0GCSqGSIb3DQEBBAUAA4GBALD640iwKPMf | + | |
| - | pqdYtfvmLnA7CiEuao60i/ | + | |
| - | kSK6OOauBHItgiGI7C87u4EJaHDvGIUxHxQQGsUM0SCIIVGK7Lwm+8e9I2X0G2GP | + | |
| - | 9t/ | + | |
| - | -----END CERTIFICATE----- | + | |
| - | + | ||
| - | Il faut maintenant installer le certificat de l' | + | |
| - | Installation du certificat d' | + | |
| - | Pour installer sur votre navigateur le certificat de l' | + | Création d’un virtualhost |
| - | " | + | On peut maintenant créer un virtualhost qui se crée exactement comme pour un site normal : |
| - | | + | |
| - | sur Mozilla : | + | Copier dans le presse-papier |
| - | Edition/ | + | On y ajoute la configuration de base suivante par exemple, conditionnée à la présence du module gnutls : |
| - | Bouton de commande | + | < |
| + | < | ||
| + | ServerAdmin webmaster@localhost | ||
| + | ServerName domaine.tld | ||
| + | |||
| + | DocumentRoot /var/www | ||
| + | < | ||
| + | Options FollowSymLinks | ||
| + | AllowOverride None | ||
| + | </ | ||
| + | < | ||
| + | Options Indexes FollowSymLinks MultiViews | ||
| + | AllowOverride None | ||
| + | Order allow, | ||
| + | allow from all | ||
| + | </ | ||
| + | |||
| + | ScriptAlias /cgi-bin/ / | ||
| + | < | ||
| + | AllowOverride None | ||
| + | Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch | ||
| + | Order allow, | ||
| + | Allow from all | ||
| + | </ | ||
| + | |||
| + | ErrorLog ${APACHE_LOG_DIR}/ | ||
| + | |||
| + | # Possible values include: debug, info, notice, warn, error, crit, | ||
| + | # alert, emerg. | ||
| + | LogLevel warn | ||
| + | |||
| + | CustomLog ${APACHE_LOG_DIR}/ | ||
| + | </ | ||
| + | </ | ||
| - | Onglet : autorité | ||
| - | Bouton de commande | + | NB : Attention pour le moment, nous n’avons toujours pas créé de certificat |
| + | Modification de vos certificats pour mod_gnutls | ||
| - | etc... | ||
| - | Il ne reste plus maintenant qu'à configurer apache2. | ||