1: Pourquoi faire ça?

Documents pareils
Les certfcats. Installation de openssl

Méthode 1 : Mise en place IPSEC

TP HTTP. Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

NOTE: Pour une meilleure sécurisation, nous vous recommandons de faire l installation des outils web à l intérieur d un serveur virtuel.

Sécurité du Système d Information. Mini PKI

SÉCURITÉ DU SI. Mini PKI. Denoun Jérémy De Daniloff Cyril Bettan Michael SUJET (3): Version : 1.0

Installation UpdatEngine serveur (CentOs apache2 / MySQL)

Réaliser un inventaire Documentation utilisateur

CONFIGURATION DE OPENVPN AVEC CLIENT FEDORA ET CLIENT WINDOWS. Distribution : Fedora 14 Noyau GNU/Linux : Version document : 1

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Installation GLPI-OCSNG-SSL Linux Debian Sarge

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

Déploiement d OCS 1.02 RC2 sous Debian Etch 64

2013 Installation de GLPI-OCS. Florian MICHEL BTS SIO LYCEE SAINTE URSULE

Procédure d'installation

Étape 1 : gérer les certificats

Architectures PKI. Sébastien VARRETTE

Côté Labo : le service Web

Modèle de sécurité de la Grille. Farida Fassi Master de Physique Informatique Rabat, Maroc May 2011

Serveur Web Apache - SSL - PHP Debian GNU/Linux

SSL - TLS. Histoire, fonctionnement Sécurité et failles

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Installation et utilisation d'un certificat

Utilisation des certificats X.509v3

Instructions Mozilla Thunderbird Page 1

Module 7 : Configuration du serveur WEB Apache

WEB-II, Compléments sous la forme de rapport de travaux pratiques. Stève Galeuchet & Florian Seuret. Massimiliano Babino

Préparation d un serveur Apache pour Zend Framework

Autorité de certification

Installation du serveur WEB Apache ( MySQL, PHP) sous Debian 7.

VXPERT SYSTEMES. CITRIX NETSCALER 10.1 et SMS PASSCODE 6.2. Guide d installation et de configuration pour Xenapp 6.5 avec SMS PASSCODE 6.

Installation de la plate-forme Liberacces 2.0 «Intégrale» avec LiberInstall

Fonctionnement des PKI Architecture PKI

Gui!aume THIRION - Bac Pro MRIM

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Administration Linux - Apache

Annexes. OpenVPN. Installation

Guide de commande Commander un certificat d identité numérique PersonalSign

LP ASUR - Sécurité. Introduction à la Sécurité des Systèmes d'information. Florent Autréau - florent@mataru.com 28 Mai 2013

M2-RADIS Rezo TP13 : VPN

Projet de mise en œuvre d un serveur ftp sur serveur dédié

Gestion d identités PSL Installation IdP Authentic

Serveur Subversion Debian GNU/Linux

OCS INVENTORY-GLPI Guide de Procédure

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

GUIDE D INSTALLATION. Portaneo Enterprise Portal version 4.0

1 Configuration des Fichiers Hosts, Hostname, Resolv.conf

Compléter le formulaire «Demande de participation» et l envoyer aux bureaux de SGC* à l adresse suivante :

Installation d OpenVPN

Application Form/ Formulaire de demande

F-7a-v3 1 / Bourses de mobilité / Mobility Fellowships Formulaire de demande de bourse / Fellowship Application Form

Hébergement de site web Damien Nouvel

TP Service HTTP Serveur Apache Linux Debian

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

Tutoriel compte-rendu Mission 1

WEB page builder and server for SCADA applications usable from a WEB navigator

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

PHOTO ROYAUME DE BELGIQUE /KINDOM OF BELGIUM /KONINKRIJK BELGIE. Données personnelles / personal data

Gestion des certificats en Internet Explorer

CA SIC Directives de certification Certificate Practice Statement (CPS) du SIC Customer ID CA 1024 Level 2

Installation de Snort sous Fedora

Guide d installation de FreeRadius avec EAP-TLS + MySQL

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

POLICY: FREE MILK PROGRAM CODE: CS-4

Practice Direction. Class Proceedings

Guide Installation Serveur Extensive Testing

Acronymes et abréviations. Acronymes / Abbréviations. Signification

