Jon*_*itz 5 mysql ssl go amazon-web-services
我有一个在AWS上运行的RDS实例,我想知道如何通过ssl连接到该实例。
从此链接将SSL与mysql数据库一起使用。AWS设置我们的数据库,该数据库已注册了证书并提供了根证书供下载。 AWS RDS根CA
现在,go-mysql-driver在该文档中提供了此信息以设置ssl连接。
rootCertPool := x509.NewCertPool()
pem, err := ioutil.ReadFile("/path/ca-cert.pem")
if err != nil {
log.Fatal(err)
}
if ok := rootCertPool.AppendCertsFromPEM(pem); !ok {
log.Fatal("Failed to append PEM.")
}
clientCert := make([]tls.Certificate, 0, 1)
certs, err := tls.LoadX509KeyPair("/path/client-cert.pem", "/path/client- key.pem")
if err != nil {
log.Fatal(err)
}
clientCert = append(clientCert, certs)
mysql.RegisterTLSConfig("custom", &tls.Config{
RootCAs: rootCertPool,
Certificates: clientCert,
})
db, err := sql.Open("mysql", "user@tcp(localhost:3306)/test?tls=custom")
Run Code Online (Sandbox Code Playgroud)
该示例表明我需要客户端证书和客户端密钥。
但是亚马逊只提供根证书。如何与go-mysql-driver一起使用以连接到我的mysql实例?
我会在上一个答案中添加评论,但我的声誉还不够高。这对我有用:
rootCertPool := x509.NewCertPool()
pem, err := ioutil.ReadFile("/path/ca-cert.pem")
if err != nil {
log.Fatal(err)
}
if ok := rootCertPool.AppendCertsFromPEM(pem); !ok {
log.Fatal("Failed to append PEM.")
}
mysql.RegisterTLSConfig("custom", &tls.Config{
ServerName: "qcaurora.cb556lynvxio.us-east-1.rds.amazonaws.com",
RootCAs: rootCertPool,
})
db, err := sql.Open("mysql", "user:pass@tcp(qcrds.example.com:3306)/databasename?tls=custom")
Run Code Online (Sandbox Code Playgroud)
与上面的唯一变化是添加了 ServerName 字段。我还澄清了用于 CNAME dns 条目和使用密码的地址字段。如果您不使用 CNAME 到 RDS,则可以省略 ServerName 字段。
我正在使用 go 1.11 和 go-sql-driver/mysql 版本 v1.4.1。
通过查看此处、此处和此处的文档,您似乎只需将该RootCAs值设置为从 AWS 获取的根证书即可。您不需要设置该Certificates值,因为您没有使用客户端证书。所以代码看起来像这样:
rootCertPool := x509.NewCertPool()
pem, err := ioutil.ReadFile("/path/ca-cert.pem")
if err != nil {
log.Fatal(err)
}
if ok := rootCertPool.AppendCertsFromPEM(pem); !ok {
log.Fatal("Failed to append PEM.")
}
mysql.RegisterTLSConfig("custom", &tls.Config{
RootCAs: rootCertPool,
})
db, err := sql.Open("mysql", "user@tcp(localhost:3306)/test?tls=custom")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
877 次 |
| 最近记录: |