Você precisa apontar para o seu certificado SSL -
<VirtualHost _default_:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog ${APACHE_LOG_DIR}/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
DocumentRoot /var/www-example.com
<directory /var/www-example.com>
Options All
AllowOverride All
Require all granted
</directory>
ErrorLog ${APACHE_LOG_DIR}/ssl-example.com-error.log
CustomLog ${APACHE_LOG_DIR}/ssl-example.com-access.log combined
</VirtualHost>
Se você deseja servir vários domínios, ainda é possível fazê-lo, pelo menos, para navegadores modernos que entendem o SNI / etc.
Primeiro, obtenha certificados letencrypt separados para cada domínio. Se você tiver vários nomes de host (ou seja, ambos www.example.com
e example.com
), eles poderão compartilhar, desde que o domínio real seja o mesmo.
letsencrypt certonly -d example1.com -d www.example1.com -d mail.example1.com
letsencrypt certonly -d example2.com -d www.example2.com -d mail.example2.com
Isso lhe dará 2 conjuntos de certs, sob os diretórios /etc/letsencrypt/live/DOMAIN/
.
Ao criar suas configurações de vhost, em vez de especificar o _default_:443
, use o IP real do host e aponte para os arquivos de certificado apropriados.
<VirtualHost 10.0.1.2:443>
ServerName example1.com
ServerAlias www.example1.com
ServerAdmin [email protected]
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example1.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example1.com/privkey.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog ${APACHE_LOG_DIR}/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
DocumentRoot /var/www-example1.com
<directory /var/www-example1.com>
Options All
AllowOverride All
Require all granted
</directory>
ErrorLog ${APACHE_LOG_DIR}/ssl-example1.com-error.log
CustomLog ${APACHE_LOG_DIR}/ssl-example1.com-access.log combined
</VirtualHost>
<VirtualHost 10.0.1.2:443>
ServerName example2.com
ServerAlias www.example2.com
ServerAdmin [email protected]
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example2.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example2.com/privkey.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
CustomLog ${APACHE_LOG_DIR}/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
DocumentRoot /var/www-example2.com
<directory /var/www-example2.com>
Options All
AllowOverride All
Require all granted
</directory>
ErrorLog ${APACHE_LOG_DIR}/ssl-example2.com-error.log
CustomLog ${APACHE_LOG_DIR}/ssl-example2.com-access.log combined
</VirtualHost>
Eu não coleto informações de formulário, etc. nos meus sites, mas eu quero que tudo execute HTTPS, então eu configuro configurações de vhost para redirecionar solicitações não HTTPS para o lado HTTPS, com um catch-all sem nome que redireciona para example1.com -
<VirtualHost *:80>
RewriteEngine on
RewriteRule ^/(.*)$ https://example1.com/$1 [R,L]
</VirtualHost>
<VirtualHost *:80>
ServerName example1.com
ServerAlias www.example1.com
RewriteEngine on
RewriteRule ^/(.*)$ https://example1.com/$1 [R,L]
</VirtualHost>
<VirtualHost *:80>
ServerName example2.com
ServerAlias www.example2.com
RewriteEngine on
RewriteRule ^/(.*)$ https://example2.com/$1 [R,L]
</VirtualHost>