在微服务之间, 人们通常会使用https进行加密通讯。 在数据库和微服务之间, 越来越多的公司也开始要求使用SSL来进行加密通讯,即便数据库和微服务其实是在同一个内网当中。 到数据库的加密连接, 通常也分为单向验证(通常也叫做Server Authentication)和双向验证(Two-way Authentication, 包括了Server Authentication和Client Authentication)(https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-using-ssl.html), 这一点上和https的连接是类似的。在下面的介绍中讲将介绍如何一步步为k8s的微服务建立到数据库的实现了Server Authentication的SSL连接。
通常要建立单向的SSL认证, 客户端需要配置一个trust store, 然后在trust store中存放能够验证数据库服务器的CA证书。 客户端还需要保存对应这个trust store的密钥, 才能够打开truststore,读取到CA证书。
通过下面的命令我们先为微服务程序创建好truststore和对应的password, 首先从对应的数据库服务器上去下载对应的ca证书。 如果是mysql 的服务器, 可以通过以下的命令来获得ca证书在服务器上存放的位置。
show varaibles like '%ssl%'
你应该会看到下面的输出:
下载对应的ca.pem证书到本机, 运行下面的命令生成一个truststore.jks, 并且记下对应的password。
keytool -import -alias dbServerCACert -file