Overview#
개발과 작업의 편의성을 위해 GUI가 필요한 경우가 있습니다.
SQL client이자 데이터베이스 관리도구인 DBeaver에 Presto
와 Db2
를 붙이는 과정에 대해서 정리하겠습니다.
본 문서에서는 Openshift위의
Db2
, Openshift위의 Cloud Pak for Data위의 WatsonX.data위의Presto
를 다루고 있지만 다른 환경에서도 필요한 정보는 동일할테니 참고용으로 보시면 될 것 같습니다.
Db2 SSL connection#
1. certificate 뽑기#
Db2의 ssl-server port(ex.50001)로 연결되는 route를 생성합니다.
kind: Route
apiVersion: route.openshift.io/v1
metadata:
namespace: dbwh
name: dbwh
spec:
to:
kind: Service
name: c-db2wh-db2u-engn-svc
weight: 100
port:
targetPort: ssl-server
tls:
termination: passthrough
wildcardPolicy: None
그럼 443->50001로 연결되는 https endpoint가 생성될텐데요,
https://db2wh-dbwh.apps.endpoint.com
openssl
로 해당 endpoint에 대한 certificate를 추출해주면 됩니다.
openssl s_client -showcerts -connect db2wh-dbwh.apps.endpoint.com:443
rootCA와 그와 연결된 chain CA를 모두 추출해 chain.pem
파일로 생성합니다.
2. Java trust KeyStore 생성#
DBeaver설치 시 같이 설치되는 keytool
커맨드를 통해 jks파일을 생성합니다.
$ "C:\Program Files\DBeaver\jre\bin\keytool.exe" -import -alias mydb2demo -file /path/to/chain.pem -storetype JKS -keystore mydb2demo.jks
3. DBeaver Connection#
필요한 정보를 기입해줍니다.
https연결이므로 포트는 기본 443,
연결하고자하는 DB이름, 권한을 가진 유저의 정보를 입력해줍니다.
다음 Driver Properties탭으로 이동하여 ssl관련 정보들을 기입해줍니다.
sslConnection
: truesslTrustStoreLocation
: 위에서 만든 jks파일의 위치sslTrustStorePassword
: 위에서 만든 jks파일의 비밀번호
테스트연결할때 아래와 같은 에러가 발생하면
[jcc][t4][2030][11211][4.33.31] A communication error occurred during operations on the connection's underlying socket, socket input stream,
or socket output stream. Error location: Reply.fill() - socketInputStream.read (-1). Message: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. ERRORCODE=-4499, SQLSTATE=08001
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
unable to find valid certification path to requested target
unable to find valid certification path to requested target
윈도우 > 설정 > 연결 > use Windows trust store의 체크를 해제하고 DBeaver를 재시작한 뒤 다시 시도하면 됩니다.
이래도 안된다면 인증서가 valid한 녀석인지 다시한번 확인!
연결 성공!
Presto SSL connection#
1. certificate 뽑기#
위 Db2 connection처럼 route를 만들고 인증서를 추출 -> jks로 생성해도 되지만 이 문서에서는 Presto의 truststore.jks를 직접 pod에서 가져와서 연결하는 방법을 기술하겠습니다.
presto coordinator pod에서 truststore.jks를 찾습니다.
sh-5.1$ cd /mnt/infra/tls
sh-5.1$ ls
ca.crt keystore.p12 lh-ssl-ks.jks lh-ssl-ts.jks pki tls.crt tls.key truststore.jks truststore.p12
truststore.jks를 로컬로 복사, path를 기억해둡니다.
2. DBeaver Connection#
필요한 정보를 기입해줍니다.
https연결이므로 포트는 기본 443,
연결하고자하는 스키마의이름, 권한을 가진 유저의 정보를 입력해줍니다.
다음 Driver Properties탭으로 이동하여 ssl관련 정보들을 기입해줍니다.
SSL
: TrueSSLTrustStorePath
: 위에서 만든 jks파일의 위치SLLTrustStorePassword
: 위에서 만든 jks파일의 비밀번호 (기본은 changeit)
연결 성공!