Quero forçar a verificação do cliente ssl em um dos meus hosts virtuais. Mas obtenha o erro "Nenhum certificado SSL necessário foi enviado", tentando obter algo dele.
Aqui estão as minhas configurações de teste:
# defaults
ssl_certificate /etc/certs/server.cer;
ssl_certificate_key /etc/certs/privkey-server.pem;
ssl_client_certificate /etc/certs/allcas.pem;
server {
listen 1443 ssl;
server_name server1.example.com;
root /tmp/root/server1;
ssl_verify_client off;
}
server {
listen 1443 ssl;
server_name server2.example.com;
root /tmp/root/server2;
ssl_verify_client on;
}
O primeiro servidor responde com 200 códigos http, mas o segundo retorna "400 Solicitação inválida, nenhum certificado SSL necessário foi enviado, nginx / 1.0.4".
Provavelmente, é implossível usar ssl_verify_client no mesmo IP? Devo vincular esses servidores a IPs diferentes, isso resolverá o meu problema?
Não sou especialista em nginx, mas já vi problemas semelhantes com o apache usando SSL e hosts virtuais. O problema é a ordem na qual o servidor lida com a negociação SSL versus a escolha do host virtual. A primeira etapa é estabelecer a conexão criptografada e somente depois disso, o servidor verá o nome do host que você está solicitando. E, até que saiba, usará a configuração padrão - que neste caso é o primeiro host, que requer um certificado de cliente para estabelecer a conexão SSL.
Portanto, resposta curta - nesse caso, seria melhor ter portas separadas ou endereços IP separados.
fonte
Encontrei o mesmo problema e encontrei uma solução.
Tente adicionar
default_server
sinalizador para o segundo servidorfonte