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:06] 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). |
- | openssl genrsa 1024 > servwiki.key | ||
- | La sortie attendue est la suivante : | + | Installation du module |
+ | <code bash> | ||
+ | sudo apt-get install libapache2-mod-gnutls | ||
+ | </ | ||
- | Generating RSA private key, 1024 bit long modulus | + | 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> |
- | .................................................................++++++ | + | sudo a2dismod ssl |
- | e is 65537 (0x10001) | + | </ |
+ | On active ensuite le module GnuTLS : | ||
+ | <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 le serveur Apache avec la commande : |
+ | <code bash> | ||
+ | sudo /etc/init.d/apache2 restart | ||
+ | </ | ||
- | Ceci a pour effet de créer une clé SSL (fichier servwiki.key), | + | Configuration spécifique |
- | Vous pouvez observer son contenu : less servwiki.key | + | Activer le SNI |
- | -----BEGIN RSA PRIVATE KEY----- | + | Pour activer la possibilité d’avoir plusieurs sites différents utilisant le port 443 (ssl), il faut utiliser la directive NameVirtualHost. |
- | MIICXgIBAAKBgQDQG9wvnuLC4aqzaJCAWGA1AxFzg00hjPObhq1mukzsGyuuWBFG | + | |
- | vj/ | + | |
- | 8w/ | + | |
- | AoGAHi0cBW+1k+qjFPbBlUq7UJSMUEKmyYmlvVSPCklTZB0gfVxZzPdDTpEcNks/ | + | |
- | yo+rLFSD9Vsvy/ | + | |
- | ZCf0CAs6wBft3yLU31Qc4WqVM2vTyUH76jebVhxEw8k63OUCQQD/ | + | |
- | ZTPFbzUeAE5rQqqOW4aoMNvM61Yn/ | + | |
- | g1okfogTAkEA0D7pDf/ | + | |
- | FZbjHJ4UcYyYaA8jIrkY+FIJM88YlGbWXwJBAILEdvJ5R/ | + | |
- | En8fw43XI5L0PB7Hxx6KDLVu4XzVYQyahTZBdqR0eMlUNZJBhJE2tO3wi2cCQQCp | + | |
- | JkCFd3es0BrNxqfzlThozRFofcz88za7TldydL0YcFtC4Sb4vWsYizwktZ6jcPEm | + | |
- | rQz8Gl9W7MO+ynwLptB/ | + | |
- | 2LImp/ | + | |
- | -----END RSA PRIVATE KEY----- | + | |
- | Protégez votre fichier | + | On édite le fichier |
+ | <code bash> | ||
+ | sudo nano / | ||
+ | </ | ||
- | De multiples autres options sont possibles mais il est inutile d' | + | Et ajouter dans la partie < |
+ | <code bash> | ||
+ | NameVirtualHost *:443 | ||
+ | </ | ||
- | A partir de votre clé, vous allez maintenant créer | + | Création d’un virtualhost |
- | On génère la demande de certificat avec la commande suivante | + | On peut maintenant créer un virtualhost qui se crée exactement comme pour un site normal |
- | openssl req -new -key servwiki.key > servwiki.csr | + | sudo nano / |
- | Le système va vous demander de saisir des champs ; remplissez-les en adaptant sauf le champ " | + | Copier dans le presse-papier |
- | Country Name (2 letter code) [AU]:FR | + | On y ajoute la configuration de base suivante par exemple, conditionnée à la présence du module gnutls |
- | 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 []: | + | |
- | Ce n'est pas la peine de saisir d' | + | < |
+ | < | ||
+ | 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}/ | ||
+ | </ | ||
+ | </ | ||
- | 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 : | + | NB : Attention pour le moment, nous n’avons toujours pas créé de certificat |
+ | Modification de vos certificats pour mod_gnutls | ||
- | -----BEGIN CERTIFICATE REQUEST----- | ||
- | MIIBsTCCARoCAQAwcTELMAkGA1UEBhMCRlIxFTATBgNVBAgTDENvcnNlIGR1IFN1 | ||
- | ZDEQMA4GA1UEBxMHQWphY2NpbzEMMAoGA1UEChMDTExCMREwDwYDVQQLEwhCVFMg | ||
- | SU5GTzEYMBYGA1UEAxMPcHJvZi5idHNpbmZvLmZyMIGfMA0GCSqGSIb3DQEBAQUA | ||
- | A4GNADCBiQKBgQDSUagxPSv3LtgDV5sygt12kSbN/ | ||
- | 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 > ca.crt | ||
- | |||
- | Il faut saisir la passphrase... puisqu' | ||
- | |||
- | Attention : le nom de " | ||
- | |||
- | Country Name (2 letter code) [AU]:FR | ||
- | State or Province Name (full name) [Some-State]: | ||
- | Locality Name (eg, city) []:Ajaccio | ||
- | Organization Name (eg, company) [Internet Widgits Pty Ltd]:LLB | ||
- | Organizational Unit Name (eg, section) []:BTSINFO | ||
- | Common Name (eg, YOUR name) []:cert_CA | ||
- | 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' | ||
- | |||
- | " | ||
- | |||
- | Sous Windows, un clic droit ou double-clic sur le fichier devrait vous permettre de lancer l' | ||
- | |||
- | sur Mozilla : | ||
- | |||
- | Edition/ | ||
- | |||
- | Bouton de commande : gestion des certificats | ||
- | |||
- | Onglet : autorité | ||
- | |||
- | Bouton de commande : importer | ||
- | |||
- | etc... | ||
- | |||
- | Il ne reste plus maintenant qu'à configurer apache2. |