SSL nginx configuration


Parfois en développement, nous avons besoin de tester les fonctions SSL. J’ai donc eu besoin de configurer un serveur Nginx en SSL. J’ai donc créé un certificat auto-signé. S’agissant d’un serveur de développement, je n’ai pas besoin de plus. Pour des serveurs de production, il faudra passer par un organisme certifié. Malheureusement suivant la configuration de votre serveur (international, sous-domaine etc …) cela peut revenir vite cher. Voici un micro tuto:

 

Pré-requis

- lib openssl (linux)

- module HttpSslModule normalement, il est présent par défaut

Les tests ont été réalisé sous Ubuntu 13.10

 

Créer un certificat auto-signé pour Nginx

 

Pour cette opération sous Linux, il n’y a vraiment rien de difficile, suivez le guide.

Première chose à faire créer un répertoire pour accueillir les certificats. S’agissant d’un serveur de test,  je vais créer un seul certificat pour tous les sites. Dans le cadre de production je vous conseille de les placer dans un répertoire de votre arborescence de site.

 

Je vais donc créer le répertoire dans /etc/nginx/ avec la commande suivante:

 

sudo mkdir /etc/nginx/certs

et me placer dans ce dernier:

cd /etc/nginx/certs

On créé tout simplement le certificat avec la commande suivant. Il est inutile de le sur-protéger

sudo openssl req -new -x509 -nodes -out server2.crt -keyout server2.key

 Que répondre aux questions ? (ATTENTION ce n’est qu’un Exemple), dans l’absolu s’agissant d’un serveur de DEV vous pouvez répondre ce que vous voulez et même rien.

 - Country Name (2 letter code) [AU] : répondre FR (pour la France)
- State or Province Name (full name) [Some-State]: France
- Locality Name (eg, city) []: Courbevoie
- Organization Name (eg, company) [Internet Widgits Pty Ltd]: GeekMPS
- Organizational Unit Name (eg, section) []: Blog
- Common Name (e.g. server FQDN or YOUR name) []:geekmps.fr
- Email Address []: votre e-mail (courriel pour les fans de la langue française)

 

 

On va faire en sorte que le certificat ne soit visible que par le root

chmod 600 server.crt

  

Mise en place du certificat pour Nginx

La toujours rien de sorcier, il suffit de lire la documentation, où copier les lignes ci-dessous :D

 

On va ajouter les lignes suivantes dans la configuration du serveur (/etc/nginx/sites-availables)

listen 443;

    ssl                  on;
   ssl_certificate      /etc/nginx/certs/server2.crt;
   ssl_certificate_key  /etc/nginx/certs/server2.key;

Exemple complet

server {
  listen   8081;
  listen 443;
  server_name joomla32.local;
  server_name_in_redirect on;

   ssl  on; 
   ssl_certificate      /etc/nginx/certs/server2.crt;
   ssl_certificate_key  /etc/nginx/certs/server2.key;

   root /home/jbaptiste/www/nginx/joomla32;
  index index.php index.html index.htm default.html default.htm;

 # Support Clean (aka Search Engine Friendly) URLs
       location / {
               try_files $uri $uri/ /index.php?q=$uri&$args;
       }

       # deny running scripts inside writable directories
       location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {
               return 403;
               error_page 403 /403_error.html;
       }


  client_max_body_size 20M;

   location ~ \.php$ {
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

       # With php5-cgi alone:
      # fastcgi_pass 127.0.0.1:9000;
      #With php5-fpm:
      fastcgi_pass unix:/var/run/php5-fpm.sock;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
#        include /etc/nginx/fastcgi.conf;
  }

# caching of files 
       location ~* \.(ico|pdf|flv)$ {
               expires 1y;
       }


       location ~* \.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$ {
               expires 14d;
       }
}

 

Un petit restart du serveur

sudo service nginx restart

 ou

sudo /etc/init.d/nginx restart

 

 

Images

SSL pour Nginx  img 001 SSL pour Nginx  img 002 SSL pour Nginx  img 003 SSL pour Nginx  img 004 SSL pour Nginx  img 005

Comments powered by CComment

We use cookies

Nous utilisons des cookies sur notre site web. Certains d’entre eux sont essentiels au fonctionnement du site et d’autres nous aident à améliorer ce site et l’expérience utilisateur (cookies traceurs). Vous pouvez décider vous-même si vous autorisez ou non ces cookies. Merci de noter que, si vous les rejetez, vous risquez de ne pas pouvoir utiliser l’ensemble des fonctionnalités du site.