En linux para configurar un virtual host seguimos los siguientes pasos:
Para la instalación de apache2 en linux usar
sudo apt-get install apache2
Se usará como ejemplo miWeb1 y miWeb2
sudo mkdir -p /var/www/miWeb1/public_html
sudo mkdir -p /var/www/miWeb2/public_html
Sea la página index.html, /var/www/miWeb1/public_html/index.html
<html>
<head>
<title>Mi web 1</title>
</head>
<body>
<h1>Mi web 1</h1>
</body>
</html>
y para la página 2 index.html, /var/www/miWeb2/public_html/index.html
<html>
<head>
<title>Mi web 2</title>
</head>
<body>
<h1>Mi web 2</h1>
</body>
</html>
Para esto copiamos de /etc/apache2/sites-available/000-default.conf
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/miWeb1.conf
El archivo final debe ser:
<VirtualHost *:80>
ServerAdmin admin@miWeb1.com
ServerName miWeb1.com
ServerAlias www.miWeb1.com
DocumentRoot /var/www/miWeb1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
y de igual forma para miWeb2
<VirtualHost *:80>
ServerAdmin admin@miWeb2.com
ServerName miWeb2.com
ServerAlias www.miWeb2.com
DocumentRoot /var/www/miWeb2.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Se usa el comando a2ensite
sudo a2ensite miWeb1.conf
sudo a2ensite miWeb2.conf
Opcionalmente podemos des habilitar el sitio por defecto
sudo a2dissite 000-default.conf
Ahora reiniciamos el servidor apache
sudo /etc/init.d/apache2 restart
En caso de no tener un dominio, podemos modificar localmente el archivo /etc/hosts, quedando
127.0.0.1 localhost
127.0.1.1 miPc
# agregamos
127.0.0.1 miWeb1.com
127.0.0.1 miWeb2.com
Listo, ya podemos visitar nuestro sitios web.
Usando la configuración anterior, solo necesitamos habilitar ssl, crear las claves y modificar los archivos .conf
sudo a2enmod ssl
Crear la llave
cd /etc/ssl/
sudo openssl genrsa -out miWeb1.com.key 2048
Crearmos el certificado
sudo openssl req -new -key miweb1.key -out miWeb1.com.csr
Crear nuestro certificado autofirmado
sudo openssl x509 -req -days 365 -in miWeb1.com.csr -signkey miWeb1.com.key -out miWeb1.com.crt
Ahora modificaremos el archivos /etc/apache2/sites-available/miWeb1.conf
sudo vi /etc/apache2/sites-available/miWeb1.conf
y cambiamos el contenido a:
<VirtualHost *:80>
ServerAdmin admin@miWeb1.com
ServerName miWeb1.com
ServerAlias www.miWeb1.com
DocumentRoot /var/www/miWeb1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName miWeb1.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/miWeb1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# Enable/Disable SSL for this virtual host.
SSLEngine on
#SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLCertificateFile /etc/ssl/miWeb1.com.crt
SSLCertificateKeyFile /etc/ssl/miWeb1.com.key
#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Ahora solo queda reiniciar el servidor apache
sudo /etc/init.d/apache2 restart
Aquí usaremos las configuraciones anteriores, se modificará el archivo .conf y quien realizará esa modificación es el programa certbot.
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python-certbot-apache
sudo certbot --apache
sudo certbot certonly --apache
Para cualquiera de los casos responder a las preguntas que nos indican.