Se tiene instalado Apache y cacti en Debian 5.0 y se desea acceder al servidor en forma segura.
Instalacion de openssh:
#aptitude install openssl
Habilitar SSH en apache:
#a2enmod ssl
Verificar que se este escuchando en el puerto 443 en el archivo /etc/apache2/ports.conf y buscar "Listen 443":
NameVirtualHost *:80
Listen 80
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443
Generar clave privada en /etc/ssl/private/
openssl genrsa -out casaserver.key 1024
Generar el archivo csr(Certificate Signing Request):
openssl req -new -key casaserver.key -out casaserver.csr
Despues autofirmar en certificado, con un periodo de validez que se desee:
openssl x509 -req -days 365 -in casaserver.csr -signkey casaserver.key -out casaserver.crt
Buscar en /etc/apache2/sites-available/ un sitio como default-ssl o crear uno e incluir:
SSLEngine on
SSLCertificateFile /etc/ssl/private/casaserver.crt
SSLCertificateKeyFile /etc/ssl/private/casaserver.key:
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
Options FollowSymLinks
AllowOverride None
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/ssl_access.log combined
Alias /doc/ "/usr/share/doc/"
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /etc/ssl/private/casaserver.crt
SSLCertificateKeyFile /etc/ssl/private/casaserver.key
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
BrowserMatch ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
Habilitar el sitio default-ssl:
a2ensite default-ssl
Por ultimo reiniciar apache:
/etc/init.d/apache2 restart
Para acceder solo en forma segura se debe dehabilitar el sitio default y crear un sitio para redireccionar.
Para deshabilitar el sitio default de Apache buscar en /etc/apache2/sites-enabled/ y aplicar:
#a2dissite 000-default
En este caso el sitio se llamaba 000-default.
Luego en /etc/apache2/sites-available/ crear con un editor el archivo
redir con este contenido:
RewriteEngine on
RewriteLog /var/log/apache2/https_rewrite.log
RewriteLogLevel 1
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
Luego habilitar el modulo rewrite:
a2enmod rewrite
Y reiniciar Apache, asi siempre se accederá con https aun cuando se escriba http.
Sitios de referencia: