Como configurar o sigilo de encaminhamento no nginx para que o aplicativo iOS9 (Xcode7) com configurações ATS padrão possa se conectar ao meu servidor?

1

O App Transport Security do iOS9 afirma que as conexões que não atendem a determinados requisitos falharão. Abaixo estão os requisitos citados do documento da Apple ( link )

  • O servidor deve suportar pelo menos o protocolo TLS (Transport Layer Security) versão 1.2.
  • As cifras de conexão são limitadas àquelas que fornecem sigilo antecipado (veja a lista de cifras abaixo).
  • Os certificados devem ser assinados usando um algoritmo de hash de assinatura SHA256 ou superior, com uma chave RSA de 2048 bits ou superior ou uma chave ECC (Elliptic-Curve) de 256 bits ou superior.

Eu verifiquei se meu servidor realmente está usando um certificado com chave RSA de 2048 bits e assinei usando o algoritmo hash SHA256. De qualquer forma, meu aplicativo construído em Xcode7 não conseguiu se conectar ao meu servidor com a configuração ATS padrão. Depois de definir NSExceptionRequiresForwardSecrecy para NO no Info.plist do aplicativo, a conexão foi bem-sucedida. Então, parece que meu servidor não está configurado corretamente com criptografias de sigilo encaminhadas. Abaixo está minha configuração atual no nginx.conf:

ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers               'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';

Meu certificado é emitido pela Comodo e a configuração que usei acima também é do documento de suporte da Comodo ( link ).

De acordo com o documento da Apple, com as configurações padrão do ATS, as cifras aceitas incluem:

  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

(Parece que a configuração ssl_ciphers do meu nginx tem essas cifras.)

E se NSExceptionRequiresForwardSecrecy estiver definido como NO nas configurações do aplicativo, as seguintes cifras também serão aceitas:

  • LS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA

Com isso definido como NO , meu aplicativo se conecta com êxito ao meu servidor, embora o motivo permaneça desconhecido para mim.

Então, minha pergunta é, como devo configurar o nginx para encaminhar criptografias de criptografia para que o aplicativo iOS9 (Xcode7) com configurações ATS padrão possa se conectar com êxito?

ATUALIZADO:

Eu reconfigurei meu servidor seguindo o guia do link . Eu regenho um novo grupo DH com o seguinte comando:

openssl dhparam -out dhparams.pem 2048

e adicionei na minha configuração nginx:

ssl_dhparam dhparams.pem;

Mas a conexão do meu aplicativo ainda falha. A ferramenta nsurl --ats-diagnostics ainda indica que o problema é causado por sigilo de encaminhamento.

Para fins de diagnóstico, abaixo está a captura de tela da página de resultados ssltest do meu servidor, fornecida por ssllabs :

    
por goodbyeera 09.10.2015 / 20:00

0 respostas