Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.
Bonjour à tous,
Aujourd’hui nous allons voir comment forcer l’utilisation du protocole HTTPS avec un reverse Proxy Nginx sous Debian 7. Nous utiliserons un certificat Positive SSL de comodo qui coûte dans les 6€ par an.
Les versions utilisées :
- Apache 2.2
- Php 5.5
- MariaDB 10.0.13
- Observium CE 0.14.4.5229
- Nginx 1.6.1 ~dotdeb
- Debian 7.6
- Certificat SSL : Comodo Positive SSL from Namecheap (~6€)
Les étapes :
- Modifier la configuration d’Apache 2
- Installer Nginx
- Création du CSR et commande du certificat
- Installer le certificat SSL sur le serveur
- Créer la configuration pour Nginx
Modification de la configuration d’Apache 2 :
On commence par stopper le serveur Apache 2 avec la commande suivante :
service apache2 stop
Ensuite on édite le fichier des ports Apache :
nano /etc/apache2/ports.conf
On remplace les ports par 80 par 82 :
NameVirtualHost *:82 Listen 82
Maintenant rendez vous dans les virtualhosts d’apache :
cd /etc/apache2/sites-enabled
Assurez vous qu’aucun de vos virtualhost n’ai le support ssl, si vous avez suivi la procédure d’observium, modifiez le fichier par défaut d’apache :
nano /etc/apache2/sites-enabled/000-default
Remplacez le port 80 par le port 82 :
VirtualHost *:82
Maintenant vous pouvez relancer Apache 2 :
service apache2 start
Installation de Nginx sur Debian 7 :
Dans un premier temps, on va éditer les sources de notre machine :
nano /etc/apt/sources.list
Rajoutez au début du fichier les repos dotdeb :
deb http://packages.dotdeb.org wheezy all deb-src http://packages.dotdeb.org wheezy all
Ensuite, téléchargez et installez la clé dotdeb :
cd /tmp wget http://www.dotdeb.org/dotdeb.gpg apt-key add dotdeb.gpg
Mettez à jour votre système :
apt-get update && apt-get upgrade
Installez Nginx et Memcached :
apt-get install nginx memcached
Création du CSR et commande du certificat :
Dans un premier temps, commandez un certificat Positive SSL de Comodo sur Namecheap.
Ensuite, placez vous dans le dossier de Nginx :
cd /etc/nginx
Maintenant créez un dossier SSL et placez vous dedans :
mkdir ssl && cd ssl
On vas partir du principe que votre domaine s’appelle exemple.com.
Créez une clé avec la commande suivante, on va vous demander un mot de passe :
openssl genrsa -des3 -out exemple.com.key 2048
Maintenant lancez la commande suivante et rentrez le mot de passe que vous avez mis à l’étape précédente :
openssl rsa -in exemple.com.key -out exemple.com.key.nopass
Maintenant, créez le CSR et attention, remplissez bien les champs !
Le plus important c’est le CN (Common Name) qui doit correspondre à votre nom de domaine et ne mettez pas de Challenge Password !
openssl req -new -key exemple.com.key.nopass -out exemple.com.csr
Maintenant rendez-vous sur Namecheap et activez votre certificat. Dans le server type choissisez Apache/OpenSSL.
Lorsqu’on vous demandera votre CSR copiez bien tout le contenu de votre csr, les section begin et end comprises, exemple :
-----BEGIN CERTIFICATE REQUEST----- MIICoDCCAYgCAQAwWzELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUx ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEUMBIGA1UEAwwLZXhl bXBsZS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDUhoWwIYgl M8eyxXQlhZvUJMMCg05YWsQIPXvyeO3RaJ2TvP/SQKZ0iOnMHmGHmz0sZfD5DvnJ sR7GdZp4eJYLpyupUu/0bFx5LqRn8des5OklKSzM57Z/UAYRlR+4VB6MrWHUN1D3 VVrHc4DPAIRdAycf+t9NGclCSo+F2kr4I0rmEPe7SuWYGvb+kLBHVwdZwqQL6Cf0 GCyiq/xglfH3aIy9V4cV1mSEaLMhyWQ9Qnq0QrKW7Yp9hZID+9JHHP5qqoCr4Tu+ t4XWCJALFaOZClKuP1oZhufq41ASM9rzUNHw4M0keSfFzYWO1ks9TAQD6uvXcFj5 AbbmaZQmfU6ZAgMBAAGgADANBgkqhkiG9w0BAQUFAAOCAQEAfMiXJ9hrF6aJu4p3 ET+hFoeqQcYcbWrzBo0uNshrdb4RmhHS3e4IPU0l6M6/mhW5cuJrk02eW7+fENx3 pD+/dWjjKI0MSxlSij5fLSeFxreCKYjPd7GaCzt/LaSJBLy7Abx73q35s38hZoMz o5L/SIjrjkIUOmHzqvbB6WWEM9uuUBXQ2jpSdyyPB36zOP8yj7+VkMzMsBR3cETJ IHbGj5SaF9i2rTgV0SxOZXvJ8Yl4tMarXmuqFxASMOQ3lUV4Xm07Qb0F1Kb4lB/c pFIIAe/7LAWfk1ycmwPAtQCd8Kf2zFhb5tp2UCsd1uMOMkI/NrK46uexdtcGGjMu f2gawg== -----END CERTIFICATE REQUEST-----
Ensuite vous allez recevoir un mail de comodo semblable à celui-ci contenant 4 fichier dans une archive zip, envoyez les dans votre dossier ssl :
Une fois que tous les fichiers sont dans votre dossier SSL, lancez la commande suivante :
cat exemple_com.crt AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt > exemple.com.crt
Création de la configuration du Reverse Proxy :
Maintenant supprimez le site par défaut de Nginx :
cd /etc/nginx/sites-enabled rm*
Et créez un fichier pour votre serveur IIS :
nano observium
Et remplissez le avec ceci, modifiez les chemins des certificats pour correspondre à votre nom de domaine :
server { listen 443 ssl default; listen [::]:443 ssl default ipv6only=on; server_name exemple.com; server_name_in_redirect on; resolver 127.0.0.1; access_log off; #SSL ssl_certificate /etc/nginx/ssl/exemple.com.crt; ssl_certificate_key /etc/nginx/ssl/exemple.com.key.nopass; ssl_session_cache shared:SSL:10m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS; location ~* \.(jpg|jpeg|gif|png|ico|css|css|bmp|js)$ { root /opt/observium/html; access_log off; expires 360d; set $memcached_key "$uri?$args"; memcached_pass 127.0.0.1:11211; error_page 404 502 504 = @fallback; proxy_pass http://127.0.0.1:82; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location / { root /opt/observium/html; index index.html index.htm index.php; access_log off; set $memcached_key "$uri?$args"; memcached_pass 127.0.0.1:11211; error_page 404 502 504 = @fallback; proxy_pass http://127.0.0.1:82; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name exemple.com; return 301 https://$host$request_uri; }
Pour finir, redémarrez Nginx :
service nginx restart
Si vous avez tout bien suivi vous avez maintenant votre observium en full HTTPS :