Outils personnels

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 apache2
  #apt-get install openssl ssl-cert
+
  apt-get install openssl ssl-cert
  #apt-get install libapache2-mod-php5 php5-cli php5-common php5-cgi
+
  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.
  #openssl req $@ -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
+
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]:GB
+
  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) []:London
+
  Locality Name (eg, city) []:Poitiers
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:Debian
+
  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 600 /etc/apache2/ssl/apache.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
+
  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
+
  /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
+
  /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

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.