mysql配置SSL证书登录的实现

目录
  • 前言
  • 一、mysql 启用 ssl 配置
    • 1.1 检查是否开启 ssl
    • 1.2 设置用户是否使用 ssl 连接
    • 1.3 使用 ssl 登录
  • 二、总结

    前言

    国家等级保护三级安全要求,mysql 的 ssl 需要安全证书加密,这里需要研究一下,选几个账户演示下即可。mysql 的版本为 8.0.20

    一、mysql 启用 ssl 配置

    1.1 检查是否开启 ssl

    mysql> show variables like '%ssl%';
    +--------------------+-----------------+
    | variable_name      | value           |
    +--------------------+-----------------+
    | have_openssl       | yes             |  
    | have_ssl           | yes             |  # 已开启ssl
    | mysqlx_ssl_ca      |                 |
    | mysqlx_ssl_capath  |                 |
    | mysqlx_ssl_cert    |                 |
    | mysqlx_ssl_cipher  |                 |
    | mysqlx_ssl_crl     |                 |
    | mysqlx_ssl_crlpath |                 |
    | mysqlx_ssl_key     |                 |
    | ssl_ca             | ca.pem          |
    | ssl_capath         |                 |
    | ssl_cert           | server-cert.pem |
    | ssl_cipher         |                 |
    | ssl_crl            |                 |
    | ssl_crlpath        |                 |
    | ssl_fips_mode      | off             |
    | ssl_key            | server-key.pem  |
    +--------------------+-----------------+
    17 rows in set (0.56 sec)
    

    1.2 设置用户是否使用 ssl 连接

    mysql> select ssl_type from user where user = 'dev_fqr' ;
    +----------+
    | ssl_type |
    +----------+
    |          |
    +----------+
    1 row in set (0.05 sec)
    

    默认用户是没有使用 ssl 登录的。
    我们可以强制这个管理用户使用 ssl 登录。

    alter user 'xxx'@'%' require ssl;
    取消ssl验证:
    alter user 'xxx'@'%' require none;
    

    更改后,该账户就无法登录了,查看状态变成下面这种

    mysql> select ssl_type from user where user = 'dev_fqr' ;
    +----------+
    | ssl_type |
    +----------+
    | any      |
    +----------+
    1 row in set (0.01 sec)
    

    测试登录,本机无法直接登录。

    [root@localhost data]# mysql -u dev_fqr -p
    enter password: 
    error 2026 (hy000): ssl connection error: ssl is required but the server doesn't support it
    

    远程客户端无法直接登录:

    1.3 使用 ssl 登录

    要想通过 ssl 登录,就需要用到下面这几个证书,通过 client 证书 与 server 端进行校验通过才能登录成功。

    1) 本机登录

    在 data 目录下的三个文件证书登录。

    [root@localhost data]# mysql -udev_fqr -pdev@fqr2021 --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem
    mysql: [warning] using a password on the command line interface can be insecure.
    welcome to the mysql monitor.  commands end with ; or \g.
    your mysql connection id is 55
    server version: 8.0.22 mysql community server - gpl
    ​
    copyright (c) 2000, 2020, oracle and/or its affiliates. all rights reserved.
    ​
    oracle is a registered trademark of oracle corporation and/or its
    affiliates. other names may be trademarks of their respective
    owners.
    ​
    type 'help;' or '\h' for help. type '\c' to clear the current input statement.
    ​
    you are enforcing ssl connection via unix socket. please consider
    switching ssl off as it does not make connection via unix socket
    any more secure.
    mysql> 
    

    2)navicate 远程客户端登录

    把这三个证书下载下来

    配置证书目录,即可远程访问:

    二、总结

    因为测评的时候不会看 jdbc 里面的配置,所以 jdbc 就不改了,不然要改动的地方非常的多,具体演示的时候可以用提前准备两个账号,到时候用客户端连接即可。
    目前两台 mysql 的ssl 用户如下:

    到此这篇关于mysql配置ssl证书登录的实现的文章就介绍到这了,更多相关mysql ssl证书登录内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com! 

    (0)
    上一篇 2022年3月21日
    下一篇 2022年3月21日

    相关推荐