forcer l’utilisation de ssl sur un sous domaine avec ispcp
Tout d’abord il faut activer ssl sur votre serveur et générer vos certificats ssl (à moins que vous en ayez déjà).
Le how to officiel d’ispcp How to: SSL made easy est très bien fait et vous apprendra en premier lieu comment sécuriser votre control panel.
Ayant un peu plus cherché pour mettre la même chose en place avec un sous domaine géré par ispcp, je me permets de relayer la solution (en allemand) que j’ai trouvé dans un forum.
le but est de créer un virtual host sub.domain.tld accessible en ssl (sachant que le virtual host est simplement créé avec ispcp)
il faut d’abord créer vhost en écoute sur le port 443 en éditant
et en y ajoutant
SSLEngine On
SSLCertificateFile /etc/ssl/certs/domain.tld.crt
SSLCertificateKeyFile /etc/ssl/certs/domain.tld.key
SSLProtocol All -SSLv2
SSLCipherSuite ALL:!EXP:!NULL:!ADH:!LOW
SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown
<IfModule suexec_module>
SuexecUserGroup vu2001 vu2001
</IfModule>
ServerAdmin webmestre.cerdi@u-clermont1.fr
DocumentRoot /var/www/virtual/domain.tld/sub/htdocs
ServerName pssi.domain.tld
Alias /errors /var/www/virtual/domain.tld/errors/
ErrorDocument 401 /errors/401.html
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
ErrorDocument 503 /errors/503.html
ErrorLog /var/log/apache2/ssl_error_log
CustomLog /var/log/apache2/ssl_request_log ssl_combined
# httpd sub entry cgi support BEGIN.
ScriptAlias /cgi-bin/ /var/www/virtual/domain.tld/sub/cgi-bin/
<Directory /var/www/virtual/domain.tld/sub/cgi-bin>
AllowOverride AuthConfig
#Options ExecCGI
Order allow,deny
Allow from all
</Directory>
# httpd sub entry cgi support END.
<Directory /var/www/virtual/domain.tld/sub/htdocs>
# httpd sub entry PHP support BEGIN.
# httpd sub entry PHP support END.
Options -Indexes Includes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
# httpd sub entry PHP2 support BEGIN.
<IfModule mod_php5.c>
php_admin_value open_basedir "/var/www/virtual/domain.tld/:/var/www/virtual/domain.tld/phptmp/:/usr/share/php/"
php_admin_value upload_tmp_dir "/var/www/virtual/domain.tld/phptmp/"
php_admin_value session.save_path "/var/www/virtual/domain.tld/phptmp/"
php_admin_value sendmail_path '/usr/sbin/sendmail -f vu2001 -t -i'
</IfModule>
<IfModule mod_fastcgi.c>
ScriptAlias /php5/ /var/www/fcgi/domain.tld/
<Directory "/var/www/fcgi/domain.tld">
AllowOverride None
Options +ExecCGI -MultiViews -Indexes
Order allow,deny
Allow from all
</Directory>
</IfModule>
<IfModule mod_fcgid.c>
Include /etc/apache2/mods-available/fcgid_ispcp.conf
<Directory /var/www/virtual/domain.tld/sub/htdocs>
FCGIWrapper /var/www/fcgi/domain.tld/php5-fcgi-starter .php
Options +ExecCGI
</Directory>
<Directory "/var/www/fcgi/domain.tld">
AllowOverride None
Options +ExecCGI MultiViews -Indexes
Order allow,deny
Allow from all
</Directory>
</IfModule>
# httpd sub entry PHP2 support END.
</VirtualHost>
activer le virtual host
et recharger la configuration d’apache
reste à interdire l’utilisation du http non sécurisé, ce qui revient à forcer le https via un règle de rewriting qui peut par exemple être mise dans un .htaccess à la racine du sous domaine
et ajouter quelque chose du genre
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://sub.domain.tld/$1 [R,L]
</IfModule>>




