Outils personnels

Apache2 SSL sur Debian Etch : Différence entre versions

De wikiGite

 
 
(15 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.
 +
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/
  
#openssl req $@ -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem
+
''30/12/2008'' '''Troisième''' solution : utiliser /usr/lib/ssl/misc/CA.sh
  
Generating a 1024 bit RSA private key
+
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
writing new private key to ‘/etc/apache2/apache.pem’
+
# Création d'un certificat pour le server web
—–
+
/usr/lib/ssl/misc/CA.sh -newreq
You are about to be asked to enter information that will be incorporated
+
#On auto-signe ce certificat
into your certificate request.
+
/usr/lib/ssl/misc/CA.sh -sign
What you are about to enter is what is called a Distinguished Name or a DN.
+
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 :
There are quite a few fields but you can leave some blank
+
mv newcert.pem host.example.com.pem
For some fields there will be a default value,
+
mv newreq.pem host.example.com.key
If you enter ‘.’, the field will be left blank.
+
Puis :
—–
+
cd demoCA
Country Name (2 letter code) [AU]:GB
+
#On crypte la clé après l'avoir sauvegardée
State or Province Name (full name) [Some-State]:
+
cp host.example.com.key host.example.com-bkp
Locality Name (eg, city) []:London
+
openssl rsa -in host.example.com.key-bkp -out host.example.com.key
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Debian
+
Il ne reste plus qu'à les copiers dans le répertoire approprié et donner les bons droits :
Organizational Unit Name (eg, section) []:
+
cp host* /etc/apache2/ssl
Common Name (eg, YOUR name) []:
+
chmod 400 /etc/apache2/ssl/host*
Email Address []:
 
  
This will complete the certificate now you need to make sure you have the correct permissions for .pem file if not use the
+
Ajouter le port 443 aux ports écoutés par apache, dans /etc/apache2/ports.conf
 +
Listen 443
  
following command to set the correct permissions
+
Activer le support SSL pour apache
 +
a2enmod ssl
 +
  Module ssl installed; run /etc/init.d/apache2 force-reload to enable.
  
#chmod 600 /etc/apache2/ssl/apache.pem
+
Redémarrer apache pour prendre en compte les modifications
 +
/etc/init.d/apache2 restart
  
By default the server will listen for incoming HTTP requests on port 80 - and not SSL connections on port 443. So you need to enable SSL support by entering the following entry to the file /etc/apache2/ports.conf save and exit the file.
+
Configurer SSL dans les VirtualHosts
  
Listen 443
+
Editer /etc/apache2/sites-available/default et changer
 +
NameVirtualHost *
 +
par
 +
NameVirtualHost *:80
 +
NameVirtualHost *:443
  
Enable SSL Support
+
Configurer les Virtualhosts utilisant le port 443 hosts : ajouter
 +
SSLEngine on
 +
SSLCertificateFile /etc/apache2/apache.pem
  
If you want to enable SSL support for your apache web server you need to use the following comamnd
+
Recharger la configuration apache après ces modifications
 +
/etc/init.d/apache2 reload
 +
  Reloading web server config… XXXX
  
#a2enmod ssl
+
== Pour info : génération d'un certificat pour achat auprès d'une CA ==
Module ssl installed; run /etc/init.d/apache2 force-reload to enable.
+
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
  
Now you need to restart the apache2 server using the following command
 
  
#/etc/init.d/apache2 restart
+
== Pour info : génération manuelle de certificat autosigné ==
 +
Sinon certificat autosigné création manuelle :
  
Configuring SSL Certificate to Virtual Hosts in Apache2
+
Génération de la bi-clé
 +
openssl genrsa -out server.key 1024
  
First you need to edit the /etc/apache2/sites-available/default file change
+
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.
  
NameVirtualHost *
+
Paramètres importants :
to
+
  -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
  
NameVirtualHost *:80
+
Vérification du certificat :
NameVirtualHost *:443
+
openssl x509 -in server.crt -text -noout
  
Now you need to configure Virtual hosts using port 80
+
Création/remplacement du certificat Apache :
 
+
cat server.key > apache.pem
Example
+
cat server.crt >> apache.pem.
ServerAdmin webmaster@localhost
+
Le certificat est autosigné, les navigateurs afficheront donc une anomalie.
.
 
.
 
.
 
configure Virtual hosts using port 443 the main difference is you need to use the following two lines for each SSL hosts.
 
 
 
SSLEngine on
 
SSLCertificateFile /etc/apache2/apache.pem
 
 
 
Example
 
ServerAdmin webmaster@localhost
 
.
 
.
 
.
 
SSLEngine on
 
SSLCertificateFile /etc/apache2/apache.pem
 
 
 
Now you need to restrat your apache web server using the following comamnd
 
 
 
# /etc/init.d/apache2 reload
 
 
 
Reloading web server config… XXXX
 

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.