ApsaraDB for ClickHouse prend en charge les connexions HTTPS, qui chiffrent le trafic entre votre application et le cluster. Cette rubrique explique comment établir une connexion avec Java JDBC et curl.
Prérequis
Avant de commencer, vérifiez que vous disposez des éléments suivants :
Un cluster ApsaraDB for ClickHouse exécutant la version 20.8 ou ultérieure
Le protocole HTTPS activé sur le cluster et le certificat SSL CA téléchargé — voir Activer HTTPS
L'adresse IP du client ajoutée à la liste d'autorisation du cluster — voir Configurer une liste d'autorisation
Un endpoint public configuré pour le cluster, si le client et le cluster se trouvent dans des réseaux privés virtuels (VPC) différents
Remarques sur l'utilisation
Les connexions HTTPS augmentent à la fois le temps de réponse du réseau et l'utilisation du processeur sur le cluster.
Connexions Internet : Utilisez HTTPS lorsque le chiffrement des données est requis.
Connexions VPC : Les réseaux VPC sont privés et isolés. Le protocole HTTPS n'est généralement pas nécessaire pour les connexions au sein du même VPC.
Se connecter avec Java JDBC
Étape 1 : Ajouter la dépendance JDBC
Ajoutez la dépendance suivante à votre projet Maven :
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.3.1</version>
</dependency>
Étape 2 : Rassembler les informations de connexion
Recueillez les valeurs suivantes avant d'écrire votre code de connexion :
| Variable | Description | Exemple de valeur |
|---|---|---|
| Endpoint | Endpoint public ou endpoint VPC du cluster. Utilisez l'endpoint public si le client et le cluster se trouvent dans des VPC différents. | cc-****.public.clickhouse.ads.aliyuncs.com |
| Port HTTPS | Valeur fixe pour les connexions HTTPS. | 8443 |
| Nom de la base de données | Nom de la base de données cible. | test01 |
| Compte de base de données | Nom d'utilisateur de la base de données. | test |
| Mot de passe | Mot de passe du compte de base de données. | 123456Aa |
| Chemin du certificat | Chemin du fichier local vers le certificat SSL CA téléchargé. | /user/ck-root-ClickHouse-CA-Chain.pem |
| Mode SSL | strict — vérifie le certificat du serveur par rapport à l'autorité de certification. Utilisez none uniquement lors d'une connexion par adresse IP au sein du même VPC. |
strict |
| Délai d'expiration du socket | Délai d'expiration de la connexion en millisecondes. | 7200000 (2 heures) |
Étape 3 : Se connecter au cluster
Tous les paramètres SSL sont configurés via ClickHouseProperties. L'URL JDBC utilise le port 8443 et le paramètre ssl=true.
import ru.yandex.clickhouse.ClickHouseConnection;
import ru.yandex.clickhouse.ClickHouseDataSource;
import ru.yandex.clickhouse.settings.ClickHouseProperties;
public void run() throws InterruptedException {
ClickHouseProperties props = new ClickHouseProperties();
props.setSslRootCertificate("<certificate-path>"); // path to the SSL CA certificate
props.setSsl(true);
props.setSslMode("<ssl-mode>"); // strict: verify cert against CA; none: skip verification (IP + same VPC only)
props.setUser("<database-account>");
props.setPassword("<password>");
props.setSocketTimeout(<timeout-ms>); // timeout in milliseconds
String url = "jdbc:clickhouse://<endpoint>:<HTTPS port number>/<database-name>?ssl=true";
ClickHouseDataSource dataSource = new ClickHouseDataSource(url, props);
try {
final ClickHouseConnection conn = dataSource.getConnection();
conn.createStatement().executeQuery("select now()");
} catch (Throwable e) {
e.printStackTrace();
}
}
Remplacez les espaces réservés par les valeurs recueillies à l'étape 2 :
| Espace réservé | Exemple de valeur |
|---|---|
<certificate-path> |
/user/ck-root-ClickHouse-CA-Chain.pem |
<ssl-mode> |
strict |
<database-account> |
test |
<password> |
123456Aa |
<timeout-ms> |
7200000 |
<endpoint> |
cc-****.public.clickhouse.ads.aliyuncs.com |
<database-name> |
test01 |
Lors d'une connexion par adresse IP, le client et le cluster doivent se trouver dans le même VPC, et ssl-mode doit être défini sur none.
Se connecter avec curl
Utilisez curl pour vérifier la connectivité HTTPS avec une requête /ping.
Syntaxe :
curl --cacert <certificate-path> https://<endpoint>:<HTTPS port number>/ping
Exemple :
curl --cacert ./ck-root-ClickHouse-CA-Chain.pem https://cc-bp163l724nkf****.clickhouse.ads.aliyuncs.com:8443/ping