logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:reseau:apache2:tp01 [23/09/2014 19:02]
Hypathie [Sécuriser son site web]
doc:reseau:apache2:tp01 [25/09/2014 09:04]
Hypathie [OpenSSL : créer un certificat avec apache2]
Ligne 141: Ligne 141:
  
   * **D'​abord,​ un fichier contenant le code source de la page web**:   * **D'​abord,​ un fichier contenant le code source de la page web**:
-Il doit être créé dans /var/www/, mais on placera ce fichier de code, dans un dossier qu'il faudra créer dans /​var/​www/​dossier-du-site/​fichier.html.+Il doit être créé dans /​var/​www/ ​:  ​/​var/​www/​dossier-du-site/​fichier.html.
  
   * **Ensuite pour que apache gère ce site** :   * **Ensuite pour que apache gère ce site** :
Ligne 733: Ligne 733:
 Pour aller plus loin, par exemple pour la rotation des journaux voir [[http://​httpd.apache.org/​docs/​trunk/​fr/​logs.html]] Pour aller plus loin, par exemple pour la rotation des journaux voir [[http://​httpd.apache.org/​docs/​trunk/​fr/​logs.html]]
  
-====OpenSSL : créer un certificat avec apache2 ====+=====OpenSSL : créer un certificat avec apache2 ​=====
 ===Le protocole ssl === ===Le protocole ssl ===
 Le protocole ssl (Secure Socket Layer) permet la sécurisation des communications entre un serveur et un client, au moyen : Le protocole ssl (Secure Socket Layer) permet la sécurisation des communications entre un serveur et un client, au moyen :
Ligne 775: Ligne 775:
 </​note>​ </​note>​
  
 +====Créer un certificat auto-signé pour le site "​default-ssl"​====
 +Cela ne garantira pas d'une éventuelle usurpation d'​identité.\\ ​
 +Le certificat auto-signé c'est bien pour l'​apprentissage en local ! 
  
 ===ssl dans la configuration d'​Apache2 === ===ssl dans la configuration d'​Apache2 ===
Ligne 783: Ligne 786:
 <code root>ls /​etc/​apache2/​mods-available | grep ssl.*</​code>​ <code root>ls /​etc/​apache2/​mods-available | grep ssl.*</​code>​
  
-Il doit y avoir ''​ssl.conf''​ et ''​ssl.load''​. Sinon il faut installer le module ​ssl ''​a2enmod ​ssl''​\\ ​+Il doit y avoir ''​ssl.conf''​ et ''​ssl.load''​. Sinon il faut **installer** (ne pas l'​activer tout de suite).\\  
 + 
 +====Configurer un virualhost ssl==== 
 +===Création des clé et certificat === 
 + 
 +Pour cela on va se servir de l'​utilitaire openssl. 
 + 
 +  * Création du répertoire où l'on rangera sa clé privée : 
 +<code root>cd /​etc/​apache2/​ && mkdir ssl</​code>​ 
 +  * Création de la clé privée et du certificat : 
 +<​note>​ 
 +__**La commande qui suit cette note, peut s'​effectuer en quatre étapes:​**__\\  
 + 
 +1) **Création de la clé privée** : par exemple ''​openssl genrsa 1024 > /​etc/​apache2/​ssl/​apache.key''​ 
 + 
 +2) **À partir de cette clé privée, on crée un certificat CSR qui contient une clé publique** à faire signer : ''​openssl req -new -key /​etc/​apache2/​ssl/​apache.key > /​etc/​apache2/​ssl/​apache.csr''​ 
 + 
 +=> C'est ce certificat qu'il faut faire signer par une autorité de certification (CA) 
 +Ou qu'il faudra auto-signer. 
 + 
 +3) **On décide d'​auto-signer ce certificat donc on crée une clé privée qui serait celle du CA officielle** : ''​openssl genrsa -des3 1024 > ca.key''​\\  
 +-on peut ajouter -des3 qui introduit l'​usage d'une "​passphrase"​\\  
 +-c'est cette clé privée qui signera tous les certificats que l'on émettra ; cette "​passphrase"​ sera donc demandée à chaque utilisation de la clé. 
 + 
 +4) **Puis à 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''​\\  
 +-On répondrait à nouveau aux questions, mais on changerait la réponse relative à "​Common Name"​. 
 + 
 +5) **Enfin il faudrait faire signer notre certificat de demande de signature par le certificat du CA (qui a été fait par nous-même) :**\\  
 +''​openssl x509 -req -in /​etc/​apache2/​ssl/apache.csr -out /​etc/​apache2/​ssl/​apache.crt -CA ca.crt -CAkey ca.key\ 
 +-CAcreateserial -CAserial ca.srl''​\\ 
 + 
 +Dans ce qui suit on a sauté les quatre premières étapes.\\ Mais pour créer une connexion privée et sécurisée entre le serveur et le client qui s'y connecterait,​ il faudrait utiliser le  
 +</​note>​ 
 + 
 +<code root>​openssl req -x509 -nodes -days 365\ 
 + ​-newkey rsa:1024 -keyout /​etc/​apache2/​ssl/​apache.key\ 
 + -out /​etc/​apache2/​ssl/​apache.crt 
 +</​code>​ 
 + 
 + 
 +> -x509 -nodes : type de certificat 
 +> -days 365 : durée de vie du certificat (en jours) 
 +> - newkey rsa:1024 : clé rsa de 1024 bits 
 +> -out /​chemin/​fichier/​certificat : crée le fichier du certificat 
 +> -keyout /​chemin/​fichier/​clé : chemin du fichier de sa clé privée 
 + 
 +<note tip> 
 +__**Il faut répondre à une suite de question**__ :  
 +La plus importante est "​Common Name": il faut répondre par le nom de domaine ou l'ip public du serveur concerné. Dans le cas de cette exemple, l'ip locale (fixe) du serveur fera l'​affaire ou nom de domaine.\\  
 + 
 +Par exemple :\\  
 +Country Name (2 letter code) [AU]:FR\\  
 +State or Province Name (full name) [Some-State]:​France\\  
 +Locality Name (eg, city) []:​Chambery\\  
 +Organization Name (eg, company) [Internet Widgits Pty Ltd]:\\  
 +Organizational Unit Name (eg, section) []:\\  
 +Common Name (e.g. server FQDN or YOUR name) []:​192.168.0.13 \\    
 +Email Address []:​example@gmx.fr\\  
 +</​note>​ 
 + 
 +  * Restreindre les droits sur le fichier de clé privée, aux droits de lecture seulement, et pour root: 
 +<code root>​chmod 400 /​etc/​apache2/​ssl/​apache.key</​code>​ 
 + 
 +===Le virtualhost "​defaut-ssl"​ === 
 + 
 +Sur debian, c'est le fichier **/​etc/​apache2/​sites-available/​default-ssl** qui est le Virtualhost par défaut. Il faut lui créer un certificat qui servira pour le virtualhost de "​monsite.com"​. 
 + 
 +  * Il faut ensuite éditer le fichier /​etc/​apache2/​sites-available/​default-ssl pour ajouter le certificat et la clé privée. 
 +<code root>vim /​etc/​apache2/​sites-available/​default-ssl</​code>​ 
 +On ne va modifier que les lignes : 
 +<​code> ​       #   ​SSLCertificateFile directive is needed. 
 +        SSLCertificateFile ​   /​etc/​apache2/​ssl/​apache.crt 
 +        SSLCertificateKeyFile /​etc/​apache2/​ssl/​apache.key</​code>​ 
  
   * Il faut activer le module ssl :   * Il faut activer le module ssl :
