NodeJ中的Mysql-ssl连接需要什么握手

发布时间:2020-07-07 15:51

我已经看到了保护NodeJ中mysql连接的两种主要方法。 首先:

const db_config = {
   user: process.env.DB_USER,
   database: process.env.DB_NAME,
   password: process.env.DB_PASS,
   host: process.env.DB_HOST,
   ssl : {
       ca : fs.readFileSync(__dirname + '/ca-server.pem'),
       key : fs.readFileSync(__dirname + '/client-key.pem'),
       cert : fs.readFileSync(__dirname + '/client-cert.pem'),
       rejectUnauthorized: false
   }
}

但是我也看到过:

cert

问题是key和{{1}}对ssl连接重要吗?他们的缺席如何影响握手。

谢谢。

回答1

在第一个示例中,客户端(node.js)使用证书颁发机构捆绑包来确保 server 提供的证书以某种方式链接到该捆绑包中的一个证书。

这确保客户端可以信任服务器的身份

在第二个示例中,除了上述验证之外,客户端还向服务器提供了自己的证书,以便服务器可以验证客户端是否被授权。这是一种相互身份验证的形式,其中客户端确保它可以信任服务器,而不是服务器上的服务器。

方案1:提供到服务器的TLS连接,验证服务器是它所说的身份。

方案2:提供与服务器的TLS连接,验证服务器的真实身份,服务器能够验证客户端是预期的授权客户端之一。

回答2

这不会影响握手

在您可以使用的时候

   key : fs.readFileSync(__dirname + '/client-key.pem'),
   cert : fs.readFileSync(__dirname + '/client-cert.pem')

login进入mysql,您已经建立了安全连接。

如果他们丢失,它将使用用户名和密码

使用

ca : fs.readFileSync(__dirname + '/ca-server.pem')

您说您信任主机,但是证书仍将测试它是否属于主机。像isaid一样,您已经建立了连接,以使用用户名/密码或ssl凭据(由ca提供)