Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Configuración de certificados SSL de usuario para la autenticación

No es compatible con ClickHouse Cloud

Esta guía proporciona una configuración sencilla y mínima para configurar la autenticación con certificados SSL de usuario. Este tutorial se basa en la guía de Configuring TLS.

Crear certificados de usuario SSL

  1. Genere una Certificate Signing Request (CSR) y una clave. El formato básico es el siguiente:
    openssl req -newkey rsa:2048 -nodes -subj "/CN=<my_host>:<my_user>"  -keyout <my_cert_name>.key -out <my_cert_name>.csr
    En este ejemplo, usaremos estos valores para el dominio y el usuario que se utilizarán en este entorno de ejemplo:
    openssl req -newkey rsa:2048 -nodes -subj "/CN=chnode1.marsnet.local:cert_user"  -keyout chnode1_cert_user.key -out chnode1_cert_user.csr
  1. Genere y firme el nuevo certificado de usuario que se utilizará para la autenticación. El formato básico es el siguiente:
    openssl x509 -req -in <my_cert_name>.csr -out <my_cert_name>.crt -CA <my_ca_cert>.crt -CAkey <my_ca_cert>.key -days 365
    En este ejemplo, usaremos estos valores para el dominio y el usuario que se utilizarán en este entorno de ejemplo:
    openssl x509 -req -in chnode1_cert_user.csr -out chnode1_cert_user.crt -CA marsnet_ca.crt -CAkey marsnet_ca.key -days 365

Crear un usuario SQL y conceder permisos

  1. Cree un usuario SQL configurado para usar la autenticación por certificado:

    CREATE USER cert_user IDENTIFIED WITH ssl_certificate CN 'chnode1.marsnet.local:cert_user';
  2. Otorgue privilegios al nuevo usuario con certificado:

    GRANT ALL ON *.* TO cert_user WITH GRANT OPTION;

Pruebas

  1. Copie el certificado de usuario, la clave de usuario y el certificado de la CA a un nodo remoto.

  2. Configure OpenSSL en la configuración de client de ClickHouse con el certificado y las rutas.

    <openSSL>
        <client>
            <certificateFile>my_cert_name.crt</certificateFile>
            <privateKeyFile>my_cert_name.key</privateKeyFile>
            <caConfig>my_ca_cert.crt</caConfig>
        </client>
    </openSSL>
  3. Ejecute clickhouse-client.

    clickhouse-client --user <my_user> --query 'SHOW TABLES'

Pruebas HTTP

  1. Copie el certificado de usuario, la clave del usuario y el certificado de la CA en un nodo remoto.

  2. Use curl para probar un comando SQL de ejemplo. El formato básico es el siguiente:

    echo 'SHOW TABLES' | curl 'https://<clickhouse_node>:8443' --cert <my_cert_name>.crt --key <my_cert_name>.key --cacert <my_ca_cert>.crt -H "X-ClickHouse-SSL-Certificate-Auth: on" -H "X-ClickHouse-User: <my_user>" --data-binary @-

    Por ejemplo:

    echo 'SHOW TABLES' | curl 'https://chnode1:8443' --cert chnode1_cert_user.crt --key chnode1_cert_user.key --cacert marsnet_ca.crt -H "X-ClickHouse-SSL-Certificate-Auth: on" -H "X-ClickHouse-User: cert_user" --data-binary @-

    La salida será similar a la siguiente:

    INFORMATION_SCHEMA
    default
    information_schema
    system

Resumen

Este artículo presentó los conceptos básicos para crear y configurar un usuario para la autenticación mediante certificado SSL. Este método puede utilizarse con clickhouse-client o con cualquier cliente compatible con la interfaz https y en el que se puedan establecer encabezados HTTP. El certificado y la clave generados deben mantenerse privados y con acceso restringido, ya que el certificado se utiliza para autenticar y autorizar al usuario a realizar operaciones en la base de datos de ClickHouse. Trate el certificado y la clave como si fueran contraseñas.

Navigation