Eu tenho lidado com isso nos últimos dias e isso está me deixando louca. Eu tenho o nginx agindo como um proxy reverso na frente do apache. Eu tenho dois vhosts cada configuração com seu próprio certificado ssl em nginx. Aqui estão as seções relevantes da configuração do nginx (eu acho)
VHOST1
listen 443;
server_name *.xxx.org xxx.org 64.58.248.26;
access_log /var/log/nginx/xxx-ssl.access.log;
error_log /var/log/nginx/xxx-ssl.error.log;
ssl on;
ssl_certificate /etc/nginx/ssl/xxx.org.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.key;
ssl_session_cache shared:SSL:15m;
ssl_session_timeout 15m;
VHOST2
listen 443;
server_name *.yyy.org yyy.org;
access_log /var/log/nginx/yyy-ssl.access.log;
error_log /var/log/nginx/yyy-ssl.error.log;
ssl on;
ssl_certificate /etc/nginx/ssl/yyy.org.pem;
ssl_certificate_key /etc/nginx/ssl/yyy.key;
ssl_session_cache shared:SSL:15m;
ssl_session_timeout 15m;
Com essa configuração eu sempre recebo o certificado correto para o xxx.org quando eu o visito. No entanto, quando eu vou ao yyy.org, às vezes o nginx usa o certificado xxx.org e às vezes ele usa o certificado certo (yyy.org). Eu não consigo encontrar qualquer rima ou razão pela qual ele escolhe usar o certificado errado quando isso acontece. Se eu acertar os servidores apache diretamente, em vez de usar o proxy através do nginx, tudo está funcionando corretamente, então acredito que o problema esteja no nginx em algum lugar.
Estou no uBuntu 10.04.4 e o SNI está ativado de acordo com o nginx -V.
O SSL_SESSION_CACHE sendo compartilhado causaria esse comportamento? Se eu ignorar o nginx e ir direto para o Apache, tudo funciona bem
Tags nginx