更新时间:2026-07-28 GMT+08:00
以SSL方式连接
应用程序通过Go驱动连接GaussDB数据库时,可以开启SSL加密客户端和服务端之间的通讯。当开启SSL加密模式时,Go驱动默认执行TLS 1.3标准协议,支持SSL加密模式最低为TLS 1.2标准协议。本小节主要介绍如何采用SSL方式对客户端进行配置。
前提条件
已经获取服务端所需要的证书和私钥文件,并完成服务端配置;同时已经获取客户端所需要的client.crt客户端证书、cacert.pem根证书、client.key客户端私钥文件。
关于证书生成和获取,请联系管理员。服务端配置证书的具体操作,请联系管理员。
使用require和verify-ca验证连接数据库
- 设置环境变量。
export GOHOSTIP="XXX.XXX.XXX.XXX" export GOPORT=XXX export GOUSRNAME="XXX" export GOPASSWD="XXXXXXX" export GOSSLPASSWD="XXXXXXX"
- 导入连接所需的依赖包。
package main //依赖包根据环境中依赖包路径设置。 import ( "database/sql" _ [go驱动模块名] //请根据go驱动实际模块名替换。 "os" "log" )
- 调用os.Getenv()方法从环境变量获取IP地址、端口号、用户名、用户密码、SSL密码短语。
hostip := os.Getenv("GOHOSTIP") port := os.Getenv("GOPORT") usrname := os.Getenv("GOUSRNAME") passwd := os.Getenv("GOPASSWD") sslpasswd := os.Getenv("GOSSLPASSWD") - 采用DSN格式定义连接字符串。
dsnStr := "host=" + hostip + " port=" + port + " user=" + usrname + " password=" + passwd + " dbname=gaussdb sslcert=certs/client.crt sslkey=certs/client.key sslpassword=" + sslpasswd
- 配置sslmode。
parameters := []string{ " sslmode=require", " sslmode=verify-ca sslrootcert=certs/cacert.pem", } - 启用SSL加密的方式,分别使用require和verify-ca验证连接数据库。
for _, param := range parameters { db, err := sql.Open("gaussdb", dsnStr+param) if err != nil { log.Fatal(err) } err = db.Ping() //验证是否成功连接数据库。 if err != nil { log.Fatal(err) } }
步骤2-步骤6为示例中的业务代码。
使用RSA和ECDSA两种证书连接数据库
- 设置环境变量。
export GOHOSTIP="XXX.XXX.XXX.XXX" export GOPORT=XXX export GOUSRNAME="XXX" export GOPASSWD="XXXXXXX" export GOSSLPASSWD="XXXXXXX"
- 导入连接所需的依赖包。
package main //依赖包根据环境中依赖包路径设置。 import ( "database/sql" _ [go驱动模块名] //请根据go驱动实际模块名替换。 "os" "log" )
- 调用os.Getenv()方法从环境变量获取IP地址、端口号、用户名、用户密码、SSL密码短语。
hostip := os.Getenv("GOHOSTIP") port := os.Getenv("GOPORT") usrname := os.Getenv("GOUSRNAME") passwd := os.Getenv("GOPASSWD") sslpasswd := os.Getenv("GOSSLPASSWD") - 采用DSN格式定义连接字符串。
dsnStr := "host=" + hostip + " port=" + port + " user=" + usrname + " password=" + passwd + " dbname=gaussdb sslcert=certs/client.crt sslkey=certs/client.key sslpassword=" + sslpasswd
- 配置SSL相关参数。
connStrs := []string{ " sslmode=verify-ca sslcert=certs/client_rsa.crt sslkey=certs/client_rsa.key sslpassword=" + sslpasswd + " sslrootcert=certs/cacert_rsa.pem", " sslmode=verify-ca sslcert=certs/client_ecdsa.crt sslkey=certs/client_ecdsa.key sslpassword=" + sslpasswd + " sslrootcert=certs/cacert_ecdsa.pem", } - 分别使用RSA和ECDSA两种证书来连接数据库。
for _, connStr := range connStrs { db, err := sql.Open("gaussdb", dsnStr+connStr) if err != nil { log.Fatal(err) } err = db.Ping() //验证是否成功连接数据库。 if err != nil { log.Fatal(err) } }
步骤2-步骤6为示例中的业务代码。
父主题: 连接数据库