美文网首页
mariadb配置ssl

mariadb配置ssl

作者: lcarrotp | 来源:发表于2018-11-29 12:52 被阅读0次

    参考:

    https://blog.csdn.net/johnhill_/article/details/72831932

    1、查看mariadb是否支持ssl

    进入mariadb shell中查看,若存在下图中所示信息则表示支持

    show global variables like "%ssl%";

    clipboard.png

    2、创建自建root证书

    ①创建证书私钥(ca-key.pem)

    openssl genrsa 2048 > ca-key.pem

    ②创建root证书(ca-cert.pem)

    openssl req -sha1 -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem

    clipboard2.png

    3、创建服务端证书

    ①创建服务端私钥(server-key.pem)、证书请求文件(server-req.pem)

    openssl req -sha1 -newkey rsa:2048 -days 3650 -nodes -keyout server-key.pem > server-req.pem

    ②将私钥转换为rsa私钥格式

    openssl rsa -in client-key.pem -out client-key.pem

    ③生成服务端证书(server-cert.pem)

    openssl x509 -sha1 -req -in server-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem

    clipboard3.png

    (注:上图中的Common Name在整个自建证书中需保持唯一性)

    ④验证证书是否成功创建

    openssl verify -CAfile ca-cert.pem server-cert.pem

    出现如下图所示则表示证书创建成功,否则检查Common Name是否发生冲突(大部分配置失败都是这个问题导致)

    clipboard4.png

    4、创建客户端证书

    ①创建证书私钥(ca-key.pem)

    openssl genrsa 2048 > ca-key.pem

    ②创建root证书(ca-cert.pem)

    openssl req -sha1 -x509 -nodes -days 3650 -key ca-key.pem > ca-cert.pem

    clipboard5.png

    4、创建客户端证书

    ①创建服务端私钥(client-key.pem)、证书请求文件(client-req.pem)

    openssl x509 -sha1 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem

    ②将私钥转换为rsa私钥格式

    openssl rsa -in client-key.pem -out client-key.pem

    ③生成服务端证书(server-cert.pem)

    openssl x509 -sha1 -req -in client-req.pem -days 3650 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem

    ④验证证书是否成功创建

    openssl verify -CAfile ca-cert.pem client-cert.pem

    5、修改mariadb配置文件

    ①在mariadb的配置文件/etc/my.cnf中添加如下内容,后重启服务

    ssl-ca=/etc/my.cnf.d/ssl/ca-cert.pem

    ssl-key=/etc/my.cnf.d/ssl/server-key.pem

    ssl-cert=/etc/my.cnf.d/ssl/server-cert.pem

    ②查看是否启动ssl

    show global variables like '%ssl%';

    clipboard6.png

    6、添加ssl访问用户

    grant all privileges on . to 'ssl_test'@'localhost' identified by 'ssl_test' require ssl;

    grant all privileges on . to 'ssl_test'@'%t' identified by 'ssl_test' require ssl;

    flsuh privileges;

    7、验证

    mysql -u ssl_test -pssl_test --ssl-ca=/root/mariadb_ca/ca-cert.pem --ssl-cert=/root/mariadb_ca/client-cert.pem --ssl-key=/root/mariadb_ca/client-key.pem

    clipboard7.png

    8、其中涉及的一些原理介绍

    (不一定正确仅是个人理解)

    ①为何要分别配置客户端证书、服务端证书?

    mariadb配置ssl,这种方式使用的是SSL双向认证

    ②为何生成每个证书时都要CA证书和CA私钥?

    因为若server端向CA申请证书,需要使用CA的私钥加密server端的公钥,然后client端通过获取ca证书中server的公钥并进行验证。同理clientr端向CA申请证书也需使用CA的私钥加密server端的公钥,然后server端通过获取ca证书中的client公钥并进行验证,最后建立SSL连接。

    相关文章

      网友评论

          本文标题:mariadb配置ssl

          本文链接:https://www.haomeiwen.com/subject/mnnxcqtx.html