Not supported in ClickHouse Cloud
참고
이 페이지의 내용은 ClickHouse Cloud 에 해당하지 않습니다. 이 문서에서 설명하는 절차는 ClickHouse Cloud 서비스에서 자동으로 처리됩니다.
이 가이드는 ClickHouse에서 OpenSSL 인증서를 사용해 연결을 검증하도록 구성하기 위한 간단한 최소 설정을 제공합니다. 이 데모에서는 적절한 설정으로 연결을 수행할 수 있도록 노드 인증서와 함께 자체 서명 인증 기관(CA) 인증서와 키를 생성합니다.
참고
TLS 구현은 복잡하며, 완전히 안전하고 견고한 배포를 보장하려면 고려해야 할 옵션이 매우 많습니다. 이 문서는 기본 TLS 구성 예제를 다루는 기초 튜토리얼입니다. 조직에 적합한 올바른 인증서를 발급·구성하기 위해서는 PKI/보안 팀과 상의하십시오.
입문용 개요로 인증서 사용에 대한 기초 튜토리얼 을 검토하십시오.
ClickHouse 배포 생성
ClickHouse 배포 생성 이 가이드는 Ubuntu 20.04와 apt를 사용한 DEB 패키지로 다음 호스트에 설치된 ClickHouse를 기준으로 작성되었습니다. 도메인은 marsnet.local입니다:
Host IP Address chnode1192.168.1.221 chnode2192.168.1.222 chnode3192.168.1.223
참고
ClickHouse 설치 방법에 대한 자세한 내용은 빠른 시작 을 참조하십시오.
TLS 인증서 생성
TLS 인증서 생성 참고
자체 서명(self-signed) 인증서 사용은 데모용일 뿐이며 프로덕션 환경에서는 사용하면 안 됩니다. 인증서 요청은 조직에서 서명하고 설정에서 구성할 CA 체인을 사용해 검증할 수 있도록 생성해야 합니다. 다만 아래 단계는 설정을 구성하고 테스트하는 용도로 사용할 수 있으며, 이후 실제로 사용할 인증서로 교체할 수 있습니다.
새 CA에 사용할 키를 생성합니다:
openssl genrsa -out marsnet_ca.key 2048
새로운 자체 서명 CA 인증서를 생성합니다. 다음 명령은 CA 키를 사용해 다른 인증서를 서명하는 데 사용할 새 인증서를 생성합니다:
openssl req -x509 -subj "/CN=marsnet.local CA" -nodes -key marsnet_ca.key -days 1095 -out marsnet_ca.crt
참고
키와 CA 인증서는 클러스터 외부의 안전한 위치에 백업해야 합니다. 노드 인증서를 생성한 후에는 클러스터 노드에서 키를 삭제해야 합니다.
새 CA 인증서의 내용을 확인합니다:
openssl x509 -in marsnet_ca.crt -text
각 노드에 대한 인증서 요청(CSR)과 키를 생성합니다:
openssl req -newkey rsa:2048 -nodes -subj "/CN=chnode1" -addext "subjectAltName = DNS:chnode1.marsnet.local,IP:192.168.1.221" -keyout chnode1.key -out chnode1.csr
openssl req -newkey rsa:2048 -nodes -subj "/CN=chnode2" -addext "subjectAltName = DNS:chnode2.marsnet.local,IP:192.168.1.222" -keyout chnode2.key -out chnode2.csr
openssl req -newkey rsa:2048 -nodes -subj "/CN=chnode3" -addext "subjectAltName = DNS:chnode3.marsnet.local,IP:192.168.1.223" -keyout chnode3.key -out chnode3.csr
CSR과 CA를 사용해 새 인증서와 키 쌍을 생성합니다:
openssl x509 -req -in chnode1.csr -out chnode1.crt -CA marsnet_ca.crt -CAkey marsnet_ca.key -days 365 -copy_extensions copy
openssl x509 -req -in chnode2.csr -out chnode2.crt -CA marsnet_ca.crt -CAkey marsnet_ca.key -days 365 -copy_extensions copy
openssl x509 -req -in chnode3.csr -out chnode3.crt -CA marsnet_ca.crt -CAkey marsnet_ca.key -days 365 -copy_extensions copy
인증서의 subject와 issuer 정보를 확인합니다:
openssl x509 -in chnode1.crt -text -noout
새 인증서가 CA 인증서에 대해 검증되는지 확인합니다:
openssl verify -CAfile marsnet_ca.crt chnode1.crt
chnode1.crt: OK
인증서와 키를 저장할 디렉터리 생성 및 구성
참고
이 작업은 각 노드에서 수행해야 합니다. 각 호스트에 적합한 인증서와 키를 사용하십시오.
각 노드의 ClickHouse가 접근할 수 있는 디렉터리에 폴더를 생성합니다. 기본 구성 디렉터리(예: /etc/clickhouse-server)를 사용하는 것을 권장합니다:
mkdir /etc/clickhouse-server/certs
CA 인증서와 각 노드별 인증서 및 키를 새 certs 디렉터리로 복사합니다.
ClickHouse가 인증서를 읽을 수 있도록 소유자와 권한을 변경합니다:
chown clickhouse:clickhouse -R /etc/clickhouse-server/certs
chmod 600 /etc/clickhouse-server/certs/*
chmod 755 /etc/clickhouse-server/certs
ll /etc/clickhouse-server/certs
total 20
drw-r--r-- 2 clickhouse clickhouse 4096 Apr 12 20:23 ./
drwx------ 5 clickhouse clickhouse 4096 Apr 12 20:23 ../
-rw------- 1 clickhouse clickhouse 997 Apr 12 20:22 chnode1.crt
-rw------- 1 clickhouse clickhouse 1708 Apr 12 20:22 chnode1.key
-rw------- 1 clickhouse clickhouse 1131 Apr 12 20:23 marsnet_ca.crt
ClickHouse Keeper를 사용한 기본 클러스터 환경 구성
이 배포 환경에서는 각 노드에 다음 ClickHouse Keeper 설정이 사용됩니다. 각 서버는 고유한 <server_id>를 가집니다. (예: chnode1 노드의 경우 <server_id>1</server_id>, 이하 동일합니다.)
ClickHouse 서버 config.xml의 <clickhouse> 태그 안에 다음 내용을 추가합니다
<keeper_server>
<tcp_port_secure>9281</tcp_port_secure>
<server_id>1</server_id>
<log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path>
<snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>
<coordination_settings>
<operation_timeout_ms>10000</operation_timeout_ms>
<session_timeout_ms>30000</session_timeout_ms>
<raft_logs_level>trace</raft_logs_level>
</coordination_settings>
<raft_configuration>
<secure>true</secure>
<server>
<id>1</id>
<hostname>chnode1.marsnet.local</hostname>
<port>9444</port>
</server>
<server>
<id>2</id>
<hostname>chnode2.marsnet.local</hostname>
<port>9444</port>
</server>
<server>
<id>3</id>
<hostname>chnode3.marsnet.local</hostname>
<port>9444</port>
</server>
</raft_configuration>
</keeper_server>
모든 노드에서 Keeper 설정의 주석 처리를 해제하고 업데이트한 다음 <secure> 플래그를 1로 설정합니다:
<zookeeper>
<node>
<host>chnode1.marsnet.local</host>
<port>9281</port>
<secure>1</secure>
</node>
<node>
<host>chnode2.marsnet.local</host>
<port>9281</port>
<secure>1</secure>
</node>
<node>
<host>chnode3.marsnet.local</host>
<port>9281</port>
<secure>1</secure>
</node>
</zookeeper>
다음 클러스터 설정을 chnode1 및 chnode2에서 업데이트하고 추가합니다. chnode3는 ClickHouse Keeper 쿼럼에 사용됩니다.
참고
이 구성에서는 예시 클러스터 하나만 구성됩니다. 테스트용 샘플 클러스터는 제거하거나 주석 처리해야 하며, 테스트 중인 기존 클러스터가 있다면 포트를 업데이트하고 <secure> 옵션을 추가해야 합니다. 설치 시 또는 users.xml 파일에서 default 사용자에 대해 처음부터 비밀번호가 설정되어 있었다면 <user 및 <password>를 설정해야 합니다.
다음은 두 서버(각 노드에 1대씩)에서 샤드 1개와 레플리카 2개를 갖는 클러스터를 생성합니다.
<remote_servers>
<cluster_1S_2R>
<shard>
<replica>
<host>chnode1.marsnet.local</host>
<port>9440</port>
<user>default</user>
<password>ClickHouse123!</password>
<secure>1</secure>
</replica>
<replica>
<host>chnode2.marsnet.local</host>
<port>9440</port>
<user>default</user>
<password>ClickHouse123!</password>
<secure>1</secure>
</replica>
</shard>
</cluster_1S_2R>
</remote_servers>
테스트를 위해 ReplicatedMergeTree 테이블을 생성할 수 있도록 매크로 값을 정의합니다. chnode1에서:
<macros>
<shard>1</shard>
<replica>replica_1</replica>
</macros>
chnode2에서:
<macros>
<shard>1</shard>
<replica>replica_2</replica>
</macros>
ClickHouse 노드에서 TLS 인터페이스 구성
아래 설정은 ClickHouse 서버의 config.xml에서 구성합니다.
배포의 표시 이름을 설정합니다(선택 사항):
<display_name>clickhouse</display_name>
ClickHouse가 외부 포트에서 수신 대기하도록 설정합니다:
<listen_host>0.0.0.0</listen_host>
각 노드에서 https 포트를 설정하고 http 포트를 비활성화합니다:
<https_port>8443</https_port>
<!--<http_port>8123</http_port>-->
각 노드에서 ClickHouse Native의 보안 TCP 포트를 구성하고 기본 비보안 포트를 비활성화합니다:
<tcp_port_secure>9440</tcp_port_secure>
<!--<tcp_port>9000</tcp_port>-->
각 노드에서 interserver https 포트를 설정하고 기본 비보안 포트를 비활성화합니다:
<interserver_https_port>9010</interserver_https_port>
<!--<interserver_http_port>9009</interserver_http_port>-->
인증서와 경로를 사용해 OpenSSL을 구성합니다
참고
각 파일 이름과 경로는 설정 중인 노드에 맞게 업데이트해야 합니다.
예를 들어 chnode2 호스트를 구성할 때는 <certificateFile> 항목을 chnode2.crt로 업데이트해야 합니다.
<openSSL>
<server>
<certificateFile>/etc/clickhouse-server/certs/chnode1.crt</certificateFile>
<privateKeyFile>/etc/clickhouse-server/certs/chnode1.key</privateKeyFile>
<verificationMode>relaxed</verificationMode>
<caConfig>/etc/clickhouse-server/certs/marsnet_ca.crt</caConfig>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
</server>
<client>
<loadDefaultCAFile>false</loadDefaultCAFile>
<caConfig>/etc/clickhouse-server/certs/marsnet_ca.crt</caConfig>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
<verificationMode>relaxed</verificationMode>
<invalidCertificateHandler>
<name>RejectCertificateHandler</name>
</invalidCertificateHandler>
</client>
</openSSL>
자세한 내용은 https://clickhouse.com/docs/operations/server-configuration-parameters/settings/#server_configuration_parameters-openssl를 참조하십시오
각 노드에서 gRPC용 TLS를 구성합니다:
<grpc>
<enable_ssl>1</enable_ssl>
<ssl_cert_file>/etc/clickhouse-server/certs/chnode1.crt</ssl_cert_file>
<ssl_key_file>/etc/clickhouse-server/certs/chnode1.key</ssl_key_file>
<ssl_require_client_auth>true</ssl_require_client_auth>
<ssl_ca_cert_file>/etc/clickhouse-server/certs/marsnet_ca.crt</ssl_ca_cert_file>
<transport_compression_type>none</transport_compression_type>
<transport_compression_level>0</transport_compression_level>
<max_send_message_size>-1</max_send_message_size>
<max_receive_message_size>-1</max_receive_message_size>
<verbose_logs>false</verbose_logs>
</grpc>
자세한 내용은 https://clickhouse.com/docs/interfaces/grpc/를 참조하십시오.
최소 하나의 노드에서 ClickHouse 클라이언트가 자체 config.xml 파일(기본값은 /etc/clickhouse-client/)에서 연결에 TLS를 사용하도록 구성합니다:
<openSSL>
<client>
<loadDefaultCAFile>false</loadDefaultCAFile>
<caConfig>/etc/clickhouse-server/certs/marsnet_ca.crt</caConfig>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
<invalidCertificateHandler>
<name>RejectCertificateHandler</name>
</invalidCertificateHandler>
</client>
</openSSL>
MySQL 및 PostgreSQL용 기본 에뮬레이션 포트를 비활성화합니다:
<!--mysql_port>9004</mysql_port-->
<!--postgresql_port>9005</postgresql_port-->
테스트
테스트
모든 노드를 하나씩 순서대로 시작합니다:
service clickhouse-server start
보안 포트가 열려 있고 수신 대기 중인지 확인합니다. 각 노드에서 다음 예시와 비슷하게 표시되어야 합니다:
root@chnode1:/etc/clickhouse-server# netstat -ano | grep tcp
tcp 0 0 0.0.0.0:9010 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 0.0.0.0:9440 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 0.0.0.0:9281 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 192.168.1.221:33046 192.168.1.222:9444 ESTABLISHED off (0.00/0/0)
tcp 0 0 192.168.1.221:42730 192.168.1.223:9444 ESTABLISHED off (0.00/0/0)
tcp 0 0 192.168.1.221:51952 192.168.1.222:9281 ESTABLISHED off (0.00/0/0)
tcp 0 0 192.168.1.221:22 192.168.1.210:49801 ESTABLISHED keepalive (6618.05/0/0)
tcp 0 64 192.168.1.221:22 192.168.1.210:59195 ESTABLISHED on (0.24/0/0)
tcp6 0 0 :::22 :::* LISTEN off (0.00/0/0)
tcp6 0 0 :::9444 :::* LISTEN off (0.00/0/0)
tcp6 0 0 192.168.1.221:9444 192.168.1.222:59046 ESTABLISHED off (0.00/0/0)
tcp6 0 0 192.168.1.221:9444 192.168.1.223:41976 ESTABLISHED off (0.00/0/0)
ClickHouse Port Description 8443 HTTPS 인터페이스 9010 서버 간 HTTPS 포트 9281 ClickHouse Keeper 보안 포트 9440 보안 Native TCP 프로토콜 9444 ClickHouse Keeper Raft 포트
ClickHouse Keeper 상태 확인
일반적인 4 letter word (4lW) 명령은 TLS 없이 echo로는 동작하지 않으므로, openssl을 사용해 명령을 실행하는 방법은 다음과 같습니다.
openssl s_client -connect chnode1.marsnet.local:9281
CONNECTED(00000003)
depth=0 CN = chnode1
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = chnode1
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:CN = chnode1
i:CN = marsnet.local CA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIICtDCCAZwCFD321grxU3G5pf6hjitf2u7vkusYMA0GCSqGSIb3DQEBCwUAMBsx
...
--secure 플래그와 TLS 포트를 사용해 ClickHouse 클라이언트를 시작합니다:
root@chnode1:/etc/clickhouse-server# clickhouse-client --user default --password ClickHouse123! --port 9440 --secure --host chnode1.marsnet.local
ClickHouse client version 22.3.3.44 (official build).
Connecting to chnode1.marsnet.local:9440 as user default.
Connected to ClickHouse server version 22.3.3 revision 54455.
clickhouse :)
https://chnode1.marsnet.local:8443/play의 https 인터페이스를 통해 Play UI에 로그인합니다.
참고
워크스테이션에서 접근하고 있으며 클라이언트 머신의 루트 CA 저장소에 인증서가 없기 때문에, 브라우저에 신뢰되지 않는 인증서로 표시됩니다.
공개 인증 기관 또는 엔터프라이즈 CA에서 발급한 인증서를 사용하는 경우에는 신뢰되는 것으로 표시되어야 합니다.
복제 테이블을 생성합니다:
clickhouse :) CREATE TABLE repl_table ON CLUSTER cluster_1S_2R
(
id UInt64,
column1 Date,
column2 String
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default/repl_table', '{replica}' )
ORDER BY (id);
┌─host──────────────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ chnode2.marsnet.local │ 9440 │ 0 │ │ 1 │ 0 │
│ chnode1.marsnet.local │ 9440 │ 0 │ │ 0 │ 0 │
└───────────────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
chnode1에 몇 개의 행을 추가합니다:
INSERT INTO repl_table
(id, column1, column2)
VALUES
(1,'2022-04-01','abc'),
(2,'2022-04-02','def');
chnode2에서 행을 확인해 복제를 검증합니다:
┌─id─┬────column1─┬─column2─┐
│ 1 │ 2022-04-01 │ abc │
│ 2 │ 2022-04-02 │ def │
└────┴────────────┴─────────┘
ClickHouse Keeper를 독립 실행형 프로세스로 실행하는 경우(ClickHouse server에 내장하여 실행하는 대신), OpenSSL 인증서와 설정은 Keeper 설정 파일에서 별도로 구성해야 합니다. 그렇지 않으면 Keeper는 클라이언트 통신(tcp_port_secure)이나 Keeper 노드 간 Raft 복제를 위한 보안 연결을 설정할 수 없습니다.
다음 <openSSL> 섹션을 각 노드의 독립 실행형 ClickHouse Keeper 설정 파일에 추가하십시오:
참고
각 파일 이름은 설정 중인 노드에 맞게 수정해야 합니다.
예를 들어 chnode2 호스트에서 설정하는 경우 <certificateFile> 항목을 chnode2.crt로 수정하십시오.
<openSSL>
<server>
<certificateFile>/etc/clickhouse-keeper/certs/chnode1.crt</certificateFile>
<privateKeyFile>/etc/clickhouse-keeper/certs/chnode1.key</privateKeyFile>
<verificationMode>relaxed</verificationMode>
<caConfig>/etc/clickhouse-keeper/certs/marsnet_ca.crt</caConfig>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
</server>
<client>
<loadDefaultCAFile>false</loadDefaultCAFile>
<caConfig>/etc/clickhouse-keeper/certs/marsnet_ca.crt</caConfig>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
<verificationMode>relaxed</verificationMode>
<invalidCertificateHandler>
<name>RejectCertificateHandler</name>
</invalidCertificateHandler>
</client>
</openSSL>
<server> 섹션은 보안 Keeper 포트(tcp_port_secure)로 들어오는 클라이언트 연결에 사용됩니다. <client> 섹션은 Raft 복제 중 Keeper 노드 간의 아웃바운드 연결에 사용됩니다.
참고
위 인증서 경로는 독립 실행형 Keeper 설치에서 일반적으로 사용하는 경로인 /etc/clickhouse-keeper/certs/를 기준으로 합니다. Keeper를 다른 경로에 설치했다면 그에 맞게 조정하십시오. 인증서 자체는 2단계 에서 생성한 것과 동일합니다.
OpenSSL 검증 모드와 인증서 handler
<openSSL> 설정은 ClickHouse가 TLS 인증서를 검증하는 방식을 제어하는 <verificationMode> 및 <invalidCertificateHandler>에 대해 여러 옵션을 제공합니다. 이러한 설정은 ClickHouse 서버, clickhouse-client, 그리고 독립 실행형 ClickHouse Keeper에 적용됩니다.
검증 모드
<openSSL>의 <server> 또는 <client> 섹션에서 <verificationMode>를 설정합니다:
Mode Description none인증서를 검증하지 않습니다. 연결은 암호화되지만 상대방의 신원은 확인하지 않습니다. 테스트용으로만 사용하십시오. relaxed상대방 인증서가 제시되면 이를 검증하지만, 인증서가 제공되지 않아도 실패하지 않습니다. once서버 측에서는 초기 핸드셰이크에서만 클라이언트 인증서를 검증하고 재협상은 건너뜁니다. 클라이언트 측에서는 relaxed와 동일하게 동작합니다. strict상대방 인증서를 요구하며 완전히 검증합니다. 인증서가 없거나 만료되었거나 신뢰할 수 있는 CA가 서명하지 않은 경우 연결이 실패합니다. 프로덕션 환경에 권장됩니다.
유효하지 않은 인증서 handler
<openSSL>의 <server> 또는 <client> 섹션 안에 <invalidCertificateHandler>를 설정합니다. 이 handler는 인증서 검증이 실패했을 때 어떻게 처리할지를 결정합니다. 서버 측에서는 유효하지 않은 클라이언트 인증서에 대한 응답을 제어합니다. 클라이언트 측에서는 유효하지 않은 서버 인증서에 대한 응답을 제어합니다.
Handler 설명 RejectCertificateHandler인증서가 유효하지 않으면 연결을 거부합니다. 기본값이며 권장되는 설정입니다. AcceptCertificateHandler인증서가 유효하지 않아도 연결을 허용합니다. 테스트용으로만 사용하십시오.
예시: 인증서 검증 비활성화
참고
인증서 검증을 비활성화하면 TLS 신원 검증이 제거되어 연결이 중간자 공격에 노출됩니다. 이 설정은 격리된 개발 또는 테스트 환경에서만 사용하십시오.
인증서 검증을 완전히 생략하려면(예: 테스트 환경에서 자체 서명 인증서를 사용하는 경우) verificationMode를 none으로 설정하고 AcceptCertificateHandler를 사용하십시오.
clickhouse-client에서는 --accept-invalid-certificate CLI 플래그를 사용할 수도 있습니다. 이 플래그를 사용하면 두 설정이 모두 자동으로 적용됩니다.
clickhouse-client (/etc/clickhouse-client/config.xml):
<openSSL>
<client>
<loadDefaultCAFile>false</loadDefaultCAFile>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
<verificationMode>none</verificationMode>
<invalidCertificateHandler>
<name>AcceptCertificateHandler</name>
</invalidCertificateHandler>
</client>
</openSSL>
ClickHouse 서버 (config.xml 또는 config.d/의 파일). 서버는 클라이언트에 자체 인증서를 제시해야 하므로, 클라이언트 인증서를 검증하지 않더라도 <server> 섹션에는 여전히 인증서 및 키 경로가 필요합니다:
<openSSL>
<server>
<certificateFile>/etc/clickhouse-server/certs/server.crt</certificateFile>
<privateKeyFile>/etc/clickhouse-server/certs/server.key</privateKeyFile>
<verificationMode>none</verificationMode>
<caConfig>/etc/clickhouse-server/certs/ca.crt</caConfig>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
</server>
<client>
<loadDefaultCAFile>false</loadDefaultCAFile>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
<verificationMode>none</verificationMode>
<invalidCertificateHandler>
<name>AcceptCertificateHandler</name>
</invalidCertificateHandler>
</client>
</openSSL>
독립 실행형 ClickHouse Keeper (Keeper 설정 파일):
<openSSL>
<server>
<certificateFile>/etc/clickhouse-keeper/certs/keeper.crt</certificateFile>
<privateKeyFile>/etc/clickhouse-keeper/certs/keeper.key</privateKeyFile>
<verificationMode>none</verificationMode>
<caConfig>/etc/clickhouse-keeper/certs/ca.crt</caConfig>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
</server>
<client>
<loadDefaultCAFile>false</loadDefaultCAFile>
<cacheSessions>true</cacheSessions>
<disableProtocols>sslv2,sslv3</disableProtocols>
<preferServerCiphers>true</preferServerCiphers>
<verificationMode>none</verificationMode>
<invalidCertificateHandler>
<name>AcceptCertificateHandler</name>
</invalidCertificateHandler>
</client>
</openSSL>
이 문서에서는 ClickHouse 환경에서 TLS를 사용하도록 구성하는 방법에 중점을 두었습니다. 프로덕션 환경에서는 인증서 검증 수준, 프로토콜, 암호 스위트 등 요구 사항에 따라 설정이 달라집니다. 이제 TLS를 사용한 보안 연결을 구성하고 구현하는 데 필요한 단계들을 잘 이해했을 것입니다.