Este procedimiento detalla cómo poner un puerto https adicional en Apache (sobre Linux), considerando que originalmente estamos usando el puerto 443 para este fin, y queremos usar el puerto 4443 apuntando a otro directorio root, con el mismo certificado ssl.
Certificado SSL
1) Se crea la carpeta root del nuevo puerto https adicional. Por ejemplo /var/www2, y se le dan los premisos de acceso
mkdir /var/www2
chown -R ubuntu:ubuntu /var/www2
chmod -R 777 /var/www2
2) Se agrega el puerto el puerto https adicional /etc/apaches/ports.conf, por ejemplo el puerto 4443
Listen 80
Listen 443
Listen 4443
<IfModule ssl_module>
Listen 443
Listen 4443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
Listen 4443
</IfModule>
3) En /etc/apache2/sites-enabled/000-default.conf se agrega el virtual host al puerto https adicional, con el nuevo root
<VirtualHost *:4443>
ServerName dominio.com.co
ServerAdmin webmaster@localhost
DocumentRoot /var/www2/
ErrorLog ${APACHE_LOG_DIR}/error_sms.log
CustomLog ${APACHE_LOG_DIR}/access_sms.log combined
#SSL configuration:
SSLEngine on
SSLCertificateKeyFile /etc/ssl/ssl.key/dominio_com_co.key
SSLCertificateFile /etc/ssl/ssl.crt/www_dominio_com_co.crt
SSLCertificateChainFile /etc/ssl/ssl.crt/www_dominio_com_co.ca-bundle
</VirtualHost>
4) En el archivo /etc/apache2/sites-available/default-ssl.conf
Dentro de <IfModule mod_ssl.c> se agrega el default para el nuevo puerto
<VirtualHost _default_:4443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www2
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch «\.(cgi|shtml|phtml|php)$»>
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch «MSIE [2-6]» \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch «MSIE [17-9]» ssl-unclean-shutdown
</VirtualHost>
5) Se agrega en /etc/apache2/apache2.conf los permisos para la carpeta nueva
<Directory /var/www2/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
6) En el firewall del servidor se debe dar acceso al puerto 4443 (iptables, firewall de Windows o Security Group de Amazon EC2)
7) El nuevo puerto se llama desde el navegador con https://dominio.com.co:4443
Para verificar si el puerto está debidamente abierto, debe mostrarse este comando:
# ss -lnt
LISTEN 0 128 :::4443 :::*
Esto puede ser útil cuando no queremos que ciertos procesos sean vistos desde el puerto https de producción, o se estos procesos se están afectando por reglas de direccionamiento del sitio principal.
Este es un servicio de divulgación de conocimiento de ITSoftware SAS.