Tudo que eu descobri é que isso não é possível através do apache. Mas servidores modernos como Nginx, Node.js suportam via protocolo SPDY, Aqui está o link
Decidimos executar um proxy da Web seguro por meio do apache. nós atribuímos ao servidor um nome de domínio e, em seguida, compramos o certificado SSL para esse domínio e depois aplicamos no Ubuntu 12.04 (preciso) com o Apache / 2.2.22.
Quando eu executei o servidor no site padrão (HTTP), ou seja, apenas com IP como virtualhost, o proxy funcionou bem.
Então decidi fazer SSL para esse servidor proxy, já que o SSL para o endereço IP não é permitido, escolhemos um domínio e, portanto, fomos em frente.
Também habilitei o mod_rewrite, para que todas as solicitações HTTP passem pelo site SSL
Aqui está meu host virtual HTTP e a confirmação de host virtual SSL, respectivamente,
<VirtualHost 12.12.12.12:80>
ServerAdmin webmaster@localhost
ServerName example.net
ServerAlias www.example.net
ProxyRequests On
ProxyVia On
<Proxy *>
Order allow,deny
Deny from all
Allow from 104.12
</Proxy>
RewriteEngine on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
DocumentRoot /var/www
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/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>
Configuração SSL
<IfModule mod_ssl.c>
<VirtualHost 12.12.12.12:443>
ServerAdmin webmaster@localhost
ServerName example.net
ServerAlias www.example.net
ProxyVia On
ProxyPass / https://127.0.0.1:443/
ProxyPreserveHost On
SSLProxyCheckPeerCN off
#ProxyPreserveHost on
ProxyRequests On
SSLEngine on
SSLProxyEngine On
SSLCertificateFile /etc/ssl/ssl_proxy/example_net.crt
SSLCertificateKeyFile /etc/ssl/ssl_proxy/example.net.key
SSLProxyVerify require
SSLProxyVerifyDepth 10
SSLProxyMachineCertificateFile /etc/ssl/ssl_proxy/example.net.csr
SSLProxyCACertificateFile /etc/ssl/ssl_proxy/example_net.ca-bundle
SSLStrictSNIVHostCheck on
DocumentRoot /var/www
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
<Proxy *>
Order allow,deny
Deny from all
Allow from 104.12
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
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>
<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>
</IfModule>
Eu tentei todas as opções de possibilidades acima, mas nenhuma funcionou. Então, sempre que eu acessar um site, recebo o erro
Hostname example.net provided via SNI and hostname yahoo.com provided via HTTP are different.
Qualquer ideia do que estou fazendo errado?
Obrigado Sai
Tudo que eu descobri é que isso não é possível através do apache. Mas servidores modernos como Nginx, Node.js suportam via protocolo SPDY, Aqui está o link
Houve um bug no Apache que causou esse erro devido a um caso comparação sensível de nomes de host. Foi corrigido recentemente e uma nova compilação com a correção está agora disponível . Além disso, você pode ter o certificado alterado para todas as minúsculas para ser mais compatível com a convenção (maiúsculas raramente são usadas).
Tags ssl proxy apache-http-server