如何将likibasecmd与db2ssl连接一起使用



我正在尝试使用运行liquibase更新命令

liquibase --driver="com.ibm.db2.jcc.DB2Driver" --changeLogFile="masterchangelog.xml " --url="jdbc:db2://localhost:60001/SMDINTDB:retrieveMessageFromServerOnGetMessage=true;sslConnection=true;"  --username="" --password="" --classpath=/home/db2inst1/sqllib/java/db2jcc4.jar validate

但我犯了以下错误。有人能帮我解决这个问题吗?如何指定证书的位置?

Unexpected error running Liquibase: com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException: [jcc][t4][2030][11211][4.26.14] 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: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. ERRORCODE=-4499, SQLSTATE=08001

使用jdbc进行内部部署Db2 LUW SSL连接有几个先决条件。如果所有先决条件配置都成功完成,那么liquibase可以正确地使用SSL连接到本地Db2 LUW。以下是一些提示。

  • 必须根据此处的IBM Db2文档为SSL配置目标Db2 LUW实例。如果您使用的是来自IBM的基于云的Db2服务,那么这已经为您完成了,尽管您可能需要在客户端使用IBM提供的根证书。

  • 您的客户端JRE需要根据此处的IBM Db2 LUW文档进行配置。我将IBMJRE(与Db2LUW服务器一起提供(用于liquibase。

  • 对于内部部署Db2LUW,客户端需要创建java密钥库,并将服务器的证书导入其中(keytool -importcert -file /your/path/to/server_certificate ...(。

  • 对于您的特定错误,对于内部部署Db2 LUW,您可以尝试连接字符串中的其他选项来告诉JRE如何访问已导入服务器证书的客户端密钥库。特别是CCD_ 2。请注意,如果在云上使用Db2,我不需要这些选项(当我将DigiCertGlobalRootCA.crt添加到我的密钥库中时,likibase可以正确地使用SSL到云上的Db2(尽管这可能是不必要的(,但我没有尝试云上的Db2仓库,因为我不使用该服务。

最新更新