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
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>
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. .