{"id":9325,"date":"2020-09-10T08:38:59","date_gmt":"2020-09-10T15:38:59","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=9325"},"modified":"2021-01-31T13:04:38","modified_gmt":"2021-01-31T21:04:38","slug":"authentication-using-server-side-x-509-certificates-with-n1ql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/authentication-using-server-side-x-509-certificates-with-n1ql\/","title":{"rendered":"Autenticaci\u00f3n mediante certificados X.509 del lado del servidor y N1QL"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">La autenticaci\u00f3n y autorizaci\u00f3n al servicio de consulta N1QL en Couchbase funciona de m\u00faltiples maneras -\u00a0<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Pasar credenciales a trav\u00e9s de una petici\u00f3n rest - curl https:\/\/localhost:8093\/query\/service?pretty=true -d \"statement=select * from system:keyspaces\" -u Admin:pwd<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Pasar credenciales utilizando el par\u00e1metro con nombre creds y\/o el par\u00e1metro de consulta -\u00a0<\/span>curl https:\/\/localhost:8093\/query\/service?pretty=true -d \"statement=select * from system:keyspaces&amp;creds=[{user: \"Administrator\", \"password\": \"pass\"}]\"<\/li>\n<li><span style=\"font-weight: 400;\">Uso de autenticaci\u00f3n b\u00e1sica en la solicitud\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Solicitud de cbq (similar a 1,2) utilizando las opciones -u -p -creds y el comando \\SET.\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Certificados X.509 para TLS<\/span><\/li>\n<li>Cifrado de nodo a nodo<\/li>\n<\/ol>\n<p>Con la adici\u00f3n de RBAC, el par\u00e1metro de consulta creds se hizo redundante, pero todav\u00eda se admite por compatibilidad con versiones anteriores.<\/p>\n<p>El objetivo de a\u00f1adir compatibilidad con certificados X509 es mejorar el cifrado cliente-servidor mediante un certificado en el que conf\u00ede la autoridad de certificaci\u00f3n.<\/p>\n<p><span style=\"font-weight: 400;\">Los certificados X.509 permiten la autenticaci\u00f3n del servidor y la encriptaci\u00f3n de las comunicaciones cliente-servidor. Couchbase soporta tanto autenticaci\u00f3n de servidor como de cliente usando certificados X509 y tienes que ser un Administrador completo o un Administrador de Seguridad para gestionar certificados. Este art\u00edculo habla sobre el soporte de certificados X.509 del lado del servidor para la autorizaci\u00f3n en Couchbase. Los clientes tambi\u00e9n pueden verificar la identidad del servidor de Couchbase, pero eso ser\u00e1 discutido en otro art\u00edculo.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Los escenarios m\u00e1s comunes para los que se utilizan certificados X509 son cuando los clientes tienen que pasar por Internet, <\/span><span style=\"font-weight: 400;\">cuando se transfieren datos confidenciales por cable entre la aplicaci\u00f3n y Couchbase Server, o entre centros de datos (XDCR) o cuando as\u00ed lo exigen las normativas de cumplimiento.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">\u00bfQu\u00e9 es un certificado X.509? <\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Es un certificado de clave p\u00fablica que se utiliza para distribuir una clave p\u00fablica, firmada por una autoridad de certificaci\u00f3n de confianza que verifica la identidad del servidor. Utiliz\u00e1ndolo, un cliente se asegura de que la solicitud no se est\u00e1 enviando a un servidor desconocido. Estos certificados est\u00e1n firmados por un tercero, tambi\u00e9n conocido como autoridad de certificaci\u00f3n. <\/span><span style=\"font-weight: 400;\">Las CA son entidades que emiten certificados digitales. En realidad, una CA est\u00e1 formada por una serie de CA denominadas jerarqu\u00eda de CA. Esta jerarqu\u00eda de CA construye una cadena de confianza en la que se basan todos los certificados de nodos o entidades finales. La cadena no contiene la clave p\u00fablica de la CA ra\u00edz.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En una infraestructura jer\u00e1rquica de clave p\u00fablica (PKI) suele haber 3 tipos de jerarqu\u00eda. De un nivel, de dos niveles y de N niveles. La CA situada en la parte superior de la jerarqu\u00eda se denomina CA ra\u00edz. Todas las CA siguientes son CA intermedias, y la en\u00e9sima (\u00faltima) se denomina CA de nodo.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Un punto importante a tener en cuenta es <\/span><span style=\"font-weight: 400;\">que para confiar en un certificado utilizado para establecer una conexi\u00f3n segura debe haber sido emitido por una CA que est\u00e9 incluida en el almac\u00e9n de confianza del dispositivo que se est\u00e1 conectando.<\/span><\/p>\n<h3><b>Autoridad de certificaci\u00f3n de un solo nivel <\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Consiste en una \u00fanica CA es la forma m\u00e1s sencilla de jerarqu\u00eda de CA, pero no suele utilizarse en producci\u00f3n como una<\/span><span style=\"font-weight: 400;\"> Si se compromete esta CA ra\u00edz, se compromete toda la PKI. <\/span><span style=\"font-weight: 400;\">Aqu\u00ed la CA ra\u00edz es tambi\u00e9n la CA emisora y <\/span><span style=\"font-weight: 400;\">todos los certificados inmediatamente inferiores al certificado ra\u00edz heredan su fiabilidad.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-9327 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.34-PM-300x206.png\" alt=\"\" width=\"129\" height=\"89\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.34-PM-300x206.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.34-PM-235x160.png 235w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.34-PM-20x14.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.34-PM.png 358w\" sizes=\"auto, (max-width: 129px) 100vw, 129px\" \/><\/p>\n<h3><b>Autoridad CA de dos niveles<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Consiste en una CA Ra\u00edz que ha emitido un certificado para una subordinada conocida como CA Intermedia. La diferencia es que los certificados emitidos son de confianza, ya que proceden de una autoridad de confianza a trav\u00e9s de la CA intermedia.\u00a0<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9329\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1-1024x574.png\" alt=\"\" width=\"525\" height=\"294\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1-1024x574.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1-300x168.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1-768x430.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1-20x11.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/09\/Screen-Shot-2020-09-08-at-2.46.43-PM-1.png 1028w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Signos de CA ra\u00edz-&gt;<\/span><span style=\"font-weight: 400;\"> Signos intermedios de CA<\/span><span style=\"font-weight: 400;\"> -&gt; CA emisora \/ CA de cl\u00faster<\/span><\/p>\n<h3><b>Autoridad CA N-Tier <\/b><\/h3>\n<p><span style=\"font-weight: 400;\">\u00a0En la mayor\u00eda de los despliegues de producci\u00f3n, una jerarqu\u00eda tiene varias CA.<\/span> <span style=\"font-weight: 400;\">La CA ra\u00edz emite certificados a las CA intermedias, que a su vez generan <\/span><i><span style=\"font-weight: 400;\">certificados intermedios<\/span><\/i><span style=\"font-weight: 400;\">: se utilizan para firmar certificados de cliente, como un certificado de cl\u00faster:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">CA ra\u00edz de confianza &gt; CA intermedia &gt; Certificado de cl\u00faster<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">CA ra\u00edz de confianza &gt; CA intermedia 1 &gt; CA intermedia 2.... &gt; CA intermedia <\/span><i><span style=\"font-weight: 400;\">n<\/span><\/i><span style=\"font-weight: 400;\"> &gt; Certificado de cl\u00faster<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">La jerarqu\u00eda de dos niveles es un subtipo de la jerarqu\u00eda de N niveles.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><span style=\"font-weight: 400;\">En todos los casos anteriores, la cadena de certificados debe verificarse hasta la CA ra\u00edz. La cadena de confianza contiene su certificado, concatenado con todos los certificados intermedios.<\/span><\/p>\n<p><b>Nota aqu\u00ed -<\/b> <b>Todos los certificados intermedios deben estar instalados en su servidor: de lo contrario, algunos clientes supondr\u00e1n que la conexi\u00f3n no es segura. Esto da lugar a advertencias de \"no fiable\".\u00a0<\/b><\/p>\n<h2><b>Configuraci\u00f3n de X.509 en un cl\u00faster couchbase<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Algunos requisitos previos antes de configurar los certificados -\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">El certificado debe ser un certificado de clave RSA en un formato .pem v\u00e1lido<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">El certificado no debe ser inv\u00e1lido - La hora actual debe estar comprendida entre <\/span><span style=\"font-weight: 400;\">v\u00e1lido a partir de<\/span><span style=\"font-weight: 400;\"> y <\/span><span style=\"font-weight: 400;\">v\u00e1lido para <\/span><span style=\"font-weight: 400;\">seg\u00fan lo establecido en el cert.<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Utilice una longitud de clave RSA de 2048 bits o superior. (A medida que aumentan las capacidades inform\u00e1ticas, las claves RSA m\u00e1s largas proporcionan mayor seguridad).<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Con un cl\u00faster de un solo nodo tendr\u00e1 1 directorio correspondiente a los certificados de los nodos. Con un cl\u00faster de varios nodos, cree varios directorios correspondientes a cada nodo del cl\u00faster: nodo1, nodo2, etc.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Si tiene varias CA intermedias, aseg\u00farese de apilarlas en el orden correcto en la cadena de certificados.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">La clave privada del nodo y la cadena deben colocarse en ..\/<\/span><i><span style=\"font-weight: 400;\">var\/lib\/couchbase\/inbox <\/span><\/i><span style=\"font-weight: 400;\">relativo al directorio bin de su sistema operativo desde donde se despliegan los exes de servicio\/cluster.\u00a0<\/span><\/li>\n<\/ul>\n<h3><b>Convenciones de denominaci\u00f3n<\/b><\/h3>\n<p><b>ca.pem<\/b><span style=\"font-weight: 400;\"> - Clave p\u00fablica de la CA ra\u00edz\u00a0<\/span><\/p>\n<p><b>int1.pem<\/b><span style=\"font-weight: 400;\"> - Clave p\u00fablica de la CA intermedia (no 1. Si tiene varias CA intermedias, n\u00f3mbrelas adecuadamente para a\u00f1adirlas a la cadena en el orden correcto. Esto muestra qu\u00e9 CA intermedia est\u00e1 m\u00e1s cerca del nodo)<\/span><\/p>\n<p><b>nodo1.pem<\/b><span style=\"font-weight: 400;\"> - Clave p\u00fablica de la CA del Nodo 1 ( nodo2.pem - Clave p\u00fablica de la CA del Nodo 2 y as\u00ed sucesivamente )<\/span><\/p>\n<p><b>nodo1.key<\/b><span style=\"font-weight: 400;\"> - Nodo 1 Clave privada de la AC<\/span><\/p>\n<p><b>cadena.pem<\/b><span style=\"font-weight: 400;\"> - Cadena de certificados que contiene la clave p\u00fablica del nodo y las claves p\u00fablicas intermedias que firmaron la clave p\u00fablica del nodo.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Utilizamos la herramienta openssl para crear nuestros certificados. Consulte su documentaci\u00f3n para obtener m\u00e1s detalles sobre los propios comandos.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Pasos para configurar certificados X.509<\/span><\/h3>\n<h4><span style=\"font-weight: 400;\"><strong>Primer paso<\/strong> - Crear la clave privada ra\u00edz\u00a0<\/span><\/h4>\n<p><b>openssl genrsa -out ca.key 2048 2&gt;\/dev\/null<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Generar una clave privada RSA llamada <\/span><b>clave.ca <\/b><span style=\"font-weight: 400;\">(-out nombrearchivo) que son los 2048 bits.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Al generar la clave, se ver\u00e1 el s\u00edmbolo . o +. Esto indica el progreso en la generaci\u00f3n de la clave. El . representa cada n\u00famero que pasa la prueba y + significa que un n\u00famero ha pasado una sola ronda de la prueba de primalidad de Miller-Rabin. Cuando se ve la nueva l\u00ednea significa que la clave se ha generado con \u00e9xito y el n\u00famero (2 n\u00fameros primos) ha pasado todas las pruebas de primalidad. Consulte la documentaci\u00f3n de openssl-genrsa para m\u00e1s detalles.\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Paso 2<\/strong> - Generar la clave p\u00fablica ra\u00edz utilizada como CA del cl\u00faster<\/span><\/h4>\n<p><b>openssl req -new -x509 -days 365 -sha256 -key ca.key -out ca.pem -subj '\/C=US\/O=Couchbase\/CN=Couchbase Root CA' 2&gt;\/dev\/null<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Genera una nueva solicitud de certificado ra\u00edz autofirmado (opci\u00f3n -x509) con una firma sha256 (-sha256. Esto significa mayor seguridad) que tiene una validez de 1 a\u00f1o (-days 365 en d\u00edas). La clave p\u00fablica ca.pem (-out) se deriva de la clave privada utilizando la opci\u00f3n -key para especificar la clave privada.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Los certificados X.509 tienen un campo Subject Distinguished Name (DN) y tambi\u00e9n pueden tener varios nombres en la extensi\u00f3n Subject Alternative Name. Se compone de DN relativos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">CN = Nombre com\u00fan, O = Organizaci\u00f3n, C = Nombre del pa\u00eds<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Se especifica que el emisor del certificado tiene el CN (Common Name) de Couchbase Root CA: como este nombre indica, el certificado ser\u00e1 el certificado ra\u00edz para Couchbase\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Paso 3<\/strong> - Generar la clave privada intermedia (o claves si se utiliza una jerarqu\u00eda de N niveles como la descrita anteriormente )<\/span><\/h4>\n<p><b>openssl genrsa -out int1.key 2048 2&gt;\/dev\/null<\/b><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Paso 4<\/strong> - Generar la solicitud de firma de certificado intermedio<\/span><\/h4>\n<p><b>openssl req -new -key int1.key -out int1.csr -subj '\/C=US\/O=Couchbase\/CN=Couchbase Intermediate CA' 2&gt;\/dev\/null<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Una CSR o solicitud de firma de certificado es una petici\u00f3n enviada por un solicitante a una CA para solicitar un certificado.\u00a0<\/span><span style=\"font-weight: 400;\">Puede personalizar: a\u00f1adir o limitar las capacidades del certificado X.509 mediante un archivo de extensi\u00f3n. Esta informaci\u00f3n se utilizar\u00e1 en todos los nodos del cl\u00faster. Por ejemplo.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">cat &gt; v3.ext &lt;&lt;EOF<\/span><\/p>\n<p><span style=\"font-weight: 400;\">basicConstraints = CA:FALSE<\/span><\/p>\n<p><span style=\"font-weight: 400;\">subjectKeyIdentifier = hash<\/span><\/p>\n<p><span style=\"font-weight: 400;\">authorityKeyIdentifier = keyid,emisor:siempre<\/span><\/p>\n<p><span style=\"font-weight: 400;\">EOF<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Para obtener una lista exhaustiva de todas las extensiones est\u00e1ndar, consulte la secci\u00f3n 4.2 del RFC 5280 sobre X509 PKI y el perfil CRL. -<\/span><a href=\"https:\/\/tools.ietf.org\/html\/rfc5280\"> <span style=\"font-weight: 400;\">https:\/\/tools.ietf.org\/html\/rfc5280<\/span><\/a><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Paso 5<\/strong> - Crear el certificado intermedio\u00a0<\/span><\/h4>\n<p><b>openssl x509 -req -in int1.csr -CA ca.pem -CAkey ca.key -CAcreateserial -CAserial rootCA.srl -extfile v3.ext -out int1.pem -days 365 2&gt;\/dev\/null<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Leer del archivo csr y pasar las claves de la CA Ra\u00edz a <\/span><span style=\"font-weight: 400;\">establecer la autoridad del certificado ra\u00edz. La clave cifrada de la CA ra\u00edz se utiliza para firmar la CSR intermedia.  Antes de firmar nada, es necesario configurar un archivo de n\u00famero de serie para la CA ra\u00edz. Esto es para que cada certificado pueda tener un n\u00famero de serie \u00fanico. Esto se hace utilizando las opciones -CAcreateserial -CAserial . rootCA.srl es el archivo de n\u00famero de serie. Es un simple archivo de texto con n\u00fameros ASCII. El certificado se personaliza utilizando las extensiones que definimos anteriormente y es v\u00e1lido durante un a\u00f1o. <\/span><span style=\"font-weight: 400;\">En <\/span><span style=\"font-weight: 400;\">se le pedir\u00e1 una frase de contrase\u00f1a para el certificado. Introduzca una frase adecuada en respuesta a las preguntas.<\/span><span style=\"font-weight: 400;\"> Recuerda esta frase.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Finalmente tenemos los certificados de CA ra\u00edz e intermedia. Ahora es el momento de configurar el certificado de nodo y firmarlo con la CA ra\u00edz y la clave intermedia.\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Paso 6<\/strong> - Configurar clave de nodo y CSR\u00a0<\/span><\/h4>\n<p><b>openssl genrsa -out nodo1.key 2048 2&gt;\/dev\/null<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Una vez generada la clave cifrada para el nodo, configure el csr del nodo.\u00a0<\/span><\/p>\n<p><b>openssl req -new -key nodo1.key -out nodo1.csr -subj \"\/C=US\/O=Couchbase\/CN=server1_linux\" 2&gt;\/dev\/null<\/b><\/p>\n<p><span style=\"font-weight: 400;\">En este caso, el nombre com\u00fan definido en el asunto del certificado es el nombre de nodo definido y asignado en \/etc\/hosts.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Al configurar el nodo csr utilice el nombre del nodo (preferible), la direcci\u00f3n IP o URI con un certificado SAN (nombre alternativo del sujeto).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">La forma habitual de especificar la identidad del certificado es a trav\u00e9s del nombre com\u00fan (CN) en el DN de asunto del certificado. Si despliega un certificado en un host multi-homed, es necesario definir un certificado con identidades alternativas utilizando la opci\u00f3n <\/span><span style=\"font-weight: 400;\">subjectAltName<\/span><span style=\"font-weight: 400;\"> extensi\u00f3n del certificado.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\"subjectAltName = IP:172.23.99.49\"<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Paso 7<\/strong> - Genere el certificado de nodo utilizando las extensiones adecuadas<\/span><\/h4>\n<p><b>openssl x509 -req -in nodo1.csr -CA int1.pem -CAkey int1.key -CAcreateserial \\<\/b><\/p>\n<p><b>-CAserial intermedioCA.srl -out nodo1.pem -days 365\u00a0<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Esto es similar a los pasos anteriores para generar el certificado intermedio.\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Paso 8<\/strong> &#8211; <\/span><span style=\"font-weight: 400;\">Generar la cadena de certificados\u00a0<\/span><\/h4>\n<p><b>cat nodo1.pem int1.pem &gt; cadena.pem<\/b><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Concatene todos los certificados intermedios y de nodo en el orden correcto. El certificado ra\u00edz nunca se incluye en la cadena. Esta cadena permitir\u00e1 al cliente verificar el certificado intermedio contra el certificado ra\u00edz.\u00a0<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<h4><span style=\"font-weight: 400;\"><strong>Paso 9<\/strong> - Implantar los certificados\u00a0<\/span><\/h4>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Copie el certificado cifrado de nodo y el certificado de cadena en la carpeta de entrada dentro de <\/span><b>..\/var\/lib\/couchbase\/inbox <\/b><span style=\"font-weight: 400;\">en relaci\u00f3n con el lugar desde el que se ejecutan los binarios para su sistema operativo y darles los permisos adecuados mediante chmod a+x<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">node1.key y chain.pem se copian en ..\/inbox\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">chmod a+x nodo1.key\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">chmod a+x chain.pem<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span style=\"font-weight: 400;\">C\u00e1rgalos en el servidor<\/span>\n<ul>\n<li><span style=\"font-weight: 400;\">curl -X POST -data-binary ca.pem https:\/\/Administrator:password@172.23.99.49:8091\/controller\/uploadClusterCA<\/span><\/li>\n<li><span style=\"font-weight: 400;\">curl -X POST https:\/\/Administrator:password@172.23.99.49:8091\/node\/controller\/reloadCertificate<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400;\">Cuando cargas el certificado del cluster en Couchbase, primero se comprueba que es un certificado X.509 v\u00e1lido. A continuaci\u00f3n, si los certificados por nodo no est\u00e1n firmados por el certificado de cl\u00faster, se muestra una advertencia para cada nodo durante la configuraci\u00f3n. A medida que se actualizan los certificados por nodo, de forma que est\u00e9n firmados por el certificado de cl\u00faster, la advertencia para cada nodo desaparece.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Uso de certificados en la consulta CURL() de N1QL o en el shell cbq\u00a0<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Para verificar certificados que han sido firmados por terceros, la librer\u00eda utiliza los certificados almacenados en la m\u00e1quina local. Para cada nodo de consulta en un cluster Couchbase, la carpeta ..\/\/var\/lib\/couchbase\/n1qlcerts contiene los certificados necesarios para CURL(). Si los certificados no se encuentran en esta carpeta se produce un error.  La opci\u00f3n cacert se utiliza para pasar un nombre de certificado a la funci\u00f3n. Si se introduce una ruta, se producir\u00e1 un error.<\/span><\/p>\n<p><b>select CURL(\"https:\/\/127.0.0.1:18091\/pools\",{<\/b><b>\"request\": \"GET\"<\/b><b>usuario\": \"Bucketuser:contrase\u00f1a\", \"cacert\": \"ca.pem\"})<\/b><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0Para conectarse mediante el shell, utilice las opciones cacert, cert y key.<\/span><\/p>\n<p><b>.\/cbq -cacert ca.pem -cert chain.pem -key nodo1.key -engine https:\/\/172.23.99.49:18091<\/b><\/p>\n<p><span style=\"font-weight: 400;\">Con este art\u00edculo, ya sabemos c\u00f3mo configurar certificados X509 en nuestro servidor y utilizarlos con la consulta N1QL y el shell CBQ. En el pr\u00f3ximo art\u00edculo profundizaremos en los certificados del lado del cliente.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Authentication and authorization to the N1QL query service in Couchbase works in multiple ways &#8211;\u00a0 Passing credentials through a rest request &#8211; curl https:\/\/localhost:8093\/query\/service?pretty=true -d &#8220;statement=select * from system:keyspaces&#8221; -u Admin:pwd Passing credentials using the creds named parameter and\/or query [&hellip;]<\/p>","protected":false},"author":6882,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1813,1812],"tags":[],"ppma_author":[9057],"class_list":["post-9325","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-security","category-n1ql-query"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Authentication Using Server-Side X.509 Certificates And N1QL<\/title>\n<meta name=\"description\" content=\"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.\" \/>\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\/authentication-using-server-side-x-509-certificates-with-n1ql\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Authentication Using Server-Side X.509 Certificates And N1QL\" \/>\n<meta property=\"og:description\" content=\"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/authentication-using-server-side-x-509-certificates-with-n1ql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-10T15:38:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-31T21:04:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/09\/Authentication-using-Server-side-X.509-Certificates-with-N1QL.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"627\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Isha Kandaswamy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isha Kandaswamy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/\"},\"author\":{\"name\":\"Isha Kandaswamy\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f236f76f209f447fbc8fd46d91eb7e52\"},\"headline\":\"Authentication Using Server-Side X.509 Certificates And N1QL\",\"datePublished\":\"2020-09-10T15:38:59+00:00\",\"dateModified\":\"2021-01-31T21:04:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/\"},\"wordCount\":2094,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Best Practices and Tutorials\",\"Security\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/\",\"name\":\"Authentication Using Server-Side X.509 Certificates And N1QL\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2020-09-10T15:38:59+00:00\",\"dateModified\":\"2021-01-31T21:04:38+00:00\",\"description\":\"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authentication Using Server-Side X.509 Certificates And N1QL\"}]},{\"@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\/f236f76f209f447fbc8fd46d91eb7e52\",\"name\":\"Isha Kandaswamy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/e8464106b598ad96e4e1446687ce93f6\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g\",\"caption\":\"Isha Kandaswamy\"},\"description\":\"Isha Kandaswamy is a Senior Software Engineer at Couchbase. Isha is responsible for the development of designing the different features and tools for the N1QL Query Language -SQL for Json. Also, Designing and implementing features and tools for the N1QL query language.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/isha-kandaswamy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Autenticaci\u00f3n mediante certificados X.509 del lado del servidor y N1QL","description":"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.","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\/authentication-using-server-side-x-509-certificates-with-n1ql\/","og_locale":"es_MX","og_type":"article","og_title":"Authentication Using Server-Side X.509 Certificates And N1QL","og_description":"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/authentication-using-server-side-x-509-certificates-with-n1ql\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-09-10T15:38:59+00:00","article_modified_time":"2021-01-31T21:04:38+00:00","og_image":[{"width":1200,"height":627,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/09\/Authentication-using-Server-side-X.509-Certificates-with-N1QL.png","type":"image\/png"}],"author":"Isha Kandaswamy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Isha Kandaswamy","Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/"},"author":{"name":"Isha Kandaswamy","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f236f76f209f447fbc8fd46d91eb7e52"},"headline":"Authentication Using Server-Side X.509 Certificates And N1QL","datePublished":"2020-09-10T15:38:59+00:00","dateModified":"2021-01-31T21:04:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/"},"wordCount":2094,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Best Practices and Tutorials","Security","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/","url":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/","name":"Autenticaci\u00f3n mediante certificados X.509 del lado del servidor y N1QL","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2020-09-10T15:38:59+00:00","dateModified":"2021-01-31T21:04:38+00:00","description":"Learn how to setup X509 certificates on Couchbase Server and use them with the N1QL query and CBQ shell for authentication and authorization.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/authentication-using-server-side-x-509-certificates-with-n1ql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Authentication Using Server-Side X.509 Certificates And N1QL"}]},{"@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\/f236f76f209f447fbc8fd46d91eb7e52","name":"Isha Kandaswamy","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/e8464106b598ad96e4e1446687ce93f6","url":"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g","caption":"Isha Kandaswamy"},"description":"Isha Kandaswamy es Ingeniero de Software Senior en Couchbase. Isha es responsable del desarrollo del dise\u00f1o de las diferentes caracter\u00edsticas y herramientas para el lenguaje de consulta N1QL -SQL para Json. Adem\u00e1s, dise\u00f1a e implementa caracter\u00edsticas y herramientas para el lenguaje de consulta N1QL.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/isha-kandaswamy\/"}]}},"authors":[{"term_id":9057,"user_id":6882,"is_guest":0,"slug":"isha-kandaswamy","display_name":"Isha Kandaswamy","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g","first_name":"Isha","last_name":"Kandaswamy","user_url":"","author_category":"","description":"Isha Kandaswamy es Ingeniero de Software Senior en Couchbase. Isha es responsable del desarrollo del dise\u00f1o de las diferentes caracter\u00edsticas y herramientas para el lenguaje de consulta N1QL -SQL para Json. Adem\u00e1s, dise\u00f1a e implementa caracter\u00edsticas y herramientas para el lenguaje de consulta N1QL."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/9325","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\/6882"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=9325"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/9325\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=9325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=9325"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=9325"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=9325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}