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 →
Ci-dessous, les différences entre deux révisions de la page.
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 07:19] 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-sll"==== | ||
+ | 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 ==== | ||
+ | ===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". | ||
+ | |||
+ | Pour cela on va se servir de l'utilitaire openssl. | ||
+ | |||
+ | * Création du certificat : | ||
+ | <code root>cd /etc/apache2/ && mkdir ssl</code> | ||
+ | <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.\\ | ||
+ | |||
+ | 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) []:monsite.com | ||
+ | Email Address []:example@gmx.fr | ||
+ | </note> | ||
+ | |||
+ | * 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> | ||
+ | |||
+ | * 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> | ||
* Il faut activer le module ssl : | * Il faut activer le module ssl : | ||
Ligne 797: | Ligne 845: | ||
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 include: debug, 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.g. server 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à ;-) |