Apache2 SSL sur Debian Etch : Différence entre versions
De wikiGite
(14 révisions intermédiaires par un autre utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
== Install Apache + SSL (+PHP si nécessaire) == | == Install Apache + SSL (+PHP si nécessaire) == | ||
− | + | apt-get install apache2 | |
− | + | apt-get install openssl ssl-cert | |
− | + | apt-get install libapache2-mod-php5 php5-cli php5-common php5-cgi | |
Une fois le serveur apache installé, on doit générer un certificat, activer le support SSL dans apache et configurer les options SSL. | Une fois le serveur apache installé, on doit générer un certificat, activer le support SSL dans apache et configurer les options SSL. | ||
Ligne 11 : | Ligne 11 : | ||
'''Note''': Pour générer un certificat sous Sarge, il suffisait de taper "apache2-ssl-certificate", mais cette commande n'est plus disponible sous Etch. | '''Note''': Pour générer un certificat sous Sarge, il suffisait de taper "apache2-ssl-certificate", mais cette commande n'est plus disponible sous Etch. | ||
− | + | Si ssl-cert est installé, il fournit la commande make-ssl-cert : | |
+ | mkdir /etc/apache2/ssl | ||
+ | make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem | ||
+ | |||
+ | '''Ou''' si cette commande n'est pas disponible, il faut générer les certificats à la main : | ||
+ | openssl req $@ -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem | ||
Generating a 1024 bit RSA private key | Generating a 1024 bit RSA private key | ||
− | + | .......................++++++ | |
− | + | ...................++++++ | |
writing new private key to ‘/etc/apache2/apache.pem’ | writing new private key to ‘/etc/apache2/apache.pem’ | ||
− | + | ||
You are about to be asked to enter information that will be incorporated | You are about to be asked to enter information that will be incorporated | ||
into your certificate request. | into your certificate request. | ||
Ligne 24 : | Ligne 29 : | ||
For some fields there will be a default value, | For some fields there will be a default value, | ||
If you enter ‘.’, the field will be left blank. | If you enter ‘.’, the field will be left blank. | ||
− | + | ||
− | Country Name (2 letter code) [AU]: | + | Country Name (2 letter code) [AU]:FR |
− | State or Province Name (full name) [Some-State]: | + | State or Province Name (full name) [Some-State]:Vienne |
− | Locality Name (eg, city) []: | + | Locality Name (eg, city) []:Poitiers |
− | Organization Name (eg, company) [Internet Widgits Pty Ltd]: | + | Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example SARL |
Organizational Unit Name (eg, section) []: | Organizational Unit Name (eg, section) []: | ||
− | Common Name (eg, YOUR name) []: | + | Common Name (eg, YOUR name) []:Example SARL |
− | Email Address []: | + | Email Address []:user1@example.net |
Vérifier les permissions sur le fichier .pem | Vérifier les permissions sur le fichier .pem | ||
− | + | chmod -R 400 /etc/apache2/ssl/ | |
+ | |||
+ | ''30/12/2008'' '''Troisième''' solution : utiliser /usr/lib/ssl/misc/CA.sh | ||
+ | |||
+ | Editer le fichier et changer 'DAYS="days 365"' par 'DAYS="days 3650"'. Puis : | ||
+ | # Création d'un certificat d'autorité | ||
+ | /usr/lib/ssl/misc/CA.sh -newca | ||
+ | # Création d'un certificat pour le server web | ||
+ | /usr/lib/ssl/misc/CA.sh -newreq | ||
+ | #On auto-signe ce certificat | ||
+ | /usr/lib/ssl/misc/CA.sh -sign | ||
+ | Les fichiers sont sauvegardés sous ./demoCA. "newcert.pem" est le certificat, "newreq.pem" est la clé. On peut les nommer de façon à les reconnaitre : | ||
+ | mv newcert.pem host.example.com.pem | ||
+ | mv newreq.pem host.example.com.key | ||
+ | Puis : | ||
+ | cd demoCA | ||
+ | #On crypte la clé après l'avoir sauvegardée | ||
+ | cp host.example.com.key host.example.com-bkp | ||
+ | openssl rsa -in host.example.com.key-bkp -out host.example.com.key | ||
+ | Il ne reste plus qu'à les copiers dans le répertoire approprié et donner les bons droits : | ||
+ | cp host* /etc/apache2/ssl | ||
+ | chmod 400 /etc/apache2/ssl/host* | ||
Ajouter le port 443 aux ports écoutés par apache, dans /etc/apache2/ports.conf | Ajouter le port 443 aux ports écoutés par apache, dans /etc/apache2/ports.conf | ||
Ligne 39 : | Ligne 65 : | ||
Activer le support SSL pour apache | Activer le support SSL pour apache | ||
− | + | a2enmod ssl | |
Module ssl installed; run /etc/init.d/apache2 force-reload to enable. | Module ssl installed; run /etc/init.d/apache2 force-reload to enable. | ||
Redémarrer apache pour prendre en compte les modifications | Redémarrer apache pour prendre en compte les modifications | ||
− | + | /etc/init.d/apache2 restart | |
Configurer SSL dans les VirtualHosts | Configurer SSL dans les VirtualHosts | ||
Ligne 58 : | Ligne 84 : | ||
Recharger la configuration apache après ces modifications | Recharger la configuration apache après ces modifications | ||
− | + | /etc/init.d/apache2 reload | |
Reloading web server config… XXXX | Reloading web server config… XXXX | ||
+ | |||
+ | == Pour info : génération d'un certificat pour achat auprès d'une CA == | ||
+ | Pour info, générer un certificat SSL | ||
+ | openssl req -nodes -new -keyout mondomaine.key -out mondomaine.csr | ||
+ | Et éventuellement bis, acheter le certificat correspondant sur cacert.org ou verisign.fr autre | ||
+ | |||
+ | |||
+ | == Pour info : génération manuelle de certificat autosigné == | ||
+ | Sinon certificat autosigné création manuelle : | ||
+ | |||
+ | Génération de la bi-clé | ||
+ | openssl genrsa -out server.key 1024 | ||
+ | |||
+ | Génération du certificat autosigné | ||
+ | openssl req -new -x509 -days 365 -key server.key -out server.crt | ||
+ | Attention au champ Common Name (eg, YOUR name) : il faut mettre le même nom que le serveur. | ||
+ | |||
+ | Paramètres importants : | ||
+ | -x509 : génération d'un certificat autosigné, et non d'une simple requête | ||
+ | -days 3650 : le certificat est valable 3650 jours (dix ans !) | ||
+ | -key server.key : la clé publique est extraite de la bi-clé précédente | ||
+ | -out server.crt : le certificat est copié dans ce fichier | ||
+ | |||
+ | Vérification du certificat : | ||
+ | openssl x509 -in server.crt -text -noout | ||
+ | |||
+ | Création/remplacement du certificat Apache : | ||
+ | cat server.key > apache.pem | ||
+ | cat server.crt >> apache.pem. | ||
+ | Le certificat est autosigné, les navigateurs afficheront donc une anomalie. |
Version actuelle datée du 18 mars 2009 à 18:44
Sommaire
Install Apache + SSL (+PHP si nécessaire)
apt-get install apache2 apt-get install openssl ssl-cert apt-get install libapache2-mod-php5 php5-cli php5-common php5-cgi
Une fois le serveur apache installé, on doit générer un certificat, activer le support SSL dans apache et configurer les options SSL.
Générer un certificat
Générer un certificat permet de protéger le traffic entre client(s) et serveur, cependant il ne sera pas validé par une autorité de certification et provoquera des warnings.
Pour éviter ces messages, on doit obtenir un certificat validé par un vendeur de certificats SSL.
Note: Pour générer un certificat sous Sarge, il suffisait de taper "apache2-ssl-certificate", mais cette commande n'est plus disponible sous Etch. Si ssl-cert est installé, il fournit la commande make-ssl-cert :
mkdir /etc/apache2/ssl make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
Ou si cette commande n'est pas disponible, il faut générer les certificats à la main :
openssl req $@ -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem Generating a 1024 bit RSA private key .......................++++++ ...................++++++ writing new private key to ‘/etc/apache2/apache.pem’ You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ‘.’, the field will be left blank. Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Vienne Locality Name (eg, city) []:Poitiers Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example SARL Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []:Example SARL Email Address []:user1@example.net
Vérifier les permissions sur le fichier .pem
chmod -R 400 /etc/apache2/ssl/
30/12/2008 Troisième solution : utiliser /usr/lib/ssl/misc/CA.sh
Editer le fichier et changer 'DAYS="days 365"' par 'DAYS="days 3650"'. Puis :
# Création d'un certificat d'autorité /usr/lib/ssl/misc/CA.sh -newca # Création d'un certificat pour le server web /usr/lib/ssl/misc/CA.sh -newreq #On auto-signe ce certificat /usr/lib/ssl/misc/CA.sh -sign
Les fichiers sont sauvegardés sous ./demoCA. "newcert.pem" est le certificat, "newreq.pem" est la clé. On peut les nommer de façon à les reconnaitre :
mv newcert.pem host.example.com.pem mv newreq.pem host.example.com.key
Puis :
cd demoCA #On crypte la clé après l'avoir sauvegardée cp host.example.com.key host.example.com-bkp openssl rsa -in host.example.com.key-bkp -out host.example.com.key
Il ne reste plus qu'à les copiers dans le répertoire approprié et donner les bons droits :
cp host* /etc/apache2/ssl chmod 400 /etc/apache2/ssl/host*
Ajouter le port 443 aux ports écoutés par apache, dans /etc/apache2/ports.conf
Listen 443
Activer le support SSL pour apache
a2enmod ssl Module ssl installed; run /etc/init.d/apache2 force-reload to enable.
Redémarrer apache pour prendre en compte les modifications
/etc/init.d/apache2 restart
Configurer SSL dans les VirtualHosts
Editer /etc/apache2/sites-available/default et changer
NameVirtualHost *
par
NameVirtualHost *:80 NameVirtualHost *:443
Configurer les Virtualhosts utilisant le port 443 hosts : ajouter
SSLEngine on SSLCertificateFile /etc/apache2/apache.pem
Recharger la configuration apache après ces modifications
/etc/init.d/apache2 reload Reloading web server config… XXXX
Pour info : génération d'un certificat pour achat auprès d'une CA
Pour info, générer un certificat SSL openssl req -nodes -new -keyout mondomaine.key -out mondomaine.csr Et éventuellement bis, acheter le certificat correspondant sur cacert.org ou verisign.fr autre
Pour info : génération manuelle de certificat autosigné
Sinon certificat autosigné création manuelle :
Génération de la bi-clé
openssl genrsa -out server.key 1024
Génération du certificat autosigné
openssl req -new -x509 -days 365 -key server.key -out server.crt
Attention au champ Common Name (eg, YOUR name) : il faut mettre le même nom que le serveur.
Paramètres importants :
-x509 : génération d'un certificat autosigné, et non d'une simple requête -days 3650 : le certificat est valable 3650 jours (dix ans !) -key server.key : la clé publique est extraite de la bi-clé précédente -out server.crt : le certificat est copié dans ce fichier
Vérification du certificat :
openssl x509 -in server.crt -text -noout
Création/remplacement du certificat Apache :
cat server.key > apache.pem cat server.crt >> apache.pem.
Le certificat est autosigné, les navigateurs afficheront donc une anomalie.