Le logo de la Apache Software Foundation Dans ce post report de certaines de mes vieilles notes sur la façon de créer et d'installer un certificat SSL sur un serveur Web Apache 1.3 .* avec le module mod_ssl. Pour plus de détails et de document de référence qui est au http://www.modssl.org/docs / page et de l'homme »de« openssl. Une version HTML de ce dernier est à http://www.openssl.org/docs/.

Utilisation de la boîte à outils `` openssl, vous pouvez générer une clé privée RSA, qui est ensuite combiné avec un CSR (Certificate Signing Request). Voyons comment générer de la clé privée RSA et comment attribuer serveur web Apache. L'exemple suivant porte sur la distribution FreeBSD 6.0-RELEASE avec Apache 1.3.33, mais il est facilement extensible à toute autre plate-forme:

  1. La première étape est de créer la clé privée RSA, ou une clé de 1024 bits RSA, qui est crypté à l'aide d'un triple-DES et stockées dans un fichier. Pem que texte ASCII. Pour rendre plus difficile pour le cryptage, et - en conséquence - le plus sûr, utiliser un ensemble de fichiers comme aléatoire. Ce sont tous les fichiers qui ont été compressés avec gzip ``:
    $ openssl genrsa -des3 -rand file1:file2:file3:file4:file5 -out server.key 1024 sera invité à entrer un mot de passe. Il est important de stocker le mot de passe en lieu sûr, si pour une raison quelconque, le mot de passe est perdu, la clé sera généré complètement inutilisable! Ne sous-estimez pas cette recommandation en raison d'une erreur de ce genre peut entraîner le versement d'une modeste somme d'argent pour générer un nouveau certificat en raison de la perte d'une clé, l'autorité de certification qui a été adressée (par exemple: VeriSign), Thawte, etc) nécessitent de re-paiement déjà versé pour le certificat avant. Il s'agit d'une somme au-delà - quand j'écris - EURO 400.00 / an!
  2. Comme il a été mis un mot de passe pour la clé ainsi générés, chaque fois que vous aurez besoin de redémarrer Apache pour entrer ou - mieux - Apache en passant par un simple script bash qui peuvent être tirées directement dans httpd.conf:
    SSLPassPhraseDialog exec:/usr/local/etc/apache/password.sh Le script va simplement être quelque chose comme:
    #!/bin/sh
    echo "password123"
    #!/bin/sh
    echo "password123"
    Si vous ne souhaitez pas utiliser un mot de passe (pas recommandé!) Est toujours la possibilité de supprimer le cryptage triple DES sur la touche. Si vous optez pour une solution similaire, au moins faire en sorte que la clé est lisible que par root: si d'autres ont réussi à obtenir la clé privée de le déchiffrer, le certificat qui lui est associée sera retirée immédiatement, pour des raisons évidentes. Cela dit, voici comment faire pour supprimer la clé de chiffrement:
    $ openssl rsa -in server.key -out server.pem

Maintenant que nous avons la clé privée peut générer la CSR (Certificate Signing Request). La RSE mai être utilisé de deux façons:

  • Envoi de la CSR à une autorité de certification, cela permettra de vérifier l'identité du demandeur et à la délivrance d'un certificat signé
  • Utilisation de la RSE afin de générer un certificat auto -

Nous allons à la deuxième option: si la RSE est utilisé pour générer un certificat auto-, ce qui n'est pas reconnu par toute autorité de certification. Les certificats de ce type ne donne aucune garantie pour le navigateur de confiance, mais qui sont techniquement équivalents à certifiés et de garantir ainsi un maximum de sécurité dans la transmission / réception de données au cours du voyage.

Au cours du processus de création de la RSE va recevoir des informations par le biais de l'invite de texte simple. Ces informations seront ensuite les attributs du certificat X.509. La plus importante place de la "Common Name (eg, YOUR name)", qui doit correspondre au FQDN (Fully Qualified Domain Name) du serveur pour lequel il sera connexion SSL sécurisée. La commande pour générer la CSR est la suivante:

$ openssl req -new -key server.key -out server.csr Après cela, il va générer de l'auto-certifiés par la commande:

$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt Il a ainsi généré sera valide pour 10 ans.

Il ne reste maintenant que des modifications à la configuration du serveur web Apache. Il faut d'abord être identifiés dans le répertoire où vous voulez déplacer le certificat, dans notre cas:

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

Une fois déplacé certificats éditez simplement le fichier httpd.conf, afin que, chaque fois pour vous de redémarrer Apache pour charger les paramètres de l'hôte virtuel qui doit répondre en SSL. Voici un exemple 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 cause de la création d'un hôte virtuel SSL www.agliardi.net et accessible sur le port 443, l'adresse IP par défaut du serveur web.
Vous pouvez ajouter tous les hôtes virtuels SSL, vous avez besoin, mais il doit être prudent de spécifier un port différent pour chacun d'eux! Sauf si vous avez d'avoir une adresse IP dédiée pour chaque domaine, ce qui arrive très rarement.

Il ne reste maintenant redémarrer Apache et pointez votre navigateur à l'adresse https: / / www.agliardi.net!

Share:
  • del.icio.us
  • Google
  • Digg
  • Facebook
  • Technorati
  • YahooMyWeb
  • MySpace