Mise en place d'un certificat SSL signé par CAcert sur sous-domaines
1ère: mise en place des redirections sur votre manager:
Rendez vous dans le manager de votre registar et créer le champs dans votre zone dns comme suit:
Type A :
rutorrent.<votre domaine> --> redirection vers IP du serveur
manager.<votre domaine> --> redirection vers IP du serveur
Type CNAME:
www.rutorrent.<votre domaine> --> redirection vers rutorrent.<votre domaine>
www.manager.<votre domaine> --> redirevtion vers manager. <votre domaine>
Je suis chez OVH, voilà le résultat:
2ème partie: Mise en place des sous-domaines + redirection automatique du http vers https:
Nous allons créer le répertoire ainsi que l'index du site :
Si vous avez utilisé le script d'Ex_rat, les fichiers sont déjà sur le serveur, vous pouvez passer cette commande.
su root
mkdir /var/www/base && touch /var/www/base/index.html
Fichier de config' pour le site:
nano /etc/nginx/sites-enabled/site.conf
Copier/coller le fichier de configuration ci-dessous. Pensez à remplacer <votre domaine> par votre nom de domaine.
server {
listen 80;
server_name <votre domaine> www.<votre domaine>;
return 301 https://www.<votre domaine>$request_uri;
}
server {
listen 443 default_server ssl;
server_name www.<votre domaine> <votre domaine>;
if ($host !~* ^www\.){
rewrite ^(.*)$ https://www.<votre domaine>$1;
}
index index.html index.php;
charset utf-8;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
access_log /var/log/nginx/rutorrent-access.log combined;
error_log /var/log/nginx/rutorrent-error.log error;
error_page 500 502 503 504 /50x.html;
location = /50x.html { root /usr/share/nginx/html; }
location = /var/www/base/favicon.ico {
access_log off;
return 204;
}
## début config site ##
location ^~ / {
root /var/www/base;
include /etc/nginx/conf.d/php;
include /etc/nginx/conf.d/cache;
}
## fin config site ##
}
Pour ceux qui veulent avoir le choix entre http et https pour la page d'accueil:
server {
listen 80 default_server;
listen 443 default_server ssl;
server_name <votre domaine> www.<votre domaine>;
index index.html index.php;
charset utf-8;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
error_page 500 502 503 504 /50x.html;
location = /50x.html { root /usr/share/nginx/html; }
location = /var/www/base/favicon.ico {
access_log off;
return 204;
}
## début config site ##
location ^~ / {
root /var/www/base;
include /etc/nginx/conf.d/php;
include /etc/nginx/conf.d/cache;
}
## fin config site ##
}
Fichier de config' rutorrent:
Attention: gardez les lignes de vos users
nano /etc/nginx/sites-enabled/rutorrent.conf
server {
listen 80;
server_name rutorrent.<votre domaine> www.rutorrent.<votre domaine>;
return 301 https://rutorrent.<votre domaine>$request_uri;
}
server {
listen 443;
server_name rutorrent.<votre domaine>;
index index.html index.php;
charset utf-8;
client_max_body_size 10M;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
access_log /var/log/nginx/rutorrent-access.log combined;
error_log /var/log/nginx/rutorrent-error.log error;
error_page 500 502 503 504 /50x.html;
location = /50x.html { root /usr/share/nginx/html; }
auth_basic "Login";
auth_basic_user_file "/etc/nginx/passwd/rutorrent_passwd";
location = /var/www/rutorrent/favicon.ico {
access_log off;
return 204;
}
## début config rutorrent ##
location ^~ / {
root /var/www/rutorrent;
include /etc/nginx/conf.d/php;
include /etc/nginx/conf.d/cache;
location ~ /\.svn {
deny all;
}
location ~ /\.ht {
deny all;
}
}
location ^~ /conf/ {
deny all;
}
location ^~ /share/ {
deny all;
}
## fin config rutorrent ##
## début config user ##
location /<USERNAME> {
include scgi_params;
scgi_pass 127.0.0.1:500{x};
auth_basic "seedbox";
auth_basic_user_file "/etc/nginx/passwd/rutorrent_passwd_<username>";
}
## fin config user ##
}
Fichier de config' Seedbox-manager:
nano /etc/nginx/sites-enabled/manager.conf
server {
listen 80;
server_name manager.<votre domaine> www.manager.<votre domaine>;
return 301 https://manager.<votre domaine>$request_uri;
}
server {
listen 443;
server_name manager.<votre domaine>;
index index.html index.php;
charset utf-8;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
access_log /var/log/nginx/rutorrent-access.log combined;
error_log /var/log/nginx/rutorrent-error.log error;
error_page 500 502 503 504 /50x.html;
location = /50x.html { root /usr/share/nginx/html; }
auth_basic "Login";
auth_basic_user_file "/etc/nginx/passwd/rutorrent_passwd";
location = /var/www/seedbox-manager/favicon.ico {
access_log off;
return 204;
}
## début config seedbox-manager ##
location ^~ / {
root /var/www/seedbox-manager/public;
include /etc/nginx/conf.d/php;
include /etc/nginx/conf.d/cache;
}
## fin config seedbox-manager ##
}
Fichier de config' pour Wordpress:
server {
listen 80;
server_name wordpress.<votre domaine> www.wordpress.<votre domaine>;
return 301 https://wordpress.<votre domaine>$request_uri;
}
server {
listen 443;
server_name wordpress.<votre domaine>;
index index.html index.php;
charset utf-8;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
access_log /var/log/nginx/rutorrent.access.log combined;
error_log /var/log/nginx/rutorrent.error.log error;
error_page 500 502 503 504 /50x.html;
location = /50x.html { root /usr/share/nginx/html; }
location = /var/www/site/favicon.ico {
access_log off;
return 204;
}
## Début de config wordpress ##
location ^~ / {
root /var/www/wordpress;
try_files $uri $uri/ /index.php?q=$uri&$args;
include /etc/nginx/conf.d/php;
include /etc/nginx/conf.d/cache;
satisfy any;
allow all;
}
## fin de config wordpress ##
}
Enfin:
service nginx restart
Wordpress, Rutorrent, Seedbox-manager sont désormais sur un sous-domaine. La redirection du http vers le https est également en place sur votre serveur. Pas de redirection https automatique pour cakebox, celui-ci ne fonctionne qu'en http.
3ème partie: Création du certificat pour votre domaine:
Désormais, il va falloir s'inscrire sur CAcert.
Faites vérifier votre identité,nom de domaine et adresse mail.
Commençons par supprimer le certificat et la clé précédemment créés:
rm /etc/nginx/ssl/server.key && rm /etc/nginx/ssl/server.crt
On va se placer dans le repertoire SSL:
cd /etc/nginx/ssl/
Créons une nouvelle clé:
openssl genrsa -aes256 -out /etc/nginx/ssl/secure.pem 4096
On supprime le PEM pass phrase:
openssl rsa -in /etc/nginx/ssl/secure.pem -out /etc/nginx/ssl/key.pem
On va créer une demande de certificat serveur :
openssl req -sha256 -new -key /etc/nginx/ssl/key.pem -out /etc/nginx/ssl/<votre domaine>.csr
Remplissez comme suit:
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: FRANCE
Locality Name (eg, city) []: VILLE
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Le nom du site sans l'extension du nom de domaine
Organizational Unit Name (eg, section) []: domaine du site exemple : marketing ou internet
Common Name (e.g. server FQDN or YOUR name) []: www.<votre domaine>
Email Address []: la redirection mail que l'on a fait précédemment : postmaster@votre domaine
A challenge password []: Laissez vide
An optional company name []: Laissez vide
Maintenant afficher votre clé pour l'envoyer à l'organisme de certification:
cat /etc/nginx/ssl/<votre domaine>.csr
vous devriez voir apparaitre sur le terminal quelque chose comme ça:
-----BEGIN CERTIFICATE REQUEST-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE REQUEST-----
Copie de la clé chez CAcert:
Cliquez sur certificat serveur (à droite de la page) puis cliquez sur nouveau
Entrez votre clé et validez.
Il va vous en redonner une nouvelle.
Une fois que vous avez votre nouvelles clé, il va falloir l'enregistrer au format .pem.
nano /etc/nginx/ssl/<votre domaine>.pem
Copiez votre nouvelle clé.
On applique les droits:
chmod 400 /etc/nginx/ssl/key.pem
chown root:root /etc/nginx/ssl/key.pem
Télécharger les ''certificats racines''.
cd /etc/nginx/ssl/
wget https://www.cacert.org/certs/root.crt
wget https://www.cacert.org/certs/class3.crt
Nous avons tous les fichiers nécessaires sur notre serveur.
Faisons un fichier All In One:
cat <votre domaine>.pem root.crt class3.crt > <votre domaine>_chain.pem
Faisons le ménage:
cd /etc/nginx/ssl
rm <votre domaine>.pem secure.pem <votre domaine>.csr
Voilà votre certificat signé par l'organisme de certification est sur votre serveur avec un cryptage en 256 bits.
Mais il n'est pas encore actif sur votre site.
4ème partie: création du certificat pour vos sous-domaines:
Nous allons créer une clé et un certificat pour vos sous-domaines.
En effet, le certificat que nous venons de créer est un certificat qui protège que le domaine.
Plaçons nous dans le répertoire SSL:
cd /etc/nginx/ssl
Puis nous allons en créer une nouvelle clé:
openssl genrsa -aes256 -out /etc/nginx/ssl/sd.secure.pem 4096
On supprime le PEM pass phrase:
openssl rsa -in /etc/nginx/ssl/sd.secure.pem -out /etc/nginx/ssl/sd.key.pem
On va créer une demande de certificat serveur :
openssl req -sha256 -new -key /etc/nginx/ssl/sd.key.pem -out /etc/nginx/ssl/sd.<votre domaine>.csr
Remplissez comme suit:
Country Name (2 letter code) [AU]: FR
State or Province Name (full name) [Some-State]: FRANCE
Locality Name (eg, city) []: VILLE
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Le nom du site sans l'extension du nom de domaine
Organizational Unit Name (eg, section) []: domaine du site exemple : marketing ou internet
Common Name (e.g. server FQDN or YOUR name) []: *.<votre domaine> sans http:// ni www (http://www.exemple.fr deviendra *.exemple.fr
Email Address []: postmaster@votre domaine
A challenge password []: Laissez vide
An optional company name []: Laissez vide
Maintenant afficher votre clé pour l'envoyer à l'organisme de certification:
cat /etc/nginx/ssl/sd.<votre domaine>.csr
vous devriez voir apparaitre sur le terminal quelque chose comme ça:
-----BEGIN CERTIFICATE REQUEST-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END CERTIFICATE REQUEST-----
Copie de la clé chez CAcert:
Cliquez sur certificat serveur (à droite de la page) puis cliquez sur nouveau
Entrez votre clé et validez.
Il va vous en redonner une nouvelle.
Une fois que vous avez votre nouvelles clé, il va falloir l'enregistrer au format .pem.
nano /etc/nginx/ssl/sd.<votre domaine>.pem
Copiez votre nouvelle clé.
On applique les droits:
chmod 400 /etc/nginx/ssl/sd.key.pem
chown root:root /etc/nginx/ssl/sd.key.pem
Faisons un fichier All In One:
cd /etc/nginx/ssl
cat sd.<votre domaine>.pem root.crt class3.crt > sd.<votre domaine>_chain.pem
Faisons le ménage:
cd /etc/nginx/ssl
rm sd.<votre domaine>.pem sd.secure.pem sd.<votre domaine>.csr root.crt class3.crt
vous avez votre certificat pour vos sous-domaines. Mettons les en place sur nos pages web maintenant.
5ème partie: Mise en place du certificat sur votre page web et sur vos sous domaines:
Page index du site:
nano /etc/nginx/sites-enabled/site.conf
remplacez le bloc suivant :
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
par:
ssl on;
ssl_certificate /etc/nginx/ssl/<votre domaine>_chain.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM;
Pour ceux qui veulent avoir le choix entre le hhtp et le https sur la page du site:
ssl_certificate /etc/nginx/ssl/<votre domaine>_chain.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM;
Pour ruttorent, seedbox-manager, wordpress et vos autres sous domaines:
nano /etc/nginx/sites-enabled/rutorrent.conf
nano /etc/nginx/sites-enabled/wordpress.conf
nano /etc/nginx/sites-enabled/manager.conf
remplacez le bloc suivant :
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
par:
ssl on;
ssl_certificate /etc/nginx/ssl/sd.<votre domaine>.pem;
ssl_certificate_key /etc/nginx/ssl/sd.key.pem;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM;
Enfin:
service nginx restart