{"id":4342,"date":"2017-12-13T10:00:00","date_gmt":"2017-12-13T18:00:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4342"},"modified":"2025-06-13T20:52:42","modified_gmt":"2025-06-14T03:52:42","slug":"certificate-pinning-android-with-couchbase-mobile","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/certificate-pinning-android-with-couchbase-mobile\/","title":{"rendered":"Fixa\u00e7\u00e3o de certificados no Android com o Couchbase Mobile"},"content":{"rendered":"<p><a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/2.0\/whatsnew.html\">Couchbase Mobile 2.0<\/a> suporta a fixa\u00e7\u00e3o de certificados em todas as plataformas m\u00f3veis do Couchbase. A fixa\u00e7\u00e3o de certificado \u00e9 uma t\u00e9cnica usada por aplicativos para \"fixar\" um host em seu certificado\/chave p\u00fablica. A comunica\u00e7\u00e3o entre o Couchbase Lite e o Sync Gateway \u00e9 criptografada e protegida usando <a href=\"https:\/\/tools.ietf.org\/html\/rfc5246\">SSL\/TLS<\/a>. O protocolo SSL\/TLS se baseia em uma infraestrutura de chave p\u00fablica (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Public_key_infrastructure\">PKI<\/a>) usando um mecanismo <a href=\"https:\/\/www.ietf.org\/rfc\/rfc5280.txt\">Certificado X.509<\/a> para estabelecer a identidade do servidor do Sync Gateway. Normalmente, o certificado \u00e9 emitido\/assinado por uma Autoridade de Certifica\u00e7\u00e3o confi\u00e1vel e \u00e9 instalado no Sync Gateway.<\/p>\n<p>Em um ambiente de desenvolvimento, esse certificado pode ser autoassinado.<\/p>\n<p>Se a confiabilidade do certificado for comprometida de alguma forma ou se voc\u00ea estiver usando um certificado autoassinado, a identidade do servidor n\u00e3o poder\u00e1 ser estabelecida de forma confi\u00e1vel e n\u00e3o haver\u00e1 garantias de confidencialidade na comunica\u00e7\u00e3o entre o cliente e o servidor. Para aliviar esses problemas, o Couchbase Lite oferece suporte a <strong>fixa\u00e7\u00e3o de certificados<\/strong>. Para realizar a fixa\u00e7\u00e3o do certificado, o certificado de chave p\u00fablica \u00e9 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\u00e3o precisa mais depender de uma CA de terceiros para verificar a assinatura. Essa t\u00e9cnica tamb\u00e9m \u00e9 necess\u00e1ria para a comunica\u00e7\u00e3o com o Sync Gateway configurado com certificados autoassinados.<\/p>\n<p>Esta postagem discutir\u00e1 como fixar certificados em seu Coucbase Lite <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/2.0\/whatsnew.html\">Vers\u00e3o 2.0<\/a> aplicativo Android habilitado. <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/guides\/couchbase-lite\/index.html\">Vers\u00e3o 1.4<\/a> do Couchbase Lite s\u00f3 suportava a fixa\u00e7\u00e3o de certificados no iOS e isso foi discutido neste <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/certificate-pinning-couchbase-mobile-ios-app\/\">postagem no blog<\/a>.<\/p>\n<p>Voc\u00ea pode baixar as \u00faltimas vers\u00f5es de pr\u00e9-lan\u00e7amento do Couchbase Mobile 2.0 em <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/\">aqui<\/a>.<\/p>\n<p><!--more--><\/p>\n<h2 id=\"background\">Hist\u00f3rico<\/h2>\n<p>Se voc\u00ea estiver familiarizado com SSL\/TLS ou tiver lido este <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/certificate-pinning-couchbase-mobile-ios-app\/\">postagem no blog<\/a>Se voc\u00ea n\u00e3o estiver usando o Couchbase Mobile, pode pular para a se\u00e7\u00e3o \"Suporte \u00e0 fixa\u00e7\u00e3o de certificados com o Couchbase Mobile\" desta postagem do blog.<\/p>\n<p>A comunica\u00e7\u00e3o entre o Couchbase Lite e o Sync Gateway \u00e9 criptografada usando <a href=\"https:\/\/tools.ietf.org\/html\/rfc5246\">SSL\/TLS<\/a>Em um n\u00edvel muito alto, o protocolo TLS funciona da seguinte forma.<br \/>\nUm certificado X.509 contendo a chave p\u00fablica e a identidade do servidor \u00e9 instalado no Sync Gateway. Esse certificado de chave p\u00fablica pode ser assinado por uma Autoridade de Certifica\u00e7\u00e3o de terceiros confi\u00e1vel ou pode ser autoassinado, sendo este \u00faltimo o caso mais comum em ambientes de desenvolvimento.<br \/>\nDurante o estabelecimento da conex\u00e3o, 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\u00e1vel para validar o certificado. Uma vez verificado, o cliente prossegue com a troca de chaves secretas. O segredo compartilhado \u00e9 ent\u00e3o usado para criptografar a comunica\u00e7\u00e3o entre o cliente e o Sync Gateway.<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/06\/tls.png\" alt=\"Basic TLS Exchange\" \/><br \/>\nConsulte o <a href=\"https:\/\/tools.ietf.org\/html\/rfc5246\">RFC<\/a> para obter informa\u00e7\u00f5es espec\u00edficas sobre o protocolo SSL\/TLS.<\/p>\n<p>H\u00e1 alguns problemas com essa abordagem :-.<br \/>\n- Embora, na maioria das circunst\u00e2ncias, seja razo\u00e1vel confiar na confiabilidade da CA, \u00e9 poss\u00edvel que a pr\u00f3pria CA seja comprometida. Se isso acontecer, n\u00e3o haver\u00e1 uma maneira confi\u00e1vel de autenticar o Sync Gateway porque a CA usada para a verifica\u00e7\u00e3o em si n\u00e3o \u00e9 confi\u00e1vel!<br \/>\n- A comunica\u00e7\u00e3o 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\u00e7\u00e3o raiz confi\u00e1vel, o cliente confiar\u00e1 no certificado falso assinado pela CA falsa. Isso far\u00e1 com que o cliente se comunique com um Sync Gateway falso.<br \/>\n- Se voc\u00ea estiver usando certificados autoassinados em seu ambiente de desenvolvimento, n\u00e3o h\u00e1 como o cliente validar de forma confi\u00e1vel a identidade do servidor.<\/p>\n<h2 id=\"certificatepinning\">Fixa\u00e7\u00e3o de certificados<\/h2>\n<p>Uma maneira comum de lidar com os problemas listados acima \u00e9 \"fixar\" o servidor Sync Gateway em seu certificado\/chave p\u00fablica. Nessa t\u00e9cnica, o Couchbase Lite \u00e9 pr\u00e9-configurado com o certificado confi\u00e1vel do Sync Gateway. Portanto, durante o estabelecimento da conex\u00e3o, o Couchbase Lite usa esse certificado pr\u00e9-configurado para verificar a identidade do servidor. Isso elimina a depend\u00eancia de uma CA externa de terceiros para a verifica\u00e7\u00e3o do certificado.<br \/>\nO <a href=\"https:\/\/www.owasp.org\/index.php\/Certificate_and_Public_Key_Pinning\">Site da OWASP<\/a> \u00e9 uma boa refer\u00eancia sobre a fixa\u00e7\u00e3o de certificados.<\/p>\n<h2 id=\"caveat\">Advert\u00eancia<\/h2>\n<p>\u00c9 importante observar que, como os aplicativos s\u00e3o 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\u00f3veis, onde o \u00f4nus de atualizar os aplicativos recai sobre os usu\u00e1rios. Portanto, esteja ciente de quando os certificados expiram e fa\u00e7a planos apropriados para publicar os aplicativos com os novos certificados antes da expira\u00e7\u00e3o do certificado.<\/p>\n<h2 id=\"supportingcertificatepinningwithcouchbasemobile\">Suporte \u00e0 fixa\u00e7\u00e3o de certificados com o Couchbase Mobile<\/h2>\n<p>Esta publica\u00e7\u00e3o pressup\u00f5e que voc\u00ea esteja familiarizado com o desenvolvimento de aplicativos Android e com a configura\u00e7\u00e3o do seu aplicativo para usar o Couchbase Lite 2.0. Caso contr\u00e1rio, leia este artigo <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/2.0\/guides\/couchbase-lite\/index.html?language=java\">Primeiros passos<\/a> guia. Usaremos <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.5\/installation\/sync-gateway\/index.html\">Gateway de sincroniza\u00e7\u00e3o 1.5<\/a> na nuvem com o suporte de um <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/introduction\/intro.html\">Servidor Couchbase<\/a> persistindo os dados na nuvem. O Couchbase Server n\u00e3o \u00e9 relevante para as discuss\u00f5es desta postagem.<\/p>\n<h3 id=\"installingcertificateonthesyncgateway\">Instala\u00e7\u00e3o do certificado no Sync Gateway<\/h3>\n<p>Siga as instru\u00e7\u00f5es na se\u00e7\u00e3o <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/security.html\">Portal do desenvolvedor do Couchbase<\/a> para gerar\/instalar o certificado de servidor relevante em seu Sync Gateway<\/p>\n<p>Alguns pontos a serem observados durante a gera\u00e7\u00e3o do certificado<\/p>\n<ul>\n<li>O certificado e a chave privada correspondente devem estar no formato .pem<\/li>\n<li>Instale os certificados em um local acess\u00edvel ao Sync Gateway. Se isso n\u00e3o for feito, ocorrer\u00e1 um erro quando voc\u00ea iniciar o Sync Gateway com o arquivo de configura\u00e7\u00e3o.<\/li>\n<\/ul>\n<pre class=\"wrap:true lang:sh decode:true\">2017-12-10T16:05:21.303-05:00 Usando o intervalo de purga de metadados de 3,00 dias para compacta\u00e7\u00e3o de tombstone.\r\n2017-12-10T16:05:21.305-05:00 Iniciando o servidor de administra\u00e7\u00e3o em 127.0.0.1:4985\r\n2017-12-10T16:05:21.310-05:00 Iniciando o servidor em :4984 ...\r\n2017-12-10T16:05:21.310-05:00 HTTP: Protocolos habilitados: [http\/1.1] em 127.0.0.1:4985\r\n2017\u201312\u201310T16:05:21.311\u201305:00 FATAL: Falha ao iniciar o servidor HTTP em 127.0.0.1:4985: open cert.pem: arquivo ou diret\u00f3rio inexistente - rest.(*ServerConfig).Serve() at config.go:716<\/pre>\n<ul>\n<li>Se voc\u00ea estiver gerando um <em>certificado autoassinado<\/em>Provavelmente, o campo mais importante \u00e9 o <code>CommonName<\/code>. Deve ser o FQDN de seu Sync Gateway. Se o seu Sync Gateway n\u00e3o tiver um, voc\u00ea dever\u00e1 especificar use <code>10.0.2.2<\/code> para localhost ou o endere\u00e7o IPA est\u00e1tico do seu Sync Gateway.<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/selfsignedcert.png\" alt=\"\" \/><\/li>\n<\/ul>\n<h4 id=\"syncgatewayconfigfile\">Arquivo de configura\u00e7\u00e3o do gateway de sincroniza\u00e7\u00e3o<\/h4>\n<p>Confirme se o arquivo de configura\u00e7\u00e3o do Sync Gateway inclui as seguintes propriedades<\/p>\n<pre><code> \"SSLCert\": \"ssl\/cert.pem\",\r\n \"SSLKey\": \"ssl\/privkey.pem\",<\/code><\/pre>\n<h3 id=\"verifyingsslsetupinyoursyncgateway\">Verifica\u00e7\u00e3o da configura\u00e7\u00e3o de SSL em seu Sync Gateway<\/h3>\n<p>Para verificar se voc\u00ea pode se conectar ao Sync Gateway por SSL, execute o seguinte <code>enrolar<\/code> em um comando de terminal. Substituir <em>localhost<\/em> no comando abaixo com o endere\u00e7o IP de seu Sync Gateway.<\/p>\n<pre><code> curl -k -X GET https:\/\/localhost:4984\u2002 -H 'cache-control: no-cache' \u2013verbose<\/code><\/pre>\n<p>Se a configura\u00e7\u00e3o estiver correta, voc\u00ea dever\u00e1 ver algo como isto na sa\u00edda<\/p>\n<pre class=\"wrap:true lang:sh decode:true\"> * URL reconstru\u00eddo para: https:\/\/localhost:4984 \/\r\n * Tentando ::1...\r\n * TCP_NODELAY set\r\n * Conectado ao host local (::1) porta 4984 (#0)\r\n * ALPN, oferecendo http\/1.1\r\n * Sele\u00e7\u00e3o de cifras: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH\r\n * Definir com \u00eaxito os locais de verifica\u00e7\u00e3o do certificado:\r\n * CAfile: \/Users\/priya.rajagopal\/anaconda\/ssl\/cacert.pem\r\n CApath: nenhum\r\n * TLSv1.2 (OUT), cabe\u00e7alho TLS, status do certificado (22):\r\n * TLSv1.2 (OUT), TLS handshake, Client hello (1):\r\n * TLSv1.2 (IN), handshake TLS, Server hello (2):\r\n * TLSv1.2 (IN), TLS handshake, Certificate (11):\r\n * TLSv1.2 (IN), handshake TLS, troca de chaves do servidor (12):\r\n * TLSv1.2 (IN), TLS handshake, Server finished (14):\r\n * TLSv1.2 (OUT), handshake TLS, troca de chaves do cliente (16):\r\n * TLSv1.2 (OUT), TLS change cipher, Client hello (1):\r\n * TLSv1.2 (OUT), TLS handshake, Finished (20):\r\n * TLSv1.2 (IN), TLS change cipher, Client hello (1):\r\n * TLSv1.2 (IN), TLS handshake, Finished (20):\r\n * Conex\u00e3o SSL usando TLSv1.2 \/ ECDHE-RSA-AES256-GCM-SHA384\r\n * ALPN, servidor aceito para usar http\/1.1\r\n * Certificado do servidor:\r\n * subject: C=US; ST=Michigan; O=Couchbase; CN=localhost\r\n * Data de in\u00edcio: Dec 8 14:00:33 2017 GMT\r\n * Data de expira\u00e7\u00e3o: Dec 7 14:00:33 2020 GMT\r\n * Emissor: C=US; ST=Michigan; O=Couchbase; CN=localhost\r\n * Resultado da verifica\u00e7\u00e3o do certificado SSL: certificado autoassinado (18), continuando assim mesmo.\r\n &gt; GET \/ HTTP\/1.1\r\n &gt; Host: localhost:4984\r\n &gt; Agente de usu\u00e1rio: curl\/7.52.1\r\n &gt; Accept: \/\r\n &gt; cache-control: no-cache\r\n &gt;\r\n &lt; HTTP\/1.1 200 OK\r\n &lt; Content-Length: 130\r\n &lt; Content-Type: application\/json\r\n &lt; Server: Couchbase Sync Gateway\/1.5.1\r\n &lt; Date: Fri, 08 Dec 2017 14:27:07 GMT\r\n &lt;\r\n * Curl_http_done: chamada prematura == 0\r\n * A conex\u00e3o #0 com o host localhost permaneceu intacta\r\n {&quot;couchdb&quot;: &quot;Welcome&quot;, &quot;vendor&quot;:{&quot;name&quot;: &quot;Couchbase Sync Gateway&quot;, &quot;version&quot;:1.5}, &quot;version&quot;: &quot;Couchbase Sync Gateway\/1.5.1(4;cb9522c)&quot;}<\/pre>\n<ul>\n<li>Converta o certificado PEM no formato der usando o comando abaixo<\/li>\n<\/ul>\n<pre class=\"lang:sh decode:true\">openssl x509 -inform PEM -in cert.pem -outform DER -out cert.cer<\/pre>\n<p>Voc\u00ea pode consultar este <a href=\"https:\/\/www.sslshopper.com\/article-most-common-openssl-commands.html\">Folha de dicas sobre SSL<\/a> para obter detalhes sobre os v\u00e1rios comandos do openSSL.<\/p>\n<ul>\n<li>Copiar o <code>cert.pem<\/code> em seu arquivo <em>Ativos<\/em> pasta. Sua pasta de projeto do Android Studio deve ser semelhante a esta<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/android_studio.png\" alt=\"\" \/><\/li>\n<li>Fixa\u00e7\u00e3o do certificado do servidor Sync Gateway\n<ul>\n<li>Para fixar o certificado, devemos primeiro carregar o certificado que vem junto com o <em>Ativos<\/em> pasta.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre class=\"wrap:true lang:java decode:true\">private byte[] getPinnedCertFile(Context context) {\r\n     AssetManager assetManager = context.getAssets();\r\n     InputStream is = null;\r\n     byte[] bytes = new byte[0];\r\n     try {\r\n        is = assetManager.open(\"cert.cer\");\r\n        return (IOUtils.toByteArray(is));\r\n      } catch (IOException e) {\r\n        e.printStackTrace();\r\n     }\r\n return null;\r\n\r\n}<\/pre>\n<p>In this example, we are using IOUtils utility classes from [Apache Commons IO](https:\/\/commons.apache.org\/proper\/commons-io\/description.html) to convert the certificate read from File Input Stream to `byte` array. You can choose any other tool\/method for the conversion.<\/p>\n<p>&#8211; Configure the `Replicator` with the pinned certificate. In a real app, you will to do a null check in the certificate before you set it. Omitting the checks here for brevity.<\/p>\n<pre class=\"wrap:true lang:java decode:true\"> ReplicatorConfiguration config = new ReplicatorConfiguration(database, new URLEndpoint(url));\r\n config.setReplicatorType(ReplicatorConfiguration.ReplicatorType.PUSH_AND_PULL);\r\n config.setContinuous(true);\r\n config.setAuthenticator(new BasicAuthenticator(username, password));\r\n \/\/ Obter o certificado empacotado com o aplicativo\r\n byte[] pinnedServerCert = this.getPinnedCertFile(context);\r\n \/\/ Definir o certificado fixado.\r\n config.setPinnedServerCertificate(pinnedServerCert);\r\n\r\n Replicador replicador = novo Replicador (config);<\/pre>\n<p>\u00c9 isso a\u00ed! Com apenas algumas etapas, voc\u00ea pode ativar a fixa\u00e7\u00e3o de certificados em seu aplicativo Android com o Couchbase Mobile 2.0.<\/p>\n<h2 id=\"whatnext\">O que vem a seguir<\/h2>\n<p>Esta postagem do blog discutiu os benef\u00edcios da fixa\u00e7\u00e3o de certificados em seus aplicativos m\u00f3veis e como voc\u00ea pode ativar a fixa\u00e7\u00e3o de certificados com o Couchbase Lite 2.0. O exemplo discutiu um aplicativo Android, mas a abordagem tamb\u00e9m seria semelhante em outras plataformas.<\/p>\n<p>Se tiver d\u00favidas ou coment\u00e1rios, deixe um coment\u00e1rio abaixo ou entre em contato comigo pelo Twitter\u00a0<a href=\"https:\/\/twitter.com\/rajagp\">@rajagp<\/a>\u00a0ou envie-me um e-mail\u00a0<a href=\"mailto:priya.rajagopal@couchbase.com\">priya.rajagopal@couchbase.com<\/a>.  O\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/\">F\u00f3runs do Couchbase<\/a> s\u00e3o outro bom lugar para entrar em contato com perguntas.<\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Couchbase Mobile 2.0 supports certificate pinning on all Couchbase mobile platforms. Certificate pinning is a technique used by applications to \u201cpin\u201d a host to it\u2019s certificate\/public key. Communication between Couchbase Lite and Sync Gateway is encryped and secured using SSL\/TLS. [&hellip;]<\/p>","protected":false},"author":1423,"featured_media":3757,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2370,1815,1810,1813],"tags":[2001,2000,2004,2002,1658],"ppma_author":[8948],"class_list":["post-4342","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-best-practices-and-tutorials","category-couchbase-mobile","category-security","tag-certificate-authority","tag-certificate-pinning","tag-couchbase-mobile-2-0","tag-self-signed-certificate","tag-x-509-certificates"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Certificate Pinning in Android with Couchbase Mobile<\/title>\n<meta name=\"description\" content=\"Certificate pinning is a technique used to \u201cpin\u201d a host to it\u2019s public key certificate.Post discusses how to do this in a Couchbase Lite enabled Android app\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/certificate-pinning-android-with-couchbase-mobile\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Certificate Pinning in Android with Couchbase Mobile\" \/>\n<meta property=\"og:description\" content=\"Certificate pinning is a technique used to \u201cpin\u201d a host to it\u2019s public key certificate.Post discusses how to do this in a Couchbase Lite enabled Android app\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/certificate-pinning-android-with-couchbase-mobile\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-12-13T18:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:52:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/06\/tls.png\" \/>\n\t<meta property=\"og:image:width\" content=\"352\" \/>\n\t<meta property=\"og:image:height\" content=\"462\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rajagp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/\"},\"author\":{\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\"},\"headline\":\"Certificate Pinning in Android with Couchbase Mobile\",\"datePublished\":\"2017-12-13T18:00:00+00:00\",\"dateModified\":\"2025-06-14T03:52:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/\"},\"wordCount\":1246,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/06\/tls.png\",\"keywords\":[\"Certificate Authority\",\"certificate pinning\",\"couchbase mobile 2.0\",\"self signed certificate\",\"x.509 certificates\"],\"articleSection\":[\"Android\",\"Best Practices and Tutorials\",\"Couchbase Mobile\",\"Security\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/\",\"name\":\"Certificate Pinning in Android with Couchbase Mobile\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/06\/tls.png\",\"datePublished\":\"2017-12-13T18:00:00+00:00\",\"dateModified\":\"2025-06-14T03:52:42+00:00\",\"description\":\"Certificate pinning is a technique used to \u201cpin\u201d a host to it\u2019s public key certificate.Post discusses how to do this in a Couchbase Lite enabled Android app\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/06\/tls.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/06\/tls.png\",\"width\":352,\"height\":462,\"caption\":\"TLS\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Certificate Pinning in Android with Couchbase Mobile\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\",\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"caption\":\"Priya Rajagopal, Senior Director, Product Management\"},\"description\":\"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.\",\"sameAs\":[\"https:\/\/x.com\/rajagp\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/priya-rajagopalcouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fixa\u00e7\u00e3o de certificados no Android com o Couchbase Mobile","description":"A fixa\u00e7\u00e3o de certificado \u00e9 uma t\u00e9cnica usada para \"fixar\" um host em seu certificado de chave p\u00fablica. A postagem discute como fazer isso em um aplicativo Android habilitado para o Couchbase Lite","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/certificate-pinning-android-with-couchbase-mobile\/","og_locale":"pt_BR","og_type":"article","og_title":"Certificate Pinning in Android with Couchbase Mobile","og_description":"Certificate pinning is a technique used to \u201cpin\u201d a host to it\u2019s public key certificate.Post discusses how to do this in a Couchbase Lite enabled Android app","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/certificate-pinning-android-with-couchbase-mobile\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-12-13T18:00:00+00:00","article_modified_time":"2025-06-14T03:52:42+00:00","og_image":[{"width":352,"height":462,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/06\/tls.png","type":"image\/png"}],"author":"Priya Rajagopal, Senior Director, Product Management","twitter_card":"summary_large_image","twitter_creator":"@rajagp","twitter_misc":{"Written by":"Priya Rajagopal, Senior Director, Product Management","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/"},"author":{"name":"Priya Rajagopal, Senior Director, Product Management","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c"},"headline":"Certificate Pinning in Android with Couchbase Mobile","datePublished":"2017-12-13T18:00:00+00:00","dateModified":"2025-06-14T03:52:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/"},"wordCount":1246,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/06\/tls.png","keywords":["Certificate Authority","certificate pinning","couchbase mobile 2.0","self signed certificate","x.509 certificates"],"articleSection":["Android","Best Practices and Tutorials","Couchbase Mobile","Security"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/","url":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/","name":"Fixa\u00e7\u00e3o de certificados no Android com o Couchbase Mobile","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/06\/tls.png","datePublished":"2017-12-13T18:00:00+00:00","dateModified":"2025-06-14T03:52:42+00:00","description":"A fixa\u00e7\u00e3o de certificado \u00e9 uma t\u00e9cnica usada para \"fixar\" um host em seu certificado de chave p\u00fablica. A postagem discute como fazer isso em um aplicativo Android habilitado para o Couchbase Lite","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/06\/tls.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/06\/tls.png","width":352,"height":462,"caption":"TLS"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Certificate Pinning in Android with Couchbase Mobile"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c","name":"Priya Rajagopal, Diretora S\u00eanior, Gerenciamento de Produtos","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734","url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","caption":"Priya Rajagopal, Senior Director, Product Management"},"description":"Priya Rajagopal \u00e9 diretora s\u00eanior de gerenciamento de produtos da Couchbase, respons\u00e1vel pelas plataformas de desenvolvedor para a nuvem e a borda. Ela desenvolve software profissionalmente h\u00e1 mais de 20 anos em v\u00e1rios cargos t\u00e9cnicos e de lideran\u00e7a de produtos, com mais de 10 anos de foco em tecnologias m\u00f3veis. Como delegada de padr\u00f5es de IPTV da TISPAN, ela foi uma das principais colaboradoras das especifica\u00e7\u00f5es de padr\u00f5es de IPTV. Ela tem 22 patentes nas \u00e1reas de rede e seguran\u00e7a de plataforma.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/priya-rajagopalcouchbase-com\/"}]}},"authors":[{"term_id":8948,"user_id":1423,"is_guest":0,"slug":"priya-rajagopalcouchbase-com","display_name":"Priya Rajagopal, Senior Director, Product Management","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","author_category":"","last_name":"Rajagopal, Senior Director, Product Management","first_name":"Priya","job_title":"","user_url":"","description":"Priya Rajagopal \u00e9 diretora s\u00eanior de gerenciamento de produtos da Couchbase, respons\u00e1vel pelas plataformas de desenvolvedor para a nuvem e a borda. Ela desenvolve software profissionalmente h\u00e1 mais de 20 anos em v\u00e1rios cargos t\u00e9cnicos e de lideran\u00e7a de produtos, com mais de 10 anos de foco em tecnologias m\u00f3veis. Como delegada de padr\u00f5es de IPTV da TISPAN, ela foi uma das principais colaboradoras das especifica\u00e7\u00f5es de padr\u00f5es de IPTV. Ela tem 22 patentes nas \u00e1reas de rede e seguran\u00e7a de plataforma."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=4342"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4342\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/3757"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=4342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=4342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=4342"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=4342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}