L'Apache Software Foundation logo Dans ce post, je porte certains de mes anciens billets sur la façon de construire et installer un certificat SSL sur un serveur web Apache 1.3. * Avec mod_ssl. Pour la documentation de référence plus détaillée et plus complète qui se trouve à http://www.modssl.org/docs / `et` la page man d'openssl. Une version html de ce dernier est à http://www.openssl.org/docs/ .

Utilisation de la boîte à outils `` openssl pouvez générer une clé privée RSA, qui plus tard associer à un CSR (Certificate Signing Request). Voyons comment pour générer la clé privée RSA et l'assigner comme le serveur web Apache. L'exemple ci-dessous renvoie à la distribution de FreeBSD 6.0-RELEASE avec Apache 1.3.33, mais il est facilement étendu à toute autre plate-forme:

  1. Vous devez d'abord créer la clé privée RSA, ou d'une clé RSA de 1024 bits qui est crypté à l'aide d'un triple-DES et stockés dans un fichier fichier. Pem en tant que texte ASCII. Pour rendre plus complexe le cryptage et - par conséquent - plus elle est sûre, nous allons utiliser une série de fichiers en tant que valeur de départ aléatoire. Ces fichiers sont celles qui ont été préalablement compressées avec gzip ``:
    $ openssl genrsa -des3 -rand file1:file2:file3:file4:file5 -out server.key 1024 Vous serez invité à entrer un mot de passe. Il est important de garder votre mot de passe dans un endroit sûr pour quelque raison que si le mot de passe est perdu, la clé générée sera complètement inutile! Ne sous-estimez pas cette recommandation, car une telle erreur peut entraîner une dépense d'une somme d'argent considérable pour générer un nouveau certificat en raison de la perte d'une clé privée, l'autorité de certification qui ont été approchés (par exemple: VeriSign ) Thawte , etc.), il faudra re-paiement de la somme déjà versée pour la libération du certificat précédent. C'est un montant qui dépasse - quand j'écris - l'EURO 400.00 / an!
  2. Puisque vous avez défini un mot de passe pour la clé ainsi généré, chaque fois que vous redémarrez Apache devra entrer ou - mieux - Apache de passer par un script bash simple qui peut être invoquée directement dans le fichier httpd.conf:
    SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh Le script va simplement être quelque chose comme ce qui suit:
    #!/bin/sh
    echo "password123"
    #!/bin/sh
    echo "password123"
    .
    Si vous ne souhaitez pas utiliser un mot de passe (non recommandé!) Est toujours la possibilité de supprimer le cryptage triple-DES partir de la clé. Si vous optez pour une solution similaire, au moins s'assurer que la clé n'est lisible que par root: si d'autres ont réussi à obtenir la clé privée déchiffrée, le certificat sera révoqué immédiatement associé avec lui, pour des raisons évidentes. Cela dit, voici comment faire pour supprimer le chiffrement de la clé:
    $ openssl rsa -in server.key -out server.pem

Maintenant que nous avons la clé privée, nous pouvons générer la CSR (Certificate Signing Request). La RSE peut être utilisé de deux manières:

  • En soumettant votre CSR à une autorité de certification, ce sera de vérifier l'identité du demandeur et de délivrer un certificat signé
  • Utilisation de la RSE afin de générer un certificat auto-produite

Nous traitons ici de la seconde hypothèse: dans le cas où la RSE est utilisée pour générer un certificat auto-produit, qui n'est pas reconnu par toute autorité de certification. Les certificats de ce genre ne donne aucune garantie de fiabilité pour le navigateur, mais sont techniquement équivalents aux certificats réels et donc de permettre une sécurité maximale lors de la transmission / réception de données pendant que vous naviguez.

Pendant le processus de création de la RSE sera demandé certaines informations par le biais invite texte simple. Cette information sera ensuite les attributs du certificat X.509. L'entrée la plus importante concernant le «Common Name (eg, YOUR name)" qui doit correspondre au nom de domaine complet (Fully Qualified Domain Name) du serveur qui se connecte protégé par SSL. La commande pour générer la CSR est la suivante:

$ openssl req -new -key server.key -out server.csr Sans cela, nous procédons par générer un certificat auto-aide de la commande:

$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt Le certificat ainsi produite sera valide pour 10 ans.

Doit maintenant apporter des modifications à la configuration du serveur web Apache. Il faut d'abord être identifié pour déplacer le répertoire où le certificat, dans notre cas:

/usr/local/apache/etc/ssl.crt/
/usr/local/apache/etc/ssl.key/

Une fois déplacé les certificats il suffit d'éditer le fichier httpd.conf de telle sorte que, à chaque redémarrage d'Apache pour charger les paramètres pour cet hôte virtuel doit répondre par SSL. Voici un assez simple qui fonctionne sur le port standard 443:

# SSL Virtual Hosts
<IfDefine SSL>
<VirtualHost _default_:443>
ServerAdmin webmaster@agliardi.net
DocumentRoot /usr/local/apache/share/htdocs
ServerName www.agliardi.net
ScriptAlias /cgi-bin/ /usr/local/apache/share/htdocs/cgi-bin/
SSLEngine on
SSLCertificateFile /usr/local/apache/etc/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/etc/ssl.key/server.pem
SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /usr/local/apache/var/log/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine>
# SSL Virtual Hosts
<IfDefine SSL>
<VirtualHost _default_:443>
ServerAdmin webmaster@agliardi.net
DocumentRoot /usr/local/apache/share/htdocs
ServerName www.agliardi.net
ScriptAlias /cgi-bin/ /usr/local/apache/share/htdocs/cgi-bin/
SSLEngine on
SSLCertificateFile /usr/local/apache/etc/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/etc/ssl.key/server.pem
SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog /usr/local/apache/var/log/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfDefine>
Ces instructions entraînera la création d'un hôte virtuel SSL appelé www.agliardi.net et accessible sur le port 443, l'adresse IP par défaut de votre serveur web.
Vous pouvez ajouter tous les hôte virtuel SSL que vous avez besoin, mais il faut prendre soin de spécifier un port différent pour chacun d'eux! Sauf si vous avez une adresse IP entièrement dédiée pour chaque domaine, ce qui arrive assez rarement.

Doit maintenant redémarrer Apache et pointer votre navigateur vers https://www.agliardi.net !

Partagez ce contenu:
  • del.icio.us
  • Google Bookmarks
  • Digg
  • Facebook
  • Technorati
  • MySpace
  • Twitter