Ligne 797: Ligne 873:
 lrwxrwxrwx 1 root root 26 sept. 23 17:34 ssl.load -> ../​mods-available/​ssl.load</​code>​ lrwxrwxrwx 1 root root 26 sept. 23 17:34 ssl.load -> ../​mods-available/​ssl.load</​code>​
  
 +  * Il faut activer le site "​default-ssl"​
 +<code root>​a2ensite default-ssl</​code>​
 +<code root>​service apache2 reload</​code>​
  
-  * Le fichier du virtualhost qui utilse le module: +-> Il correspond comme le site "​default"​ au fichier ​"/​etc/​apache2/​mods-enabled/000-default
-Sur debian c'​est ​le fichier ​**/​etc/​apache2/​sites-available/default-ssl** qui il contient contient le Virtualhost qu'on peut utiliser par défaut pour créer celui qu'on voudrait ajouter. +
-<code root>​less /​etc/​apache2/​sites-available/​default-ssl</​code>​+
  
-Il est long mais intéressant !+  * Visualiser la page par défaut dans son navigateur : 
 +<​code>​https://​192.168.0.13/</​code>​
  
-====Créer un certificat auto-signé ==== +<​code>​It works!
-Cela n'est pas suffisant contre le vol d'​identité,​ mais une fois cela fait, il ne restera plus qu'à faire signer son certificat, et d'​ajouter cette signature à la configuration d'​apache avant d'​exposer son site aux yeux de tous.+
  
-===L'​utilitaire OpenSSL=== +This is the default web page for this server
-C'est l'​utilitaire qui permet de mettre en place les certificats+La date du jour est 24/09/2014! </​code>​
-Comme le module ssl, il est installé aussi par défaut l'​utilitaire OpenSSL.\\ ​+
  
-<​note>​ +===Ajout du virualhost "​monsite.com"​ === 
-  * __Le dossier de configuration de OpenSSL est /​etc/​ssl/​__ ​+  * On désactive le site 
-Il contient deux dossiers et un fichier : +<code root>a2ensite monsite.com</code>
--**/​etc/​ssl/​openssl.cnf** +
-Fichier de configuration de opensl. On y met les directives. On peut y mettre son /home, l'​autorité de certification ... +
--> le dossier **/​etc/​ssl/​cert/​** : il contient nos certificats +
-  * le dossier **/​etc/​ssl/​private/​** : il contient nos clés privées  +
-</note>+
  
