Skip to content

Web & Certificats SSL


Commandes pour gérer les certificats SSL

  • Tester la clĂ© privĂ©e :
openssl rsa -noout -modulus -in <FICHIER.KEY>
  • Tester le certificat (CRT) :
openssl x509 -noout -modulus -in <FICHIER.CRT>
  • Afficher la date d’expiration d’un certificat :
openssl x509 -in <FICHIER.CRT> -noout -enddate
  • Afficher les informations essentielles d’un certificat :
openssl x509 -noout -in <FICHIER.CRT> -issuer -subject -dates
  • Tester la connexion SSL sur un domaine :
openssl s_client -connect <DOMAIN.TLD>:443 </dev/null
  • Afficher la date de validitĂ© et les noms DNS d’un certificat :
domaine=<DOMAIN.TLD>
openssl s_client -connect ${domaine}:443 </dev/null | openssl x509 -noout -dates
openssl s_client -connect ${domaine}:443 </dev/null | openssl x509 -noout -text | grep DNS
  • CrĂ©er une clĂ© privĂ©e 2048 bits :
openssl genrsa 2048 > <FICHIER.KEY>
  • GĂ©nĂ©rer une CSR (Certificate Signing Request) :
openssl req -new -key <FICHIER.KEY> -out <FICHIER.CSR>
  • Afficher le contenu d’une CSR :
openssl req -in <FICHIER.CSR> -text -noout
  • ConcatĂ©ner clĂ©, certificat et CA en un fichier PEM :
cat <FICHIER.KEY> <FICHIER.CRT> <CA.CRT> > <FICHIER.PEM>
  • GĂ©nĂ©rer un fichier PFX (Windows IIS) :
openssl pkcs12 -export -out <FICHIER.PFX> -inkey <FICHIER.KEY> -in <FICHIER.CRT> -certfile <CA.CRT>
  • Afficher le contenu d’un fichier PFX :
openssl pkcs12 -info -in <FICHIER.PFX>
  • Extraire la clĂ© privĂ©e d’un fichier PFX :
openssl pkcs12 -in <FICHIER.PFX> -nocerts -out <FICHIER.KEY> -nodes

Installation basique Apache et Nginx avec vhost HTTP/HTTPS


Apache

  • Installation (Debian/Ubuntu) :
apt update
apt install apache2
  • Configuration minimale d’un VirtualHost avec SSL Fichier exemple /etc/apache2/sites-available/monsite.conf :
<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html

    # Redirection HTTP vers HTTPS
    Redirect "/" "https://example.com/"
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/example.com.crt
    SSLCertificateKeyFile /etc/ssl/private/example.com.key
    # SSLCertificateChainFile /etc/ssl/certs/chain.pem (optionnel)

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>
  • Activer SSL et le site puis recharger Apache :
a2enmod ssl
a2ensite monsite.conf
systemctl reload apache2

Nginx

  • Installation (Debian/Ubuntu) :
apt update
apt install nginx
  • Configuration minimale d’un serveur avec SSL Fichier exemple /etc/nginx/sites-available/monsite :
server {
    listen 80;
    server_name example.com;

    # Redirection HTTP vers HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    # ssl_trusted_certificate /etc/ssl/certs/chain.pem; (optionnel)

    root /var/www/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
  • Activer le site et recharger Nginx :
ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Tomcat

  • Installation (Debian/Ubuntu) :
apt update
apt install tomcat9
  • Activer SSL dans Tomcat Modifier le fichier : /etc/tomcat9/server.xml
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"
           keystoreFile="/etc/ssl/private/keystore.p12"
           keystorePass="changeit"
           keystoreType="PKCS12" />
  • CrĂ©er un keystore PKCS12 Ă  partir d’un certificat et d’une clĂ© privĂ©e :
openssl pkcs12 -export \
  -in /etc/ssl/certs/example.com.crt \
  -inkey /etc/ssl/private/example.com.key \
  -certfile /etc/ssl/certs/chain.pem \
  -out /etc/ssl/private/keystore.p12

⚠️ Le mot de passe du keystore doit correspondre à keystorePass dans server.xml.

  • RedĂ©marrer Tomcat :
systemctl restart tomcat9

HAProxy

  • Installation (Debian/Ubuntu) :
apt update
apt install haproxy
  • CrĂ©er un certificat combinĂ© (clĂ© + CRT + CA) :
cat /etc/ssl/private/example.com.key \
    /etc/ssl/certs/example.com.crt \
    /etc/ssl/certs/chain.pem > /etc/ssl/private/example.com.pem
  • Exemple de configuration SSL minimaliste Fichier /etc/haproxy/haproxy.cfg :
frontend https_front
    bind *:443 ssl crt /etc/ssl/private/example.com.pem
    mode http
    default_backend web_servers

frontend http_front
    bind *:80
    redirect scheme https code 301 if !{ ssl_fc }

backend web_servers
    mode http
    server web1 127.0.0.1:8080 check
  • RedĂ©marrer HAProxy :
systemctl restart haproxy

Emplacements typiques des certificats SSL

Type Emplacement habituel
Certificat combiné .pem /etc/ssl/private/example.com.pem (HAProxy)
Keystore PKCS12 /etc/ssl/private/keystore.p12 (Tomcat)
Clé privée .key /etc/ssl/private/example.com.key
Certificat .crt /etc/ssl/certs/example.com.crt
CA Intermédiaire /etc/ssl/certs/chain.pem

Sécurisez tous les fichiers privés avec chmod 600.


Commandes utiles Web

  • Supprimer une injection de hack dans plusieurs fichiers :
for i in `grep <HACK> * -rl`; do
  sed -i -e 's/eval(base64_decode(\\"<HACK>=\\"))\\;//g' $i;
  echo $i;
done
  • Exemple pour un hack prĂ©cis :
for i in `grep DQplcnJvcl9yZXBvcnRpbmcoMCk7DQokcWF6cGxtPWhlYWRlcnNfc2VudCgpOw0KaWYgKCEkcWF6cGxtK * -rl`; do
  sed -i -e 's/eval(base64_decode(\\"DQplcnJvcl9yZXBvcnRpbmcoMCk7DQokcWF6cGxtPWhlYWRlcnNfc2VudCgpOw0KaWYgKCEkcWF6cGxtKXsNCiRyZWZlcmVyPSRfU0VSVkVSWydIVFRQX1JFRkVSRVInXT0=\\"))\\;//g' $i;
  echo $i;
done
  • Lister et trier les IPs de connexion par frĂ©quence :
awk '{print $1}' <CHEMIN-LOG> | sort -n | uniq -c | sort -rnk1,

Notes

  • Remplacez example.com par votre nom de domaine.
  • Pour un certificat SSL gratuit et automatisĂ©, utilisez Let's Encrypt.
  • Les commandes OpenSSL ci-dessus vous aideront Ă  diagnostiquer et gĂ©rer vos certificats.