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 [24/09/2014 07:27] Hypathie [Sécuriser son site web] |
||
---|---|---|---|
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 783: | Ligne 783: | ||
<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).\\ |
- | * Il faut activer le module ssl : | + | ===Configurer le virual host par défaut === |
- | <code root>a2enmod ssl</code> | + | |
- | puis | + | |
- | <code root>service apache2 restart</code> | + | |
- | La commande ''a2enmod ssl'' a crée dans /etc/apache2/mods-enabled, les liens symboliques, ''ssl.conf'' et ''ssl.load'' qui activent le module.\\ | + | Sur debian, c'est le fichier **/etc/apache2/sites-available/default-ssl** qui contient le Virtualhost par défaut. Il faut lui créer un certificat. |
- | <code root> ls /etc/apache2/mods-enabled | grep ssl.*</code> | + | Pour cela on va se servir de l'utilitaire openssl. |
- | <code> | + | |
- | lrwxrwxrwx 1 root root 26 sept. 23 17:34 ssl.conf -> ../mods-available/ssl.conf | + | |
- | lrwxrwxrwx 1 root root 26 sept. 23 17:34 ssl.load -> ../mods-available/ssl.load</code> | + | |
+ | * 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 | ||
+ | Generating a 1024 bit RSA private key</code> | ||
- | * Le fichier du virtualhost qui utilse le module: | ||
- | 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 ! | ||
- | |||
- | ====Créer un certificat auto-signé ==== | ||
- | 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=== | ||
- | C'est l'utilitaire qui permet de mettre en place les certificats. | ||
- | Comme le module ssl, il est installé aussi par défaut l'utilitaire OpenSSL.\\ | ||
- | |||
- | <note> | ||
- | * __Le dossier de configuration de OpenSSL est /etc/ssl/__ : | ||
- | Il contient deux dossiers et un fichier : | ||
- | -> **/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 : | ||
- | |||
- | <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> | ||
> -x509 -nodes : type de certificat | > -x509 -nodes : type de certificat | ||
> -days 365 : durée de vie du certificat (en jours) | > -days 365 : durée de vie du certificat (en jours) | ||
> - newkey rsa:1024 : clé rsa de 1024 bits | > - newkey rsa:1024 : clé rsa de 1024 bits | ||
- | > -out /chemin/fichier/du_certificat : crée le fichier du certificat | + | > -out /chemin/fichier/certificat : crée le fichier du certificat |
- | > -keyout /etc/apache2/server.key : chemin du fichier de sa clé privée | + | > -keyout /chemin/fichier/clé : chemin du fichier de sa clé privée |
- | On répond aux questions, par exemple : | + | <note tip> |
- | <code> | + | __**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 | Country Name (2 letter code) [AU]:FR | ||
State or Province Name (full name) [Some-State]:France | State or Province Name (full name) [Some-State]:France | ||
Locality Name (eg, city) []:Chambery | Locality Name (eg, city) []:Chambery | ||
- | Organization Name (eg, company) [Internet Widgits Pty Ltd]:chez_moi | + | Organization Name (eg, company) [Internet Widgits Pty Ltd]: |
Organizational Unit Name (eg, section) []: | Organizational Unit Name (eg, section) []: | ||
- | Common Name (e.g. server FQDN or YOUR name) []:monsite.com | + | Common Name (e.g. server FQDN or YOUR name) []:monsite.com |
Email Address []:example@gmx.fr | Email Address []:example@gmx.fr | ||
- | </code> | + | </note> |
- | <note> | + | |
- | Pour un certificat auto-signé, il faut répondre à la question "Common Name" le nom du domaine à protéger</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 : | ||
+ | <code root>a2enmod ssl</code> | ||
+ | puis | ||
+ | <code root>service apache2 restart</code> | ||
+ | |||
+ | La commande ''a2enmod ssl'' a crée dans /etc/apache2/mods-enabled, les liens symboliques, ''ssl.conf'' et ''ssl.load'' qui activent le module.\\ | ||
+ | |||
+ | <code root> ls /etc/apache2/mods-enabled | grep ssl.*</code> | ||
+ | <code> | ||
+ | lrwxrwxrwx 1 root root 26 sept. 23 17:34 ssl.conf -> ../mods-available/ssl.conf | ||
+ | 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> | ||
- | * On vérifie la commande oppenssl a crée deux fichiers : | + | -> Il correspond comme le site "default" au fichier "/etc/apache2/mods-enabled/000-default |
- | <code root>ls /etc/ssl/certs/ | grep monsite.com.crt</code> | + | * Visualiser la page par défaut dans son navigateur : |
- | <code>monsite.com.crt</code> | + | <code>https://192.168.0.13/</code> |
- | <code root>ls /etc/ssl/private/ | grep monsite.com.key</code> | + | <code>It works! |
- | <code>monsite.com.key</code> | + | |
- | * Restreindre aux droits de lecture seulement et seulement pour root: | + | This is the default web page for this server. |
- | <code root>chmod 400 /etc/ssl/private/monsite.com.key</code> | + | La date du jour est 24/09/2014! </code> |