-Par exemple ​:+  * On sauvegarde le fichier /​etc/​apache2/​sites-available/​monsite.com ​: 
 +<code root>cp /​etc/​apache2/​sites-available/​monsite.com\ 
 + /​etc/​apache2/​sites-available/​monsite.com-OLD</​code>​
  
-<code root>openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/ssl/certs/monsite.com.crt ​-keyout ​/etc/ssl/private/​monsite.com.key</​code>​+  * On créer un fichier pour le virtualhost de "​monsite.com"​ avec ssl : 
 +<code root>cp /etc/apache2/sites-available/default-ssl\ 
 + /etc/apache2/sites-available/​monsite.com</​code>​
  
--x509 -nodes ​type de certificat +<code><​IfModule mod_ssl.c>​ 
--days 365 : durée de vie du certificat (en jours) +<​VirtualHost *:443> 
-- newkey rsa:1024 : clé rsa de 1024 bits +        ​ServerAdmin webmaster@localhost 
-> -out /chemin/fichier/du_certificat : crée le fichier du certificat +        ServerName monsite.com 
-> -keyout ​/etc/apache2/​server.key : chemin du fichier de sa clé privée+        DocumentRoot /​var/​www/​monsite.com 
 +        <​Directory /
 +                ​Options FollowSymLinks 
 +                AllowOverride None 
 +        </​Directory
 +        <​Directory /​var/​www/​monsite.com/​> 
 +                Options Indexes FollowSymLinks MultiViews 
 +                AllowOverride None 
 +                Order allow,​deny 
 +                allow from all 
 +        </​Directory>​ 
 +        ScriptAlias /cgi-bin/ /usr/​lib/​cgi-bin
 +        <​Directory "/​usr/​lib/​cgi-bin"​> 
 +                AllowOverride None 
 +                Options +ExecCGI ​-MultiViews +SymLinksIfOwnerMatch 
 +                Order allow,​deny 
 +                Allow from all 
 +        </Directory>​ 
 +        ErrorLog ${APACHE_LOG_DIR}/error.log
  
-On répond aux questions, par exemple ​+        # Possible values includedebug, info, notice, warn, error, crit, 
-<​code>​ +        # alert, emerg. 
-Country Name (2 letter code) [AU]:FR +        ​LogLevel warn 
-State or Province Name (full name[Some-State]:​France + 
-Locality Name (eg, city) []:Chambery +        CustomLog ${APACHE_LOG_DIR}/​ssl_access.log combined 
-Organization Name (eg, company) [Internet Widgits Pty Ltd]:​chez_moi +         
-Organizational Unit Name (eg, section) ​[]: +        SSLEngine on 
-Common Name (e.gserver FQDN or YOUR name) []:​monsite.com +        SSLCertificateFile ​   /​etc/​apache2/​ssl/​apache.crt 
-Email Address ​[]:​example@gmx.fr+        SSLCertificateKeyFile /​etc/​apache2/​ssl/​apache.key 
 +        <​FilesMatch "\.(cgi|shtml|phtml|php)$">​ 
 +                SSLOptions +StdEnvVars 
 +        </​FilesMatch>​ 
 +        <​Directory /​usr/​lib/​cgi-bin> 
 +                ​SSLOptions +StdEnvVars 
 +        </​Directory>​ 
 + 
 +        BrowserMatch "​MSIE ​[2-6]" \ 
 +                ​nokeepalive ssl-unclean-shutdown \ 
 +                downgrade-1.0 force-response-1.0 
 +        # MSIE 7 and newer should be able to use keepalive 
 +        BrowserMatch "​MSIE ​[17-9]" ssl-unclean-shutdown 
 +</​VirtualHost>​ 
 +</​IfModule>​
 </​code>​ </​code>​
-<​note>​ 
-Pour un certificat auto-signé,​ il faut répondre à la question "​Common Name" le nom du domaine à protéger</​note>​ 
  
-  * On vérifie la commande oppenssl a crée deux fichiers ​:+  * On active "​monsite.com" ​: 
 +<code root>​a2ensite monsite.com</​code>​ 
 +Et on recharge apache2 
 +<code root>​service apache2 reload</​code>​
  
-<code root>​ls ​/etc/ssl/certs/ | grep monsite.com.crt</​code>​ +  * Dans le navigateur : 
-<​code>​monsite.com.crt</​code>​+''​https:​//ip-serveur/​monsite.com''​ 
 + 
 +<​code>​Bravo !
  
-<code root>ls /​etc/​ssl/​private/​ | grep monsite.com.key</​code>​ +La mise en place d'un Virtualhost est réussie !</​code>​
-<​code>​monsite.com.key</​code>​+
  
-  * Restreindre aux droits de lecture seulement et seulement pour root: +Et ''​https://ip-serveur/​monsite.com/​public_html''​
-<code root>​chmod 400 /etc/ssl/private/​monsite.com.key</code>+
  
 +<​code>​Bienvenue sur monsite.com
  
 +Site en cours de réalisation !
 +La date du jour est 24/​09/​2014!</​code>​
  
 +Et voilà ;-)
doc/reseau/apache2/tp01.txt · Dernière modification: 01/11/2019 08:43 par smolski

Pied de page des forums

Propulsé par FluxBB