Para aqueles que desejam um contexto mais aprofundado sobre o motivo disso acontecer, além de como corrigi-lo, leia abaixo.
Com a introdução do iOS 9, para melhorar a segurança das conexões entre um aplicativo e serviços da web, as conexões seguras entre um aplicativo e seu serviço da web devem seguir as práticas recomendadas . O comportamento das melhores práticas é imposto pelo App Transport Security para:
- impedir a divulgação acidental, e
- forneça um comportamento padrão seguro.
Conforme explicado na Nota técnica de segurança de transporte de aplicativo , ao se comunicar com seu serviço da Web, o App Transport Security agora possui os seguintes requisitos e comportamento:
- O servidor deve suportar pelo menos a versão 1.2 do protocolo Transport Layer Security (TLS).
- As cifras de conexão são limitadas àquelas que fornecem sigilo para a frente (veja a lista de cifras abaixo).
- Os certificados devem ser assinados usando um algoritmo de hash de assinatura SHA256 ou melhor, com uma chave RSA de 2048 bits ou superior ou uma chave de curva elíptica (ECC) de 256 bits ou superior.
- Certificados inválidos resultam em falha grave e sem conexão.
Em outras palavras, sua solicitação de serviço da web deve: a.) Usar HTTPS eb.) Ser criptografada usando o TLS v1.2 com sigilo direto.
No entanto, como mencionado em outras postagens, você pode substituir esse novo comportamento do App Transport Security especificando o domínio não seguro no diretório Info.plist
aplicativo.
Para substituir, você precisará adicionar o NSAppTransportSecurity
>NSExceptionDomains
propriedades do dicionário ao seu Info.plist
. Em seguida, você adicionará o domínio do seu serviço da web ao NSExceptionDomains
dicionário.
Por exemplo, se eu quiser ignorar o comportamento da Segurança de Transporte de Aplicativo para um serviço da Web no host www.yourwebservicehost.com , faça o seguinte:
Abra seu aplicativo no Xcode.
Localize o Info.plist
arquivo no Project Navigator e clique com o botão direito do mouse e escolha a opção de menu Abrir como > Código-fonte . O arquivo da lista de propriedades aparecerá no painel direito.
Coloque o seguinte bloco de propriedades dentro do dicionário de propriedades principal (abaixo do primeiro <dict>
).
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>www.example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
Se você precisar fornecer exceções para domínios adicionais, adicione outra propriedade de dicionário abaixo NSExceptionDomains
.
Para descobrir mais sobre as chaves mencionadas acima, leia esta nota técnica já mencionada .