Table des matières

Serveur Web sécurisé

Installer un serveur web sécurisé via SSL.

Packages

sudo apt-get install -y nginx certbot python-certbot-nginx

Configuration nginx

Créons le site web https://test.sleto.net avec support PHP 7.3 via fpm

Ajouter le fichier /etc/nginx/site-enabled/test_sleto_net

server {
    listen      80;
    listen [::]:80;
    
    server_name test.sleto.net;
 
    charset     utf-8;
    access_log /var/log/nginx/test.sleto.access.log;
    error_log  /var/log/nginx/test.sleto.error.log;
    root /var/www/test.sleto/;
    
    client_max_body_size 100M;
    
    gzip on;
    gzip_vary on;
    gzip_min_length 1024;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types text/plain text/css text/xml text/javascript application/javascript application/x-javascript application/xml application/json application/pdf;
    
    fastcgi_buffers  16 16k;
    fastcgi_buffer_size  32k;
    
    location / {
        index index.php index.html;
        try_files $uri $uri/ @cms;
        location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        }
    }    
}

Vérification syntaxique des configuration

sudo nginx -t

Configuration certbot

Pour créer la clef SSL Let's encrypt.

sudo certbot --nginx -d test.sleto.net

En fin de script, valider le fait d'installer la clef SSL pour votre sous-domaines. Le fichier /etc/nginx/site-enabled/test_sleto_net sera alors corrigé en conséquence.

Fichier de configuration HTTPS/SSL

Afin d'être facilement réutilisable, il est également possible de se créer un fichier du genre /opt/ssl/test.sleto.net.conf:

ssl_certificate      /opt/ssl/test.sleto.net.crt;
ssl_certificate_key  /opt/ssl/test.sleto.net.key;
ssl_protocols        TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
keepalive_timeout    70;
ssl_session_cache    shared:SSL:10m;
ssl_session_timeout  10m;

Il est alors simple de modifier sa configuration nginx précédente en:

server {
    listen      80;
    listen [::]:80;
    server_name test.sleto.net;
    return 301 https://\$host\$request_uri;
}

server {
    listen 443 ssl;
    server_name test.sleto.net;

    include /opt/ssl/test.sleto.net.conf;

.....

}

Rechargement

Recharger le serveur web

sudo service nginx reload

ou

sudo service nginx restart