SSL vhosts não são NameVirtualHosts - eles são vhosts baseados em IP.
Remova o NameVirtualHost *:443
da sua configuração.
Estou tentando configurar o Apache (2.2.3) para executar dois sites com SSL usando domínios e endereços IP diferentes. Ambos os sites funcionam bem na porta 80, mas quando tentei ativar o SSL para o site2, recebi um erro ssl_error_bad_cert_domain; website2 pega o certificado SSL para website1.
Aqui está minha configuração no httpd.conf:
# Website1
NameVirtualHost 192.168.10.1:80
<VirtualHost 192.168.10.1:80>
DocumentRoot /var/www/html
ServerName www.website1.org
</VirtualHost>
NameVirtualHost 192.168.10.1:443
<VirtualHost 192.168.10.1:443>
SSLEngine On
SSLCertificateFile conf/ssl/website1.cer
SSLCertificateKeyFile conf/ssl/website1.key
</VirtualHost>
# Website2
NameVirtualHost 192.168.10.2:80
<VirtualHost 192.168.10.2:80>
DocumentRoot /var/www/html/chart
ServerName www.website2.org
</VirtualHost>
NameVirtualHost 192.168.10.2:443
<VirtualHost 192.168.10.2:443>
SSLEngine On
SSLCertificateFile conf/ssl/website2.cer
SSLCertificateKeyFile conf/ssl/website2.key
</VirtualHost>
Atualização: Em resposta a Shane (isso não caberia na caixa de comentário), aqui está a saída do apachectl -S:
VirtualHost configuration:
192.168.10.2:80 is a NameVirtualHost
default server www.website2.org (/etc/httpd/conf/httpd.conf:1033)
port 80 namevhost www.website2.org (/etc/httpd/conf/httpd.conf:1033)
192.168.10.2:443 is a NameVirtualHost
default server bogus_host_without_reverse_dns (/etc/httpd/conf/httpd.conf:1040)
port 443 namevhost bogus_host_without_reverse_dns (/etc/httpd/conf/httpd.conf:1040)
192.168.10.1:80 is a NameVirtualHost
default server www.website1.org (/etc/httpd/conf/httpd.conf:1017)
port 80 namevhost www.website1.org (/etc/httpd/conf/httpd.conf:1017)
192.168.10.1:443 is a NameVirtualHost
default server bogus_host_without_reverse_dns (/etc/httpd/conf/httpd.conf:1024)
port 443 namevhost bogus_host_without_reverse_dns (/etc/httpd/conf/httpd.conf:1024)
wildcard NameVirtualHosts and _default_ servers:
_default_:443 192.168.10.1 (/etc/httpd/conf.d/ssl.conf:81)
Syntax OK
SSL vhosts não são NameVirtualHosts - eles são vhosts baseados em IP.
Remova o NameVirtualHost *:443
da sua configuração.
Por favor, remova
NameVirtualHost 192.168.10.1:443
e
NameVirtualHost 192.168.10.2:443
Não faz sentido ativar o material de hospedagem virtual baseado em nome do Apache para conexões SSL / TLS ou você gostaria de usar a extensão SNI.
Aqui está como eu consegui trabalhar. Eu tive que mover a configuração ssl do httpd.conf e configurar dois virtualhosts no ssl.conf.
link
# Website1
<VirtualHost 192.168.10.1:80>
DocumentRoot /var/www/html
ServerName www.website1.org
</VirtualHost>
# Website2
<VirtualHost 192.168.10.2:80>
DocumentRoot /var/www/html/chart
ServerName www.website2.org
</VirtualHost>
ssl.conf
<VirtualHost 192.168.10.1:443>
DocumentRoot "/var/www/html/"
ServerAdmin [email protected]
ServerName www.website1.org
SSLEngine On
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:
+EXP:+eNULL
SSLCertificateFile /etc/httpd/conf/ssl.crt/website1.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/website1.key
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
<VirtualHost 192.168.10.2:443>
DocumentRoot "/var/www/html/chart/"
ServerAdmin [email protected]
ServerName www.website2.org
SSLEngine On
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:
+EXP:+eNULL
SSLCertificateFile /etc/httpd/conf/ssl.crt/website2.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/website2.key
SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
Agora que o Apache2 lida com virtualhosts baseados em nomes para HTTP
AND HTTPS
, eu recomendaria configurar seus domínios em seu próprio arquivo de configuração. Assim como o Apache faz agora com seus diretórios de configuração "sites-available / sites-enabled". Coloque as declarações http
e https
em um arquivo e salve-o no diretório "sites-enabled" ou salve onde quiser e associe-o sym.
Como: /etc/apache2/sites-enabled/Website_ONE.com.conf:
<VirtualHost *:80>
ServerName Website_ONE.com
#if you want to redirect to https:
Redirect permanent / https://Website_ONE.com/
DocumentRoot /WWW/Website_ONE.com/
</VirtualHost>
<VirtualHost *:443>
ServerName Website_ONE.com
DocumentRoot /WWW/Website_ONE.com/
### SSL Setup ###
SSLEngine on
SSLCertificateFile /etc/SSL_conf/Website_ONE.com/cert.pem
SSLCertificateKeyFile /etc/SSL_conf/Website_ONE.com/privkey.pem
SSLCertificateChainFile /etc/SSL_conf/Website_ONE.com/chain.pem
</VirtualHost>
Em seguida: /etc/apache2/sites-enabled/Website_TWO.com.conf:
<VirtualHost *:80>
ServerName Website_TWO.com
#if you want to redirect to https:
Redirect permanent / https://Website_TWO.com/
DocumentRoot /WWW/Website_TWO.com/
</VirtualHost>
<VirtualHost *:443>
ServerName Website_TWO.com
DocumentRoot /WWW/Website_TWO.com/
### SSL Setup ###
SSLEngine on
SSLCertificateFile /etc/SSL_conf/Website_TWO.com/cert.pem
SSLCertificateKeyFile /etc/SSL_conf/Website_TWO.com/privkey.pem
SSLCertificateChainFile /etc/SSL_conf/Website_TWO.com/chain.pem
</VirtualHost>
Esses arquivos podem, como eu disse, ser mantidos em qualquer lugar - desde que sejam seguros (ou seja, legíveis apenas pelas pessoas que precisam de acesso) - e vinculados à pasta sites-enabled . Mesmo com os arquivos de chave e tudo isso. Faz com que seja mais fácil para o IMHO rastrear seus hosts virtuais se todas as configurações estiverem em um arquivo com o nome do domínio. BTW, eu usaria caminhos absolutos na sua configuração vs relativa - como você fez na sua resposta.
Tente remover ou comentar o bloco <VirtualHost _default_:443>
em /etc/httpd/conf.d/ssl.conf
.
Você precisa do ServerName www.server [1 | 2} .com na seção
Se você realmente executar o apache 2.2.3, o problema é que você não pode fazer Virtual Hosting baseada em nome no SSL, porque o seu mod_ssl não o suporta.
Você precisa da versão 2.2.12 ou posterior do apache para isso.
Você pode, no entanto, usar hospedagem virtual baseada em IP. A solução que você postou está realmente fazendo isso (dois sites em dois endereços IP diferentes)
Tags ssl apache-2.2