Práticas recomendadas e tutoriais

Fixação de certificados em seu aplicativo Couchbase Mobile iOS

A comunicação entre o Couchbase Lite e o Sync Gateway é criptografada e protegida usando SSL/TLS. O protocolo SSL/TLS se baseia em uma infraestrutura de chave pública (PKI) usando um mecanismo Certificado X.509 para estabelecer a identidade do servidor do Sync Gateway. Normalmente, o certificado é emitido/assinado por uma Autoridade de Certificação confiável e é instalado no Sync Gateway. Em um ambiente de desenvolvimento, esse certificado pode ser autoassinado.
Se a confiabilidade do certificado for comprometida de alguma forma ou se você estiver usando um certificado autoassinado, a identidade do servidor não poderá ser estabelecida de forma confiável e não haverá garantias de confidencialidade na comunicação entre o cliente e o servidor.
Para aliviar esses problemas, o Couchbase Lite oferece suporte à fixação de certificados. A fixação de certificados é uma técnica que pode ser usada por aplicativos para "fixar" um host em seu certificado/chave pública. Em geral, o certificado é entregue ao cliente por um canal fora de banda e empacotado com o cliente. Ao fixar o certificado, o aplicativo cliente verificador não precisa mais depender de uma terceira parte confiável para verificar a assinatura, e essa técnica também funciona com certificados autoassinados.
Esta postagem abordará como fixar certificados em seu aplicativo cliente iOS Coucbase Lite.

Versão 1.4 do Couchbase Lite suporta apenas a fixação de certificados no iOS. O próximo Versão 2.0 (agora no Developer Preview) oferecerá suporte à fixação em todas as plataformas móveis compatíveis. Os trechos de código discutidos nesta postagem se aplicam ao versão de produção atual do Couchbase Lite. Fique atento a uma futura postagem no blog sobre a fixação de certificados na versão 2.0.

O problema

A comunicação entre o Couchbase Lite e o Sync Gateway é criptografada usando SSL/TLS.

Em um nível muito alto, o protocolo TLS funciona da seguinte forma.
Um certificado X.509 contendo a chave pública e a identidade do servidor é instalado no Sync Gateway. Esse certificado de chave pública pode ser assinado por uma Autoridade de Certificação de terceiros confiável ou pode ser autoassinado, sendo este último o caso mais comum em ambientes de desenvolvimento.
Durante o estabelecimento da conexão, o aplicativo cliente que executa o Couchbase Lite verifica a identidade do Sync Gateway usando o certificado do servidor. O Couchbase Lite usa o certificado raiz da CA confiável para validar o certificado. Uma vez verificado, o cliente prossegue com a troca de chaves secretas. O segredo compartilhado é então usado para criptografar a comunicação entre o cliente e o Sync Gateway.
Basic TLS Exchange
Consulte o RFC para obter informações específicas sobre o protocolo SSL/TLS.

Há alguns problemas com essa abordagem :-.
- Embora, na maioria das circunstâncias, seja razoável confiar na confiabilidade da CA, é possível que a própria CA seja comprometida. Se isso acontecer, não haverá uma maneira confiável de autenticar o Sync Gateway porque a CA usada para a verificação em si não é confiável!
- A comunicação cliente-servidor pode estar sujeita a um ataque MiTM (Man-in-the-Middle), por meio do qual um servidor desonesto que se faz passar por Sync Gateway pode emitir um certificado falso representando o Sync Gateway, assinado por uma CA falsa. Se, de alguma forma, o cliente for induzido a incluir o certificado da CA falsa em seu armazenamento de autoridade de certificação raiz confiável, o cliente confiará no certificado falso assinado pela CA falsa. Isso fará com que o cliente se comunique com um Sync Gateway falso.
- Se você estiver usando certificados autoassinados em seu ambiente de desenvolvimento, não há como o cliente validar de forma confiável a identidade do servidor.

Uma solução - Fixação de certificados

Uma maneira comum de lidar com os problemas acima é "fixar" o servidor Sync Gateway em seu certificado/chave pública. Nessa técnica, o Couchbase Lite é pré-configurado com o certificado confiável do Sync Gateway. Portanto, durante o estabelecimento da conexão, o Couchbase Lite usa esse certificado pré-configurado para verificar a identidade do servidor. Isso elimina a dependência de uma CA externa de terceiros para a verificação do certificado.
O Site da OWASP é uma boa referência sobre a fixação de certificados.

