Go
MySQL

GoでMySQLにCA証明書を使ってアクセスする

More than 1 year has passed since last update.

このようにすれば接続できる。

package main

import (
"crypto/tls"
"crypto/x509"
"database/sql"
"errors"
"io/ioutil"

"github.com/go-sql-driver/mysql"
)

func registerTlsConfig(pemPath, tlsConfigKey string) (err error) {
caCertPool := x509.NewCertPool()
pem, err := ioutil.ReadFile(pemPath)
if err != nil {
return
}

if ok := caCertPool.AppendCertsFromPEM(pem); !ok {
return errors.New("Failed to append PEM.")
}
mysql.RegisterTLSConfig(tlsConfigKey, &tls.Config{
ClientCAs: caCertPool,
InsecureSkipVerify: true, // 必要に応じて
})

return
}

func main() {
registerTlsConfig("/path/client-ca.pem", "custom")
if err != nil {
panic(err)
}
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database?tls=custom")
}


解説

go-sql-driver/mysqlのRegisterTLSConfigにRootCAとキーペアを使用して接続するサンプルコードがある。今回はこれを修正してCA証明書を用いてMySQLにアクセスできるようにした。