Linux:Apache2 ssl
Un article de Djjnet.
Sommaire |
Pour activer ssl pour un site
- apache2-ssl-certificate
ceci crée un certificat mais n'est valable qu'un mois, utiliser --force pour le recréer
- a2enmod ssl
- ajouter au vhost :
SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem
Créer le certificat à la main
Il faut générer un certificat à signer (CSR). Le CA va la signer pour créer le certificat final (CRT).
Créer la clé du serveur
openssl genrsa -des3 -out sangoku.key 1024 openssl rsa -in sangoku.key -out sangoku.key
Créer la demande CSR
openssl req -new -key sangoku.key -out egroupware.csr
A la demande "Common Name (eg, YOUR name) []:" indiquer le nom du site : egroupware.dj-j.net
Créer le certificat du CA
openssl genrsa -des3 -out ca.key 1024
Autosigner le certificat du CA
openssl req -new -x509 -days 3000 -key ca.key -out ca.crt
Script sign.sh
#!/bin/sh ## ## sign.sh -- Sign a SSL Certificate Request (CSR) ## Copyright (c) 1998-1999 Ralf S. Engelschall, All Rights Reserved. ## # argument line handling CSR=$1 if [ $# -ne 1 ]; then echo "Usage: sign.sign <whatever>.csr"; exit 1 fi if [ ! -f $CSR ]; then echo "CSR not found: $CSR"; exit 1 fi case $CSR in *.csr ) CERT="`echo $CSR | sed -e 's/\.csr/.crt/'`" ;; * ) CERT="$CSR.crt" ;; esac # make sure environment exists if [ ! -d ca.db.certs ]; then mkdir ca.db.certs fi if [ ! -f ca.db.serial ]; then echo '01' >ca.db.serial fi if [ ! -f ca.db.index ]; then cp /dev/null ca.db.index fi # create an own SSLeay config cat >ca.config <<EOT [ ca ] default_ca = CA_own [ CA_own ] dir = . certs = . new_certs_dir = ./ca.db.certs database = ./ca.db.index serial = ./ca.db.serial RANDFILE = ./ca.db.rand certificate = ./ca.crt private_key = ./ca.key default_days = 3000 default_crl_days = 30 default_md = md5 preserve = no policy = policy_anything [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional EOT # sign the certificate echo "CA signing: $CSR -> $CERT:" openssl ca -config ca.config -out $CERT -infiles $CSR echo "CA verifying: $CERT <-> CA cert" openssl verify -CAfile ca.crt $CERT # cleanup after SSLeay rm -f ca.config rm -f ca.db.serial.old rm -f ca.db.index.old # die gracefully exit 0
Créer le certificat
sh sign.sh egroupware.csr
Vhost d'apache
SSLEngine On SSLCertificateFile /etc/apache2/ssl/egroupware.crt SSLCertificateKeyFile /etc/apache2/ssl/sangoku.key SSLCACertificateFile /etc/apache2/ssl/ca.crt


