首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SSL连接到编目的Db2数据库时,SQLDriverConnect函数的正确连接字符串是什么?

使用SSL连接到编目的Db2数据库时,SQLDriverConnect函数的正确连接字符串是什么?
EN

Stack Overflow用户
提问于 2021-03-01 23:55:00
回答 1查看 211关注 0票数 0

使用SSL连接到编目的Db2数据库时,SQLDriverConnect函数的正确连接字符串是什么?编程语言-- C++。

如何准备数据库

代码语言:javascript
复制
db2 "CREATE DATABASE TESTDB"
....
db2 "CATALOG TCPIP NODE SSLNODE REMOTE <HOST> SERVER <PORT> SECURITY SSL
db2 "CATALOG DATABASE TESTDB AS SSLDS AT NODE SSLNODE"
db2 "TERMINATE"
db2stop
db2start

如果使用数据库名"TESTDB“可以连接,但是使用数据库别名"SSLDS”连接失败:

第一次尝试通过别名"SSLDS“连接到已编目的数据库时显示错误

代码语言:javascript
复制
[IBM][CLI Driver] SQL1224N  The database manager is not able to accept new requests, has terminated all requests in progress, or has terminated the specified request because of an error or a forced interrupt.  SQLSTATE=55032

下一次连接尝试显示错误:

代码语言:javascript
复制
[IBM][CLI Driver] SQL30040N  Execution failed because of unavailable resources that will not affect the successful execution of subsequent commands and SQL statements:  Reason "0x0", Type of Resource "MEMORY", Resource Name "", Product ID "SQL11013 ".  SQLSTATE=57012

我使用的连接字符串:

代码语言:javascript
复制
Database=SSLDS;UID=<USER>;PWD=<PWD>;Protocol=TCPIP;Servicename=<PORT>;Security=SSL;SSLClientKeystoredb=c:\ssl\storage.kdb;SSLClientKeystash=c:\ssl\storage.sth;

Db2实例SSL配置:

代码语言:javascript
复制
SSL server keydb file                   (SSL_SVR_KEYDB) = C:\ssl\server.kdb
SSL server stash file                   (SSL_SVR_STASH) = C:\ssl\server.sth
SSL server certificate label            (SSL_SVR_LABEL) = selfsignedcert
SSL service name                         (SSL_SVCENAME) = db2c_DB2
SSL cipher specs                      (SSL_CIPHERSPECS) =
SSL versions                             (SSL_VERSIONS) =
SSL client keydb file                  (SSL_CLNT_KEYDB) =
SSL client stash file                  (SSL_CLNT_STASH) =

db2set

代码语言:javascript
复制
DB2INSTOWNER=*****
DB2PORTRANGE=***:***
DB2_GRP_LOOKUP=LOCAL,TOKENLOCAL
DB2INSTPROF=C:\PROGRAMDATA\IBM\DB2\DB2COPY1
DB2COMM=SSL

创建GSK存储

代码语言:javascript
复制
gsk8capicmd_64.exe -keydb -create -db "C:\ssl\server.kdb" -stash -genpw
gsk8capicmd_64.exe -keydb -create -db "C:\ssl\storage.kdb" -stash -genpw
gsk8capicmd_64.exe -cert -create -db "C:\ssl\server.kdb" -stashed -label "selfsignedcert" -dn "CN=TestCompany"
gsk8capicmd_64.exe -cert -extract -db "C:\ssl\server.kdb" -stashed -label "selfsignedcert" -target "C:\ssl\server_cert.arm" -format ascii
gsk8capicmd_64.exe -cert -add -db "C:\ssl\storage.kdb" -stashed -label "selfsignedcert" -file "C:\ssl\server_cert.arm" -format ascii
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 03:26:10

如果在连接字符串中指定DATABASE=...,则必须使用真实的数据库名称,而不是别名。

如果您想使用别名,请改用DSN=... (并省略DATABASE=...)。

此外,您的连接字符串应包含HOSTNAME=...以获得最佳结果。

还要注意,如果只有一个证书文件,那么只需使用SSLServerCertificate=...关键字,其值为证书文件的完全限定路径名,就可以避免在客户端创建专用密钥库的麻烦。

此外,要外部化C++源代码中的所有连接属性,只需使用DSN=...;UID=...;PWD=...;并在db2dsdriver.cfg xml文件中定义DSN属性(包括SSL属性)即可。你自己选吧。

您的其他错误,如SQL1224N和SQL30040N是特定于配置的,并且您的问题忽略了客户端和服务器配置的事实。但首先修复连接字符串,这些错误可能会消失。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66425370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档