IGC-CPS2bis. Gabarits des certificats X.509. des Classes 4, 5 et mars Version mars 2012 Document ASIP-Santé Page 1 / 34

8. Cours virtuel Enjeux nordiques / Online Class Northern Issues Formulaire de demande de bourse / Fellowship Application Form

Guide Installation Serveur Extensive Testing

Installation et configuration de Vulture Lundi 2 février 2009

UNIVERSITE DE YAOUNDE II

Configurer la supervision pour une base MS SQL Server Viadéis Services

CASE-LINUX MAIL - ROUNDCUBE

Les GPO 2012 server R2 (appliqués à Terminal Serveur Edition)

Authentification unique Eurécia

WDpStats Procédure d installation

Tuto 2 : Configuration Virtual box, Configuration et installation du serveur XiBO

Installation d'un serveur RADIUS

Installation d'un TSE (Terminal Serveur Edition)

Accès aux ressources informatiques de l ENSEEIHT à distance

The new consumables catalogue from Medisoft is now updated. Please discover this full overview of all our consumables available to you.

REPARTITION DE CHARGE LINUX

A B A C U S DESCRIPTIF D'INSTALLATION SAAS ABAWEB. septembre 2014 / OM / COB. Version 5.5

Bon ben voilà c est fait!

calls.paris-neuroscience.fr Tutoriel pour Candidatures en ligne *** Online Applications Tutorial

English Q&A #1 Braille Services Requirement PPTC Q1. Would you like our proposal to be shipped or do you prefer an electronic submission?

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Innovation in Home Insurance: What Services are to be Developed and for what Trade Network?

Master Développement Durable et Organisations Master s degree in Sustainable Development and Organizations Dossier de candidature Application Form

SSH, le shell sécurisé

ALCATEL IP1020. Guide de Configuration pour l offre Centrex OpenIP

Dans l'épisode précédent

Transcription:

