Minha intenção aqui é evitar muitos códigos repetitivos.
Essencialmente, o que estou tentando fazer é usar o mesmo bloco de configuração SSL para várias entradas do VirtualHost ...
<IfModule mod_ssl.c>
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/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
</Directory>
SSLCertificateFile /usr/share/ssl/certs/example/host.pem
SSLCertificateKeyFile /usr/share/ssl/certs/example/host.key
SSLCertificateChainFile /usr/share/ssl/certs/example/host.cert
<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 999.99.9.999:443>
ServerName subdomain1.example.com
DocumentRoot /var/www/subdomain1
</VirtualHost>
<VirtualHost 999.99.9.999:443>
ServerName subdomain2.bonfirehub.com
DocumentRoot /var/www/subdomain2
</VirtualHost>
</IfModule>
Agora, essa configuração não funciona para mim, mas acho que isso ilustra o que estou tentando alcançar. O próximo passo ideal seria abstrair esta configuração comum para cada VirtualHost em um arquivo separado e apenas carregá-lo através de uma diretiva Include.
Se não, talvez alguém possa sugerir outro método de configuração.
O objetivo para mim é ter uma configuração comum compartilhada, já que pretendo adicionar várias entradas do VirtualHost a um determinado IP que varia apenas por DocumentRoot e ServerName. Especificamente, o subdomínio ServerName é a única coisa que muda (note que estou usando um certificado curinga) e é por isso que quero configurar uma configuração compartilhada.
Eu descobri isso, mas deixarei isso no caso de alguém achar isso útil.
# VirtualHost
<IfModule mod_ssl.c>
<VirtualHost 999.99.9.999:443>
ServerName subdomain1.example.com
DocumentRoot /var/www/subdomain1
Include example.com-ssl.conf
</VirtualHost>
<VirtualHost 999.99.9.999:443>
ServerName subdomain2.example.com
DocumentRoot /var/www/subdomain2
Include example.com-ssl.conf
</VirtualHost>
</IfModule>
# Shared Config File
ServerAdmin webmaster@localhost
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /usr/share/ssl/certs/*.example.com/host.pem
SSLCertificateKeyFile /usr/share/ssl/certs/*.example.com/host.key
# Server Certificate Chain:
# Point SSLCertificateChainFile at a file containing the
# concatenation of PEM encoded CA certificates which form the
# certificate chain for the server certificate. Alternatively
# the referenced file can be the same as SSLCertificateFile
# when the CA certificates are directly appended to the server
# certificate for convinience.
SSLCertificateChainFile /usr/share/ssl/certs/*.example.com/host.cert
<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
Percebi que meu bloco de configuração original no topo não tinha código. Minha única outra pergunta de acompanhamento seria, em vez de ter que escrever
Include example.com-ssl.conf
Em cada VirtualHost não existe uma maneira de incluir todos eles nesse arquivo?
Tags ssl virtualhost apache-2.2