Apache SSL, serveur Web
De Diablotins.org.
|
Apache, le serveur Oueb.
ATTENTION : cette documentation n'est pas une documentation sur Apache, mais une documentation sur son implémentation dans FreeBSD.
Elle n'est pas exhaustive sur la configuration du serveur, et ne peut pas vous aider dans des cas très spécifiques. Elle implique une bonne connaissances de base de Apache.
C'est le serveur HTTP principal du mouvement Open-source, mais c'est aussi le serveur le plus utilisé, y compris propriétaire.
Son nom vient de A patchy Server, car sa structure est un ensemble de module qui à présent forme un ensemble unifié et cohérent.
La version que nous allons installer est un version 1.3.X, la version 2 est déjà disponible, mais pour des raisons de dépendances, je ne vous conseille pas de l'utiliser.
Sommaire |
Installation
Pour les ceux qui ne veulent pas utiliser la couche SSL du monde, ou pour les branches anciennes de FreeBSD:
Précisez le dans /etc/make.conf, par les entrées:
[...] OPENSSL_OVERWRITE_BASE=YES NO_OPENSSL= true [...]
La première ligne sert à préciser que le ports doit réécrire la version système. La deuxième sert à ne pas recompiler OpenSSL du monde, lors d'un “make world”.
Maintenant, on installa apache à proprement dit.
Plusieurs [port]]s de Apache, existent, y compris Apache + SSL, mais construisons pour cette article
“www/apache13-modssl”.
Ensuite, renommez le script RC de Apache:
# mv /usr/local/etc/rc.d/apache.sh.sample /usr/local/etc/rc.d/apache.sh
Apache se lance donc via :
# /usr/local/etc/rc.d/apache.sh start
et se stoppe via :
# /usr/local/etc/rc.d/apache.sh stop
Avec l'entrée idoine dans /etc/rc.conf.
Configuration de base
Tout d'abord, un pré-requis, validez votre /etc/hosts ou votre DNS pour vous assurer que votre machine puisse résoudre sa propre adresse.
De toute façon, entré les lignes suivantes dans votre /etc/hosts.
[...] 127.0.0.1 localhost localhost.my.domain ..
Puis, supprimez les liens symboliques des “DocumentROOTS”, Web et CGI :
# rm /usr/local/www/data/ # mv /usr/local/www/data.default /usr/local/www/data # rm /usr/local/www/cg-bin/ # mv /usr/local/www/cgi-bin.default /usr/local/www/cgi-bin
Enfin, la configuration proprement dite, éditez le fichier de configuration “/usr/local/etc/apache/httpd.conf” et vérifieez les entrées suivantes :
[...] ServerAdmin root@ma_machine.mon_domaine.tld ServerName ma_machine.mon_domaine.tld [...]
Le FQDN doit correspondre avec les résolution de /etc/hosts ou de votre domaine, sinon Apache ne démarrera pas.
Vous pouvez créer un alias «webmaster» dans “/etc/aliases”, (voir documentation sur le courrier électronique).
Pour l'exécution des CGI on doit ajouter des entrées “ExecCGI” dans les blocs “Directory” suivants :
# vi /usr/local/etc/apache/httpd.conf
--
[...]
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
</Directory>
<Directory "/usr/local/www/data">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride all
Order allow,deny
Allow from all
</Directory>
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
[...]
Et ajouter les lignes suivantes pour les CGI 'c' et Perl :
# vi /usr/local/etc/apache/httpd.conf -- [...] AddHandler cgi-script .cgi AddHandler cgi-script .pl [...]
Installation du certificats SSL
Nous allons maintenant générer un certificat auto-signé personnel Pour votre domaine, il doit correspondre à la valeur de “ServerName” dans votre httpd.conf.
$ su - # cd # mkdir key # cd key # openssl req -new -out server.csr Using configuration from /etc/ssl/openssl.cnf Generating a 1024 bit RSA private key ............++++++ ......++++++ writing new private key to 'privkey.pem' Enter PEM pass phrase: Verifying password - Enter PEM pass phrase: ----- 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]:France Locality Name (eg, city) []:PARIS Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mon_Organisation Organizational Unit Name (eg, section) []:mon_domaine.tld Common Name (eg, YOUR name) []:g!mon_domaine.tld Email Address []:mon@adresse.mail Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: # ls server.csr privkey.pem # openssl rsa -in privkey.pem -out server.key read RSA key Enter PEM pass phrase: writing RSA key #ls server.csr server.key privkey.pem # openssl x509 -in server.csr -out server.cert -req -signkey server.key -days 365 Signature ok subject=/C=FR/ST=France/L=PARIS/O=Mon_Organisation/OU=mon_domaine.tld/CN=mon_doamine.tld/Email=mon@adresse.mail Getting Private key # ls server.crt server.csr server.key privkey.pem
Maintenant, il faut le copier dans les répertoires des clefs et certificats :
# cp server.key /usr/local/etc/apache/ssl.key/ # cp server.crt /usr/local/etc/apache/ssl.crt/
PHP4
Pour installer le module PHP4, on utilise le port lang/php4 qui installe à la fois le CGI et le module.
Ensuite, éditez le fichier de configuration d'Apache pour ajouter les entéres suivantes près des primitives du même type :
[...] LoadModule php4_module libexec/apache/libphp4.so [...] AddModule mod_php4.c [...] AddType application/x-httpd-php .php .php4 .phtml AddType application/x-httpd-php-source .phs [...]
Ruby
Pour installer “Mod_ruby”, c'est un peu différent mais guère plus.
Installez le port www/mod_ruby , il a une dépendance avec Ruby, bien sûr, mais aussi Eruby, embedded Ruby.
Éditez ensuite le fichier de configuration de Apache pour y ajouter près des primitives du même genre pour le Loadmodule et après les blocs pour le reste :
# vi /usr/local/etc/apache/httpd.conf
--
[...]
LoadModule ruby_module libexec/apache/mod_ruby.so
[...]
IfModule mod_ruby.c>
RubyRequire apache/ruby-run
RubySafeLevel 0
<Files *.rb>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
</Files>
RubyRequire apache/eruby-run
<Files *.rhtml>
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
</Files>
</IfModule>
[...]
Tests
Pour tester , on vas editer un fichier de chaques formats et faire le test via un browser, puis un test via HTTPS et installer le certificat dans le navigateur, toutes les étapes ne vont pas être décrites ici, seulement l'édition des fichiers :
# rm -rf /usr/local/www/data/ # echo "" > /usr/local/www/data/test.php # echo "<% put 'Test Eruby' %>" > /usr/local/www/data/test.rhtml # echo "put 'Test Ruby'" > /usr/local/www/data/test.rb # echo "print 'Test Perl';" > /usr/local/www/data/test.pl # echo "Test HTML" > /usr/local/www/data/test.html # ln -s /usr/local/www/data/test.html /usr/local/www/data/index.html

