{"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\/es\/certificate-pinning-android-with-couchbase-mobile\/","title":{"rendered":"Fijaci\u00f3n de certificados en Android con Couchbase Mobile"},"content":{"rendered":"<p><a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/2.0\/whatsnew.html\">Couchbase M\u00f3vil 2.0<\/a> soporta certificate pinning en todas las plataformas m\u00f3viles de Couchbase. La vinculaci\u00f3n de certificados es una t\u00e9cnica utilizada por las aplicaciones para \"vincular\" un host a su certificado\/clave p\u00fablica. La comunicaci\u00f3n entre Couchbase Lite y Sync Gateway est\u00e1 encriptada y asegurada usando <a href=\"https:\/\/tools.ietf.org\/html\/rfc5246\">SSL\/TLS<\/a>. El protocolo SSL\/TLS se basa en una infraestructura de clave p\u00fablica (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Public_key_infrastructure\">PKI<\/a>) mediante un mecanismo <a href=\"https:\/\/www.ietf.org\/rfc\/rfc5280.txt\">Certificado X.509<\/a> para establecer la identidad del servidor Sync Gateway. El certificado suele emitirlo\/firmarlo una autoridad de certificaci\u00f3n de confianza y se instala en el Sync Gateway.<\/p>\n<p>En un entorno de desarrollo, este certificado puede ser autofirmado.<\/p>\n<p>Si la fiabilidad del certificado se ve comprometida de alguna manera o si se est\u00e1 utilizando un certificado autofirmado, entonces la identidad del servidor no se puede establecer de forma fiable y no puede haber garant\u00edas de confidencialidad en la comunicaci\u00f3n entre el cliente y el servidor. Para aliviar estos problemas, Couchbase Lite soporta <strong>prendido del certificado<\/strong>. Para lograr la vinculaci\u00f3n de certificados, el certificado de clave p\u00fablica se suele entregar a la aplicaci\u00f3n cliente a trav\u00e9s de un canal fuera de banda y se incluye con la aplicaci\u00f3n cliente. Al anclar el certificado, la aplicaci\u00f3n cliente verificadora ya no necesita depender de una CA de terceros para verificar la firma. Esta t\u00e9cnica tambi\u00e9n es necesaria para comunicarse con Sync Gateway configurada con certificados autofirmados.<\/p>\n<p>En este art\u00edculo se explica c\u00f3mo fijar certificados en Coucbase Lite. <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/2.0\/whatsnew.html\">Versi\u00f3n 2.0<\/a> habilitada para Android. <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.4\/guides\/couchbase-lite\/index.html\">Versi\u00f3n 1.4<\/a> de Couchbase Lite s\u00f3lo era compatible con la fijaci\u00f3n de certificados en iOS y que se discuti\u00f3 en este <a href=\"https:\/\/www.couchbase.com\/blog\/es\/certificate-pinning-couchbase-mobile-ios-app\/\">entrada del blog<\/a>.<\/p>\n<p>Puede descargar las \u00faltimas versiones preliminares de Couchbase Mobile 2.0 en <a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/\">aqu\u00ed<\/a>.<\/p>\n<p><!--more--><\/p>\n<h2 id=\"background\">Fondo<\/h2>\n<p>Si est\u00e1 familiarizado con SSL\/TLS o ha le\u00eddo esto <a href=\"https:\/\/www.couchbase.com\/blog\/es\/certificate-pinning-couchbase-mobile-ios-app\/\">entrada del blog<\/a>puedes saltar a la secci\u00f3n \"Soporte de Certificate Pinning con Couchbase Mobile\" de esta entrada de blog.<\/p>\n<p>La comunicaci\u00f3n entre Couchbase Lite y Sync Gateway se encripta utilizando <a href=\"https:\/\/tools.ietf.org\/html\/rfc5246\">SSL\/TLS<\/a>A muy alto nivel, el protocolo TLS funciona de la siguiente manera.<br \/>\nEn la puerta de enlace de sincronizaci\u00f3n se instala un certificado X.509 que contiene la clave p\u00fablica y la identidad del servidor. Este certificado de clave p\u00fablica puede estar firmado por una autoridad de certificaci\u00f3n externa de confianza o puede estar autofirmado, lo que suele ser el caso en entornos de desarrollo.<br \/>\nDurante el establecimiento de la conexi\u00f3n, la aplicaci\u00f3n cliente que ejecuta Couchbase Lite verifica la identidad de la puerta de enlace de sincronizaci\u00f3n utilizando el certificado del servidor. Couchbase Lite usa el certificado ra\u00edz de la CA de confianza para validar el certificado. Una vez verificado, el cliente procede con el intercambio de clave secreta. El secreto compartido se utiliza entonces para cifrar la comunicaci\u00f3n entre el cliente y 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 el <a href=\"https:\/\/tools.ietf.org\/html\/rfc5246\">RFC<\/a> para obtener informaci\u00f3n espec\u00edfica sobre el protocolo SSL\/TLS.<\/p>\n<p>Este enfoque plantea algunos problemas :-<br \/>\n- Aunque en la mayor\u00eda de las circunstancias es razonable confiar en la fiabilidad de la CA, es posible que la propia CA se vea comprometida. Si esto ocurre, no hay forma fiable de autenticar la puerta de enlace de sincronizaci\u00f3n porque la propia CA utilizada para la verificaci\u00f3n no es de confianza.<br \/>\n- La comunicaci\u00f3n cliente-servidor puede ser objeto de un ataque de intermediario (Man-in-the-Middle, MiTM) por el que un servidor fraudulento que se haga pasar por Sync Gateway puede emitir un certificado falso que represente a Sync Gateway, firmado por una CA falsa. Si el cliente es enga\u00f1ado de alg\u00fan modo para que incluya el certificado de la CA falsa en su almac\u00e9n de Autoridades de Certificaci\u00f3n ra\u00edz de confianza, entonces el cliente confiar\u00e1 en el certificado falso firmado por la CA falsa. El resultado ser\u00e1 que el cliente se comunicar\u00e1 con una puerta de enlace de sincronizaci\u00f3n falsa.<br \/>\n- Si utiliza certificados autofirmados en su entorno de desarrollo, no hay forma de que el cliente valide de forma fiable la identidad del servidor.<\/p>\n<h2 id=\"certificatepinning\">Entrega de certificados<\/h2>\n<p>Una forma com\u00fan de manejar los problemas mencionados anteriormente es \"fijar\" el servidor Sync Gateway a su certificado\/clave p\u00fablica. En esta t\u00e9cnica, Couchbase Lite est\u00e1 preconfigurado con el certificado de confianza de Sync Gateway. As\u00ed, durante el establecimiento de la conexi\u00f3n, Couchbase Lite utiliza este certificado preconfigurado para verificar la identidad del servidor. Esto elimina la dependencia de una tercera CA externa para la verificaci\u00f3n del certificado.<br \/>\nEn <a href=\"https:\/\/www.owasp.org\/index.php\/Certificate_and_Public_Key_Pinning\">Sitio web de OWASP<\/a> es una buena referencia sobre la fijaci\u00f3n de certificados.<\/p>\n<h2 id=\"caveat\">Advertencia:<\/h2>\n<p>Es importante tener en cuenta que, dado que las aplicaciones se incluyen con el certificado, cada vez que este caduque habr\u00e1 que actualizar la aplicaci\u00f3n con el nuevo certificado. Esto puede ser un poco m\u00e1s dif\u00edcil en entornos m\u00f3viles, donde la responsabilidad de actualizar las aplicaciones recae en los usuarios. Por lo tanto, hay que estar al tanto de cu\u00e1ndo caducan los certificados y hacer los planes adecuados para publicar las aplicaciones con los nuevos certificados antes de que caduquen.<\/p>\n<h2 id=\"supportingcertificatepinningwithcouchbasemobile\">Soporte de Certificate Pinning con Couchbase Mobile<\/h2>\n<p>Este post asume que est\u00e1s familiarizado con el desarrollo de aplicaciones Android y la configuraci\u00f3n de tu aplicaci\u00f3n para utilizar Couchbase Lite 2.0. Si no es as\u00ed, por favor revisa este <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/2.0\/guides\/couchbase-lite\/index.html?language=java\">Primeros pasos<\/a> gu\u00eda. Utilizaremos <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.5\/installation\/sync-gateway\/index.html\">Pasarela de sincronizaci\u00f3n 1.5<\/a> en la nube respaldado por un <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/introduction\/intro.html\">Servidor Couchbase<\/a> persistencia de los datos en la nube. El servidor Couchbase no es relevante para las discusiones en este post.<\/p>\n<h3 id=\"installingcertificateonthesyncgateway\">Instalaci\u00f3n del certificado en la puerta de enlace de sincronizaci\u00f3n<\/h3>\n<p>Siga las instrucciones del <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/security.html\">Portal para desarrolladores de Couchbase<\/a> para generar \/ instalar el correspondiente certificado de servidor en su Sync Gateway<\/p>\n<p>Un par de puntos a tener en cuenta durante la generaci\u00f3n del certificado:-<\/p>\n<ul>\n<li>El certificado y la clave privada correspondiente deben estar en formato .pem<\/li>\n<li>Instale los certificados en una ubicaci\u00f3n accesible para Sync Gateway. De lo contrario, se producir\u00e1 un error al iniciar Sync Gateway con el archivo de configuraci\u00f3n.<\/li>\n<\/ul>\n<pre class=\"wrap:true lang:sh decode:true\">2017\u201312\u201310T16:05:21.303\u201305:00 Using metadata purge interval of 3.00 days for tombstone compaction.\r\n2017\u201312\u201310T16:05:21.305\u201305:00 Starting admin server on 127.0.0.1:4985\r\n2017\u201312\u201310T16:05:21.310\u201305:00 Starting server on :4984 \u2026\r\n2017\u201312\u201310T16:05:21.310\u201305:00 HTTP: Protocols enabled: [http\/1.1] on 127.0.0.1:4985\r\n2017\u201312\u201310T16:05:21.311\u201305:00 FATAL: Failed to start HTTP server on 127.0.0.1:4985: open cert.pem: no such file or directory \u2013 rest.(*ServerConfig).Serve() at config.go:716<\/pre>\n<ul>\n<li>Si est\u00e1 generando un <em>certificado autofirmado<\/em>probablemente el campo m\u00e1s importante sea el <code>Nombre com\u00fan<\/code>. Debe ser el FQDN de su Sync Gateway. Si su Sync Gateway no tiene uno, debe especificar el uso de <code>10.0.2.2<\/code> para localhost o la direcci\u00f3n IPA est\u00e1tica de su 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\">Archivo de configuraci\u00f3n de la pasarela de sincronizaci\u00f3n<\/h4>\n<p>Confirme que el archivo de configuraci\u00f3n de Sync Gateway incluye las siguientes propiedades<\/p>\n<pre><code> \"SSLCert\": \"ssl\/cert.pem\",\r\n \"SSLKey\": \"ssl\/privkey.pem\",<\/code><\/pre>\n<h3 id=\"verifyingsslsetupinyoursyncgateway\">Verificaci\u00f3n de la configuraci\u00f3n SSL en su Sync Gateway<\/h3>\n<p>Para comprobar que puede conectarse a su Sync Gateway a trav\u00e9s de SSL, ejecute lo siguiente <code>rizo<\/code> en un comando de terminal. Sustituya <em>localhost<\/em> en el comando de abajo con la direcci\u00f3n IP de su puerta de enlace de sincronizaci\u00f3n.<\/p>\n<pre><code> curl -k -X GET https:\/\/localhost:4984\u2002 -H 'cache-control: no-cache' \u2013verbose<\/code><\/pre>\n<p>Si la configuraci\u00f3n es correcta, deber\u00eda ver algo como esto en la salida<\/p>\n<pre class=\"wrap:true lang:sh decode:true\"> * Rebuilt URL to: https:\/\/localhost:4984\u2002\u2002\/\r\n * Trying ::1\u2026\r\n * TCP_NODELAY set\r\n * Connected to localhost (::1) port 4984 (#0)\r\n * ALPN, offering http\/1.1\r\n * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH\r\n * successfully set certificate verify locations:\r\n * CAfile: \/Users\/priya.rajagopal\/anaconda\/ssl\/cacert.pem\r\n CApath: none\r\n * TLSv1.2 (OUT), TLS header, Certificate Status (22):\r\n * TLSv1.2 (OUT), TLS handshake, Client hello (1):\r\n * TLSv1.2 (IN), TLS handshake, Server hello (2):\r\n * TLSv1.2 (IN), TLS handshake, Certificate (11):\r\n * TLSv1.2 (IN), TLS handshake, Server key exchange (12):\r\n * TLSv1.2 (IN), TLS handshake, Server finished (14):\r\n * TLSv1.2 (OUT), TLS handshake, Client key exchange (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 * SSL connection using TLSv1.2 \/ ECDHE-RSA-AES256-GCM-SHA384\r\n * ALPN, server accepted to use http\/1.1\r\n * Server certificate:\r\n * subject: C=US; ST=Michigan; O=Couchbase; CN=localhost\r\n * start date: Dec 8 14:00:33 2017 GMT\r\n * expire date: Dec 7 14:00:33 2020 GMT\r\n * issuer: C=US; ST=Michigan; O=Couchbase; CN=localhost\r\n * SSL certificate verify result: self signed certificate (18), continuing anyway.\r\n &gt; GET \/ HTTP\/1.1\r\n &gt; Host: localhost:4984\r\n &gt; User-Agent: 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: called premature == 0\r\n * Connection #0 to host localhost left intact\r\n {\"couchdb\":\"Welcome\",\"vendor\":{\"name\":\"Couchbase Sync Gateway\",\"version\":1.5},\"version\":\"Couchbase Sync Gateway\/1.5.1(4;cb9522c)\"}<\/pre>\n<ul>\n<li>Convierta el certificado PEM en formato der utilizando el siguiente comando<\/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>Puede consultar este <a href=\"https:\/\/www.sslshopper.com\/article-most-common-openssl-commands.html\">Hoja de trucos SSL<\/a> para m\u00e1s detalles sobre los distintos comandos de openSSL.<\/p>\n<ul>\n<li>Copie el <code>cert.pem<\/code> en su <em>Activos<\/em> carpeta. La carpeta del proyecto de Android Studio debe ser similar a la siguiente<br \/>\n<img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/12\/android_studio.png\" alt=\"\" \/><\/li>\n<li>Fijaci\u00f3n del certificado del servidor Sync Gateway\n<ul>\n<li>Para fijar el certificado, primero debemos cargar el certificado que se incluye con la aplicaci\u00f3n <em>Activos<\/em> carpeta.<\/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 \/\/ Get the certificate bundled in with the app\r\n byte[] pinnedServerCert = this.getPinnedCertFile(context);\r\n \/\/ Set pinned certificate.\r\n config.setPinnedServerCertificate(pinnedServerCert);\r\n\r\n Replicator replicator = new Replicator(config);<\/pre>\n<p>Ya est\u00e1. Con s\u00f3lo un par de pasos, puedes habilitar la fijaci\u00f3n de certificados en tu aplicaci\u00f3n Android con Couchbase Mobile 2.0.<\/p>\n<h2 id=\"whatnext\">\u00bfQu\u00e9 sigue?<\/h2>\n<p>Esta entrada del blog discuti\u00f3 los beneficios de la fijaci\u00f3n de certificados dentro de tus aplicaciones m\u00f3viles y c\u00f3mo puedes habilitar la fijaci\u00f3n de certificados con Couchbase Lite 2.0. El ejemplo trataba de una aplicaci\u00f3n Android, pero el enfoque ser\u00eda similar en otras plataformas tambi\u00e9n.<\/p>\n<p>Si tiene alguna pregunta o sugerencia, deje un comentario a continuaci\u00f3n o p\u00f3ngase en contacto conmigo en Twitter\u00a0<a href=\"https:\/\/twitter.com\/rajagp\">@rajagp<\/a>\u00a0o env\u00edeme un correo electr\u00f3nico\u00a0<a href=\"mailto:priya.rajagopal@couchbase.com\">priya.rajagopal@couchbase.com<\/a>.  En\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/es\/forums\/\">Foros de Couchbase<\/a> son otro buen lugar para plantear preguntas.<\/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 v25.8 (Yoast SEO v25.8) - 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\/es\/certificate-pinning-android-with-couchbase-mobile\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\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\/es\/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\":\"es\",\"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\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\",\"@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\/es\/author\/priya-rajagopalcouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fijaci\u00f3n de certificados en Android con Couchbase Mobile","description":"Certificate pinning es una t\u00e9cnica utilizada para \"fijar\" un host a su certificado de clave p\u00fablica.Post discute c\u00f3mo hacer esto en una aplicaci\u00f3n Android habilitada para 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\/es\/certificate-pinning-android-with-couchbase-mobile\/","og_locale":"es_MX","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\/es\/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":"es","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":"Fijaci\u00f3n de certificados en Android con 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 es una t\u00e9cnica utilizada para \"fijar\" un host a su certificado de clave p\u00fablica.Post discute c\u00f3mo hacer esto en una aplicaci\u00f3n Android habilitada para Couchbase Lite","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/certificate-pinning-android-with-couchbase-mobile\/"]}]},{"@type":"ImageObject","inLanguage":"es","@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":"El blog de Couchbase","description":"Couchbase, la base de datos 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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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, Directora de Gesti\u00f3n de Productos","image":{"@type":"ImageObject","inLanguage":"es","@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 es directora s\u00e9nior de gesti\u00f3n de productos en Couchbase y responsable de las plataformas de desarrollo para la nube y el per\u00edmetro. Lleva m\u00e1s de 20 a\u00f1os dedic\u00e1ndose profesionalmente al desarrollo de software en varios puestos de liderazgo t\u00e9cnico y de producto, con m\u00e1s de 10 a\u00f1os centrados en tecnolog\u00edas m\u00f3viles. Como delegada de est\u00e1ndares IPTV de TISPAN, fue una colaboradora clave en las especificaciones de est\u00e1ndares IPTV. Tiene 22 patentes en las \u00e1reas de redes y seguridad de plataformas.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/es\/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 es directora s\u00e9nior de gesti\u00f3n de productos en Couchbase y responsable de las plataformas de desarrollo para la nube y el per\u00edmetro. Lleva m\u00e1s de 20 a\u00f1os dedic\u00e1ndose profesionalmente al desarrollo de software en varios puestos de liderazgo t\u00e9cnico y de producto, con m\u00e1s de 10 a\u00f1os centrados en tecnolog\u00edas m\u00f3viles. Como delegada de est\u00e1ndares IPTV de TISPAN, fue una colaboradora clave en las especificaciones de est\u00e1ndares IPTV. Tiene 22 patentes en las \u00e1reas de redes y seguridad de plataformas."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=4342"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4342\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/3757"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=4342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=4342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=4342"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=4342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}