Advertência

É importante observar que, como os aplicativos são empacotados com o certificado, toda vez que o certificado expira, o aplicativo precisa ser atualizado com o novo certificado. Isso pode ser um pouco mais desafiador em ambientes móveis, nos quais os lançamentos de aplicativos podem exigir revisões da App Store e o ônus de atualizar os aplicativos recai sobre os usuários. Portanto, esteja ciente de quando os certificados expiram e faça planos apropriados para publicar os aplicativos com os novos certificados.

Histórico

A pilha do Couchbase Mobile inclui o Couchbase Lite banco de dados incorporado executado localmente em dispositivos e Gateway de sincronização na nuvem, que normalmente é apoiada por Servidor Couchbase persistindo os dados na nuvem. O Sync Gateway lida com a replicação de documentos entre os dispositivos.

Instalação do certificado no Sync Gateway

Siga as instruções na seção Portal do desenvolvedor do Couchbase para instalar o certificado de servidor relevante em seu Sync Gateway

Alguns pontos a serem observados durante a geração do certificado
- O certificado e a chave privada correspondente devem estar no formato .pem
- Instale os certificados em um local acessível ao Sync Gateway
- Se você estiver gerando um certificado autoassinado, provavelmente o campo mais importante é o CommonName. Deve ser o FQDN de seu Sync Gateway. Se o seu Sync Gateway não tiver um, você deverá especificar use localhost para localhost ou o endereço IPA estático do seu Sync Gateway.
self signed certificate
Uma vez configurado, seu gateway de sincronização deve ser acessado via https.

Agrupamento de certificados em seu aplicativo iOS

  • Converta o certificado PEM no formato der usando o comando abaixo

Você pode consultar este Folha de dicas sobre SSL para obter detalhes sobre os vários comandos do openSSL.

  • Abra seu arquivo .xcodeproj e arraste e solte os arquivos .der em seu poejct. Certifique-se de que você tenha "Copiar arquivos, se necessário" opção marcada
    Copy files into xcode
  • Após a cópia, a estrutura de seu projeto seria algo como o seguinte
    Certificate Added
  • Fixação do certificado do servidor Sync Gateway
    Isso requer apenas algumas linhas de código. O código deve ser executado uma vez. Portanto, fazê-lo no ponto do código em que você inicializa o Gerenciador de CBL pode ser uma boa opção.

As etapas 1 e 2 são autoexplicativas.

Etapa 3: SecCertificate é um objeto do Core Foundation que representa um certificado X.509

Etapa 4: O Couchbase Replicator deve ser configurado com o certificado do Sync Gateway usando o comando setAnchorCerts no método CBLReplicação objeto. Ao especificar somenteEstes como verdadeiroSe você definir o certificado como "certificado de segurança", estará dizendo ao Replicator que ele deve confiar apenas nesse certificado. Se você o definir como falsoSe você estiver adicionando o certificado do Sync Gateway à lista de certificados raiz integrados confiáveis pela plataforma iOS.

É isso aí! Com apenas algumas etapas, você pode ativar a fixação de certificados em seu aplicativo iOS.

O que vem a seguir

Como você deve ter percebido nesta publicação, a fixação de certificados é muito fácil de configurar em seus aplicativos iOS. Embora o suporte na V1.4 seja limitado ao iOS, fique atento à próxima versão do Versão 2.0 (agora no Developer Preview), que também incluirá suporte em outras plataformas móveis.
Se tiver dúvidas ou comentários, deixe um comentário abaixo ou sinta-se à vontade para entrar em contato comigo pelo Twitter @rajagp ou por e-mail priya.rajagopal@couchbase.com. O Fóruns do Couchbase são outro bom lugar para entrar em contato com perguntas.

 

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Priya Rajagopal, Diretora Sênior, Gerenciamento de Produtos

Priya Rajagopal é diretora sênior de gerenciamento de produtos da Couchbase, responsável pelas plataformas de desenvolvedor para a nuvem e a borda. Ela desenvolve software profissionalmente há mais de 20 anos em vários cargos técnicos e de liderança de produtos, com mais de 10 anos de foco em tecnologias móveis. Como delegada de padrões de IPTV da TISPAN, ela foi uma das principais colaboradoras das especificações de padrões de IPTV. Ela tem 22 patentes nas áreas de rede e segurança de plataforma.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.