Table des matières 1: Pourquoi faire ça?...1 2: Présentation des techniques employées:...1 3: Créer son autorité de certification et des certificats pour les deux sites en https...2 l autorité de certification...2 3.1.1: Configuration...3 3.1.2: Editer le fichier /srv/ssl/openssl.conf et modifiez les parametres suivants:...3 3.1.3: Clé privée certificat et signature...3 Publier le certificat de l autorité de certification...4 3.1.5: Enregistrez le certificat dans le magasin de confiance de votre ordinateur local...4 3.2: Créer un certificat pour le serveur Web home.tinad.fr...4 3.3: Créer un certificat pour le serveur Web prive.tinad.fr...5 4: Configuration du serveur web...6 4.1: configuration des vhost...6 4.1.1: vi /etc/apache2/sites-available/home.tinad.fr...6 4.1.2: vi /etc/apache2/sites-available/home.tinad.fr-https...6 4.1.3: vi /etc/apache2/sites-available/prive.tinad.fr-https...7 4.1.4: Activation des vhost:...7 4.2: Créer un couple certificat-clé client (fichier PKCS#12):...7 5: Révoquer un certificat:...9 1: Pourquoi faire ça? A moins de s appeler le trésor public [1], cette sécurité peut paraître exagérée. Ça va me servir dans quelques semaines à sécuriser une appli web du travail pour laquelle seuls une dizaine d utilisateurs auront accès depuis l extérieur (via un reverse proxy apache). 2: Présentation des techniques employées: La configuration se fait au niveau d apache et du module SSL. Ce n est pas compliqué, Mais c est chiant à expliquer de façon claire. J en suis à la troisième re-rédaction de ce billet pour tenter d éclaircir les explications. Ce billet contient tout un mémo de création d une chaine de certification avec openssl et un peu de config Apache. Sur le serveur (mon Raspberry pi), je vais créer trois sites virtuels (VHOST) dans la configuration d apache: home.tinad.fr (en http) home.tinad.fr (en https) prive.tinad.fr (en https, avec obligation pour l utilisateur de posséder un certificat personnel signé par l autorité de certification qu on va créer):

3: Créer son autorité de certification et des certificats pour les deux sites en https l autorité de certification Malheureusement, il n est pas possible d obtenir un certificat ayant le rôle "autorité de certification" reconnu par tous les navigateurs. On devra faire en sorte que les utilisateurs ajoutent notre certificat dans leur navigateur. Je ne détaillerai pas ici comment faire, mais il voici trois pistes: Créer une page web intermédiaire fournissant le certificat, et expliquant comment et pourquoi l installer Si les utilisateurs sont dans un réseau sur lequel on est l administrateur réseau : Via une GPO. Offrir une boite de kinder chocolat à l administrateur réseau pour qu il fasse une GPO. L installer manuellement sur tous les postes.

3.1.1: Configuration #On créé l'architecture de dossiers et fichiers nécessaires à une gestion des #clés et certificats dans le repertoire /srv/ssl mkdir /srv/ssl mkdir certs crl newcerts private echo 01 > serial touch index.txt echo 01 > crlnumber cp /usr/lib/ssl/openssl.cnf. 3.1.2: Editer le fichier /srv/ssl/openssl.conf et modifiez les parametres suivants: dir=/srv/ssl Dans le bloc [req_distinguished_name] :. countryname_default stateorprovincename_default = FR = France 3.1.3: Clé privée certificat et signature #Créer une clé privée openssl genrsa -des3 -out private/cakey.pem 4096 #certif signé openssl req -config openssl.cnf -new -x509 -nodes -sha1 -days 1825 -key private/cakey.pem -out cacert.pem Adaptez les réponses en fonction,s de votre site, mais ne mettez pas le FDQN dans le common name. Il s agit du certificat autorité, pas celui de votre site web. Voici mon retour écran: root@raspberrypi:/srv/ssl# openssl req -config openssl.cnf -new -x509 -nodes -sha1 -days 1825 -key private/cakey.pem -out cacert.pem Enter pass phrase for private/cakey.pem: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [FR]: State or Province Name (full name) [France]: Locality Name (eg, city) []:Rouen Organization Name (eg, company) [Internet Widgits Pty Ltd]:tinad Organizational Unit Name (eg, section) []:Gnieark Common Name (e.g. server FQDN or YOUR name) []:tinad.fr Email Address []:gnieark@free.fr

Publier le certificat de l autorité de certification cp /srv/ssl/cacert.pem /var/www/cacert.crt https://blog-du-grouik.tinad.fr/ (Lors de la copie, on change l extension.pem en.crt, car.crt est un type mime connu dans la configuration standard d apache) 3.1.5: Enregistrez le certificat dans le magasin de confiance de votre ordinateur local Ouvrez tout simplement votre navigateur à l URL http://votreserveur/cacert.crt et cochez toutes les cases: 3.2: Créer un certificat pour le serveur Web home.tinad.fr changez "home.tinad.fr" par le FDQN de votre serveur pour la suite des tests. #Création de la clé privée pour home.tinad.fr openssl genrsa -des3 -out home.tinad.fr.key.pem 4096 #demande de certificat: openssl req -config openssl.cnf -new -key home.tinad.fr.key.pem -out home.tinad.fr.csr.pem Voici mon retour écran: root@raspberrypi:/srv/ssl# openssl req -config openssl.cnf -new -key home.tinad.fr.key.pem -out home.tinad.fr.csr.pem Enter pass phrase for home.tinad.fr.key.pem: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [FR]: State or Province Name (full name) [France]: Locality Name (eg, city) []:Rouen Organization Name (eg, company) [Internet Widgits Pty Ltd]:tinad Organizational Unit Name (eg, section) []:home Common Name (e.g. server FQDN or YOUR name) []:home.tinad.fr Email Address []:gnieark@free.fr Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Signature de la demande: openssl ca -config openssl.cnf -policy policy_anything -out home.tinad.fr.cert.pem -infiles home.tinad.fr.csr.pem

La valeur la plus importante est le common name. Elle corrspond au FDQN pour les autres champs, essayez simplement d etre logique avec l autorité de certification Voici mon retour écran: root@raspberrypi:/srv/ssl# openssl ca -config openssl.cnf -policy policy_anything -out home.tinad.fr.cert.pem -infiles home.tinad.fr.csr.pem Using configuration from openssl.cnf Enter pass phrase for /srv/ssl/private/cakey.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 1 (0x1) Validity Not Before: May 3 19:25:04 2013 GMT Not After : May 3 19:25:04 2014 GMT Subject: countryname = FR stateorprovincename = France localityname = Rouen organizationname = tinad organizationalunitname = home commonname = home.tinad.fr emailaddress = gnieark@free.fr X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 81:4B:C7:3E:9B:C6:EA:60:78:26:B3:8F:77:B4:43:07:07:DE:A8:02 X509v3 Authority Key Identifier: keyid:be:1d:5d:b9:f1:53:d6:bd:11:90:8e:5c:0f:d2:bc:99:22:be:f1:48 Certificate is to be certified until May 3 19:25:04 2014 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated Voila, on a notre certificat signé: /srv/ssl/home.tinad.fr.cert.pem et sa clé privée: /srv/ssl/home.tinad.fr.key.pem (chiffrée par un mot de passe là) On remarque au passage openssl a incrémenté la valeur dans le fichier /srv/ssl/serial. Créer une clé non protégée par un mot de passe (ça servira à Apache) openssl rsa -in home.tinad.fr.key.pem -out home.tinad.fr-enclair.key.pem 3.3: Créer un certificat pour le serveur Web prive.tinad.fr Idem qu au châpitre précedent, du coup je ne détaille pas: #Création de la clé privée pour prive.tinad.fr openssl genrsa -des3 -out prive.tinad.fr.key.pem 4096

#demande de certificat: openssl req -config openssl.cnf -new -key prive.tinad.fr.key.pem -out prive.tinad.fr.csr.pem #signature de la demande: openssl ca -config openssl.cnf -policy policy_anything -out prive.tinad.fr.cert.pem -infiles prive.tinad.fr.csr.pem #créer une clé non protégée: openssl rsa -in prive.tinad.fr.key.pem -out prive.tinad.fr-enclair.key.pem 4: Configuration du serveur web cd /var/www #on va créer 5 dossier pour des vhosts: mkdir home.tinad.fr mkdir home.tinad.fr-https mkdir prive.tinad.fr-https #Il me semble que le VHOST par défault d'apache est le premier par ordre alphabétique; #d'où le "0" au début du nom mkdir 0-default mkdir 0-default-https #Supprimer les fichiers de vhosts créés à l installation d'apache cd /etc/apache2/sites-enabled rm * 4.1: configuration des vhost Comme vous le verrez, je reste sur une configuration méga basique des VHOST, préférant les valeurs par défaut d apache aux paramètres non ou mal compris. De plus je n utilise pas de script CGI, donc autant ne pas les activer. 4.1.1: vi /etc/apache2/sites-available/home.tinad.fr <VirtualHost *:80> ServerName home.tinad.fr DocumentRoot /var/www/home.tinad.fr </VirtualHost> 4.1.2: vi /etc/apache2/sites-available/home.tinad.fr-https Ce VHOST est chiffré en HTTPS, cependant, aucune restriction d accès n est effectuée. Pour le test, j ai mis le certificat de notre propre autorité de certification. Mais en production, autant mettre un vrai certificat (comptez maxi 30 /an). Pour cette maquette, j y publie le certificat de l autorité de certification, j explique comment l insérer, et je mets un formulaire qui permettra aux utilisateurs de demander leurs propres certificats. (dans le projet final ce sera l administrateur qui aura accès au formulaire pour générer les certificats) <VirtualHost *:443> ServerName home.tinad.fr DocumentRoot /var/www/home.tinad.fr-https SSLEngine On SSLCertificateFile /srv/ssl/home.tinad.fr.cert.pem SSLCertificateKeyFile /srv/ssl/home.tinad.fr-enclair.key.pem SSLProtocol all -SSLv2 </Virtualhost>

4.1.3: vi /etc/apache2/sites-available/prive.tinad.fr-https <VirtualHost *:443> ServerName prive.tinad.fr DocumentRoot /var/www/prive.tinad.fr-https SSLEngine On SSLCertificateFile /srv/ssl/prive.tinad.fr.cert.pem SSLCertificateKeyFile /srv/ssl/prive.tinad.fr-enclair.key.pem SSLProtocol all -SSLv2 SSLCACertificateFile /srv/ssl/cacert.pem SSLCARevocationFile /srv/ssl/crl.pem SSLVerifyClient require SSLVerifyDepth 1 SSLOptions +StdEnvVars </Virtualhost> Ce VHOST étant le plus intéressant, expliquons les directives SSLEngine On : active le SSL SSLCertificateFile le fichier contenant le certificat TLS pour prive.tinad.fr SSLCertificateKeyFile le fichier contenant la clé qui servira à chiffrer les connexions (à garder bien cachée ;) ) SSLProtocol all -SSLv2 On accepte tous les protocoles ssl supportés sauf le SSLV2 qui présente une faiblesse) SSLCACertificateFile Le fichier certificat de l autorité qui signe les certificats clients (apache vérifie les signatures) SSLCARevocationFile Le fichier qui contient la liste des certificats révoqués (nécessaire si on veut gérer les utilisateurs) SSLVerifyClient require Seuls les clients ayant un certificat valide sont admis SSLVerifyDepth 1 On limite à une autorité de certification intermédiaire SSLOptions +StdEnvVars Cette directive permet d ajouter les informations concernant le certificat client aux variables d environnement. On pourra ainsi adapter le code PHP en fonction du certificat de l utilisateur. 4.1.4: Activation des vhost: a2ensite home.tinad.fr a2ensite home.tinad.fr-https a2ensite prive.tinad.fr-https /etc/init.d/apache2 reload 4.2: Créer un couple certificat-clé client (fichier PKCS#12): mkdir home.tinad.fr-clefs-clients cd home.tinad.fr-clefs-clients creer clé openssl genrsa -des3 -out gnieark.home.tinad.fr.key.pem Créer le certificat: openssl req -config../openssl.cnf -new -key gnieark.home.tinad.fr.key.pem -out

gnieark.home.tinad.fr.csr.pem Retour écran de la dernière commande: https://blog-du-grouik.tinad.fr/ Enter pass phrase for gnieark.home.tinad.fr.key.pem: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [FR]: State or Province Name (full name) [France]: Locality Name (eg, city) []:Rouen Organization Name (eg, company) [Internet Widgits Pty Ltd]:tinad Organizational Unit Name (eg, section) []:home Common Name (e.g. server FQDN or YOUR name) []:gnieark Email Address []:gnieark@free.fr Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: Signer le certificat: openssl ca -config../openssl.cnf -policy policy_anything -out gnieark.home.tinad.fr.cert.pem -infiles gnieark.home.tinad.fr.csr.pem Retour écran de la commande: root@raspberrypi:/srv/ssl/home.tinad.fr-clefs-clients# openssl ca -config../openssl.cnf -policy policy_anything -out gnieark.home.tinad.fr.cert.pem -infiles gnieark.home.tinad.fr.csr.pem Using configuration from../openssl.cnf Enter pass phrase for /srv/ssl/private/cakey.pem: Check that the request matches the signature Signature ok Certificate Details: Serial Number: 2 (0x2) Validity Not Before: May 12 17:18:18 2013 GMT Not After : May 12 17:18:18 2014 GMT Subject: countryname = FR stateorprovincename = France localityname = Rouen organizationname = tinad organizationalunitname = home commonname = gnieark emailaddress = gnieark@free.fr X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 47:E4:92:85:3A:43:6A:BC:43:C7:5B:41:F4:67:66:E2:36:CA:D7:69 X509v3 Authority Key Identifier: keyid:be:1d:5d:b9:f1:53:d6:bd:11:90:8e:5c:0f:d2:bc:99:22:be:f1:48 Certificate is to be certified until May 12 17:18:18 2014 GMT (365 days) Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Concatener et convertir au forlat PKCS#12 (.p12) openssl pkcs12 -export -inkey gnieark.home.tinad.fr.key.pem -in gnieark.home.tinad.fr.cert.pem -out gnieark.home.tinad.fr.cert.p12 -name "Gnieark" Ça y est, j ai une clé à) fournir à l utilisateur Gnieark, il pourra l intégrer à Firefox ou Internet Explorer (lol) et ainsi accéder au site que j ai protégé précédent. 5: Révoquer un certificat: En imaginant que je révoque un Zigazou openssl ca -config openssl.cnf -revoke prive.tinad.fr/zigazou.prive.tinad.fr.cert.pem #générer la liste de révocation: openssl ca -config openssl.cnf -gencrl -out crl.pem #la visualiser: openssl crl -in crl.pem -text