How can I dynamically choose which certificate to use for the SSL connection based on the Host header?
O cabeçalho do Host faz parte do protocolo HTTP, mas o HTTPS é HTTP incorporado a uma conexão SSL. O que significa que você primeiro precisa estabelecer a conexão SSL (que precisa do certificado) antes de ter acesso ao cabeçalho do Host.
Se o cliente suportar SNI (todos os navegadores modernos o fazem, mas o IE / XP não), ele já enviará o nome de destino dentro do handshake SSL. Fornecer certificados diferentes com base no nome de destino geralmente é feito com seções de servidor diferentes no nginx. Você pode tentar usar o $ssl_server_name
na seção padrão, mas não tenho certeza se isso funcionará e, mesmo que isso funcione, isso pode afetar as otimizações, como o cache de sessão, de maneira negativa.