Couchbase Mobile

Fixação de certificados no Android com o Couchbase Mobile

Couchbase Mobile 2.0 suporta a fixação de certificados em todas as plataformas móveis do Couchbase. A fixação de certificado é uma técnica usada por aplicativos para "fixar" um host em seu certificado/chave pública. 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 a fixação de certificados. Para realizar a fixação do certificado, o certificado de chave pública é normalmente entregue ao aplicativo cliente por meio de um canal fora de banda e empacotado com o aplicativo cliente. Ao fixar o certificado, o aplicativo cliente verificador não precisa mais depender de uma CA de terceiros para verificar a assinatura. Essa técnica também é necessária para a comunicação com o Sync Gateway configurado com certificados autoassinados.

Esta postagem discutirá como fixar certificados em seu Coucbase Lite Versão 2.0 aplicativo Android habilitado. Versão 1.4 do Couchbase Lite só suportava a fixação de certificados no iOS e isso foi discutido neste postagem no blog.

Você pode baixar as últimas versões de pré-lançamento do Couchbase Mobile 2.0 em aqui.

Histórico

Se você estiver familiarizado com SSL/TLS ou tiver lido este postagem no blogSe você não estiver usando o Couchbase Mobile, pode pular para a seção "Suporte à fixação de certificados com o Couchbase Mobile" desta postagem do blog.

A comunicação entre o Couchbase Lite e o Sync Gateway é criptografada usando SSL/TLSEm 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.

Fixação de certificados

Uma maneira comum de lidar com os problemas listados 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 fornecidos 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, onde 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 antes da expiração do certificado.

Suporte à fixação de certificados com o Couchbase Mobile

Esta publicação pressupõe que você esteja familiarizado com o desenvolvimento de aplicativos Android e com a configuração do seu aplicativo para usar o Couchbase Lite 2.0. Caso contrário, leia este artigo Primeiros passos guia. Usaremos Gateway de sincronização 1.5 na nuvem com o suporte de um Servidor Couchbase persistindo os dados na nuvem. O Couchbase Server não é relevante para as discussões desta postagem.

Instalação do certificado no Sync Gateway

Siga as instruções na seção Portal do desenvolvedor do Couchbase para gerar/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 isso não for feito, ocorrerá um erro quando você iniciar o Sync Gateway com o arquivo de configuração.

  • Se você estiver gerando um certificado autoassinadoProvavelmente, 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 10.0.2.2 para localhost ou o endereço IPA estático do seu Sync Gateway.

Arquivo de configuração do gateway de sincronização

Confirme se o arquivo de configuração do Sync Gateway inclui as seguintes propriedades

Verificação da configuração de SSL em seu Sync Gateway

Para verificar se você pode se conectar ao Sync Gateway por SSL, execute o seguinte enrolar em um comando de terminal. Substituir localhost no comando abaixo com o endereço IP de seu Sync Gateway.

Se a configuração estiver correta, você deverá ver algo como isto na saída

  • 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.

  • Copiar o cert.pem em seu arquivo Ativos pasta. Sua pasta de projeto do Android Studio deve ser semelhante a esta
  • Fixação do certificado do servidor Sync Gateway
    • Para fixar o certificado, devemos primeiro carregar o certificado que vem junto com o Ativos pasta.

Neste exemplo, estamos usando as classes de utilitários IOUtils do [Apache Commons IO] (https://commons.apache.org/proper/commons-io/description.html) para converter o certificado lido do fluxo de entrada do arquivo em byte array. Você pode escolher qualquer outra ferramenta/método para a conversão.

- Configurar o Replicador com o certificado fixado. Em um aplicativo real, você deverá fazer uma verificação de nulidade no certificado antes de defini-lo. Omitir as verificações aqui por questões de brevidade.

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

O que vem a seguir

Esta postagem do blog discutiu os benefícios da fixação de certificados em seus aplicativos móveis e como você pode ativar a fixação de certificados com o Couchbase Lite 2.0. O exemplo discutiu um aplicativo Android, mas a abordagem também seria semelhante em outras plataformas.

Se tiver dúvidas ou comentários, deixe um comentário abaixo ou entre em contato comigo pelo Twitter @rajagp ou envie-me um 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.