Il va nous falloir répeter pour les 3 sites (multisite.test, www.formater.test et en.formater.test), les opérations suivantes.
Je les décris pour multisite.test
Plusieurs modifications sont à réaliser dans le fichier /srv/ssl/openssl.cnf (ou bien il faudrait créer unfichier de configuration par domaine)
srv/ssl $ sudo nano /srv/ssl/openssl.cnf
req_extensions = v3_req[ v3_req ] ajouter la ligne subjectAltName = @alt_names[ alt_names]:
[ alt_names ] DNS.1 = multisite.test
Ici on va créer deux fichiers : la clé privée /srv/ssl/multisite.test/multisite.test.key.pem et le certificat associé /srv/ssl/multisite.test/multisite.test.csr.pem
On crée le répertoire pour multisite.test
/srv/ssl$ sudo mkdir multisite.test /srv/ssl$ cd multisite.test
On commence par générer une clé privée, ( il sera demandé une phrase pass à retenir par exemple : “je suis multisite.test”)
/srv/ssl/multisite.test$ sudo openssl genrsa -des3 -out multisite.test.key.pem 4096 Generating RSA private key, 4096 bit long modulus ...............................................................++ ..................................++ e is 65537 (0x010001) Enter pass phrase for multisite.test.key.pem: Verifying - Enter pass phrase for multisite.test.key.pem:
On créé une clé sans mot de passe
/srv/ssl/multisite.test$ sudo openssl rsa -in multisite.test.key.pem -out multisite.test.key.nopass.pem Enter pass phrase for multisite.test.key.pem: writing RSA key
On génère ensuite le certificat, la petite phrase de ma clé (multisite.test.key.pem) est demandée, dans Common Name on met le domaine, mais ce n'est pas obligatoire car il utilise les alt_names du fichier /srv/ssl/openssl.cnf
/srv/ssl/multisite.test$ sudo openssl req -config ../openssl.cnf -new -key multisite.test.key.pem -out multisite.test.csr.pem Enter pass phrase for multisite.test.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) [Some-State]:France Locality Name (eg, city) []:Paris Organization Name (eg, company) [Pole Terre Solide - ForMaTer]: Organizational Unit Name (eg, section) []:Formate Common Name (e.g. server FQDN or YOUR name) []:multisite.test Email Address []:pointal@ipgp.fr Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
On fait maintenant valider notre certificat par l'autorité (nous-même)
Tout d'abord une petite modification à apporter au fichier /srv/ssl/openssl.cnf
/srv/ssl/multisite.test$ sudo nano ../openssl.cnf
Dans la section [ CA_default ] on décommente la ligne copy_extensions = copy
On signe la demande, cette fois-ci, la petite phrase de l'autorité “je suis l'autorité” (celle de la clé /srv/ssl/private/cakey.pem) sera demandée,
/srv/ssl/multisite.test$ sudo openssl ca -config ../openssl.cnf -policy policy_anything -out multisite.test.cert.pem -infiles multisite.test.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: Jan 23 09:34:35 2018 GMT
Not After : Jan 23 09:34:35 2019 GMT
Subject:
countryName = FR
stateOrProvinceName = France
localityName = Paris
organizationName = Pole Terre Solide - ForMaTer
organizationalUnitName = Formate
commonName = multisite.test
emailAddress = pointal@ipgp.fr
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
44:2C:5F:39:94:FA:DA:1F:1D:F6:74:E0:3A:3C:CF:9D:B2:90:45:0F
X509v3 Authority Key Identifier:
keyid:D5:58:B3:DF:12:40:2C:41:18:F5:36:22:F9:C9:88:20:59:46:8E:5F
X509v3 Subject Alternative Name:
DNS:multisite.test
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
Certificate is to be certified until Jan 23 09:34:35 2019 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
Il n'y a qu'à créer un nouveau site dans /etc/apache2/sites-available branché sur le port 403
$ sudo nano /etc/apache2/sites-available/multisite.test-ssl.conf
<VirtualHost *:443>
ServerName multisite.test
DocumentRoot /var/www/multisite.test
SSLEngine On
SSLCertificateFile /srv/ssl/multisite.test/multisite.test.cert.pem
SSLCertificateKeyFile /srv/ssl/multisite.test/multisite.test.key.nopass.pem
SSLProtocol all -SSLv2
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/multisite.test>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
On active ensuite le mode ssl et notre nouveau site et redémarre apache
$ sudo a2enmod ssl $ sudo a2ensite multisite.test-ssl $ sudo service apache2 restart
Et enfin, on peut accéder au site [ https://multisite.test](https://multisite.test), en acceptant une exception de sécurité.