web-dev-qa-db-fra.com

Comment configurer ssl (https) pour votre site sur Ubuntu Linux - SSL bidirectionnel

J'ai un site Web, la principale exigence est de sécuriser ce site en utilisant https

Lorsque le client accède depuis un autre ordinateur, il ne doit fonctionner que si le certificat a été téléchargé dans les paramètres du navigateur. Sinon, l'accès à ce site Web devrait être refusé. Quelqu'un peut-il m'aider à atteindre cet objectif.

J'utilise Ubuntu 14.04 Faites-moi savoir si vous avez besoin de plus de détails

3
Rshrth

Il est clair que la documentation officielle d’Apache (voir à ce lien ) est vraiment bien faite sur ce sujet.

En bref, vous devriez vous retrouver avec quelque chose comme ceci:

LoadModule ssl_module modules/mod_ssl.so

Listen 443
<VirtualHost *:443>
   DocumentRoot /var/www/yoursite/
   <Directory /var/www/yoursite/>
     AllowOverride All
     order allow,deny
     allow from all
   </Directory>

   ServerName www.example.com
   SSLEngine on
   SSLCertificateFile /path/to/www.example.com.cert
   SSLCertificateKeyFile /path/to/www.example.com.key

   SSLVerifyClient require
   SSLVerifyDepth 1
   SSLCACertificateFile /path/to/www.example.com.ca.crt
</VirtualHost>

Quelques détails sur ce qui précède

  • LoadModule ...: pour charger le module Apache approprié, contenant l'implémentation SSL
  • Listen 443: le démon Apache écoutera sur le port standard HTTPS, 443
  • DocumentRoot: où résident les fichiers de votre site
  • ...: voici la définition des options du répertoire de votre site Web (il y en a beaucoup plus, celles mentionnées ici sont les bases pour permettre l'accès depuis n'importe quel IP sur Internet).
  • Nom du serveur: pour servir uniquement les URL contenant ce nom
  • SSLEngine on: activez les fonctionnalités SSL sur ce site.
  • SSLCertificateFile: chemin d'accès au certificat X.509 de la clé privée créée pour ce serveur.
  • SSLCertificateKeyFile: chemin d'accès à la clé privée créée pour ce serveur.
  • SSLVerifyClient require: oblige le serveur à demander au client un certificat valide
  • SSLVerifyDepth 1: doit être directement signé par l'autorité de certification mentionnée dans l'instruction suivante
  • SSLCACertificateFile: chemin d'accès au certificat X.509 de l'autorité de certification qui signe les certificats utilisés par les clients.

Les certificats

Vous devrez obtenir des certificats valides, un pour votre serveur et de nombreux autres pour les clients.

Pour le serveur
Installer l'outil OpenSSL , si ce n'est déjà fait: Sudo apt-get install openssl.

Avec cet outil, vous pouvez créer la clé privée du serveur:

openssl genrsa -des3 -out server.pass.key 2048

La commande ci-dessus crée une clé privée avec un mot de passe. Pour être chargé automatiquement par votre serveur, vous devez supprimer le mot de passe:

openssl rsa -in server.pass.key -out server.key

Vous avez maintenant une clé privée de serveur valide dans un fichier. Il s'agit du fichier pointé par la directive SSLCertificateKeyFile Apache.

À partir de cette clé privée, vous créerez une demande de signature de certificat (CSR):

openssl req -nodes -new -key server.key -out server.csr

Vous allez être invité à entrer un ensemble d'éléments (pays, organisation, ...). Le plus important sera le nom commun (CN), il doit correspondre au nom d'hôte de votre serveur Web, celui utilisé dans l'URL. Donc, dans mon exemple, il s’agit de www.example.com .

Ensuite, vous devez soumettre ce fichier CSR à votre fournisseur de certificat. Tout CA public est bon. Après avoir approuvé votre demande, ils vous enverront le fameux fichier de certificat X.509 pour votre serveur. Ce fichier sera pointé par la directive SSLCertificateFile Apache.

Pour le client
Vous devrez également fournir un certificat valide au client.
Selon le type de client (Linux, Windows, MAC, ...), le processus peut différer.

Parfois, pour les certificats clients, toutes les opérations peuvent être effectuées directement à partir du navigateur Web en visitant la page de l'enregistrement de l'autorité de certification. Si cela est fait directement à partir du navigateur Web, vous êtes certain que le certificat est automatiquement enregistré dans la base de données de certificats du navigateur Web.

Si cela est fait par un moyen externe (comme openssl sous Linux), vous devrez importer la clé privée et le fichier de certificat dans le magasin de certificats de votre navigateur Web. .

8
Benoit