我已经看到了保护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连接重要吗?他们的缺席如何影响握手。
谢谢。
在第一个示例中,客户端(node.js)使用证书颁发机构捆绑包来确保 server 提供的证书以某种方式链接到该捆绑包中的一个证书。
这确保客户端可以信任服务器的身份。
在第二个示例中,除了上述验证之外,客户端还向服务器提供了自己的证书,以便服务器可以验证客户端是否被授权。这是一种相互身份验证的形式,其中客户端确保它可以信任服务器,而不是服务器上的服务器。
方案1:提供到服务器的TLS连接,验证服务器是它所说的身份。
方案2:提供与服务器的TLS连接,验证服务器的真实身份,服务器能够验证客户端是预期的授权客户端之一。
这不会影响握手
在您可以使用的时候
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提供)