• ProxySQL SSL 配置


    后端 SSH 连接配置
    
    从版本 v1.2.0e 开始,ProxySQL 支持对后端使用 SSL 连接。
    
    重要提示:
    
        仅支持 v1.x 中的后端 SSL。在 v2.x 之前的版本中,客户端是无法使用 SSL 连接到 ProxySQL 的。
        从 v1.4.5 开始,由于 ProxySQL 使用了 mariadb-connector-c-2.3.1,所以只支持 SSL/TLSv1.0。
        在 ProxySQL v2.x 中,使用了 mariadb-connector-3.0.2,它支持 SSL/TLSv1.0、TLSv1.1 和 TLSv1.2。这些适用于前端和后端连接。
    
    启用 SSL 的准备工作
    
    若要启用 SSL 连接,需要做如下准备:
    
        对要启用 SSL 的服务器,更新其 mysqlservers.usessl 中的 SSL 值。
    
        更新关联的全局变量(仅在 ProxySQL v1.x 版本中需要,ProxySQL v2.x 不需要)
    
    为服务器启用 SSL 设置
    
    如果要使用 SSL 和非 SSL 都可以连接到同一服务器,则需要给同一个服务器配置不同的主机组,并定义访问规则。例如,要在一台服务器上配置 SSL:
    
    mysql> SELECT * FROM mysql_servers;
    +--------------+-----------+-------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
    | hostgroup_id | hostname  | port  | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms |
    +--------------+-----------+-------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
    | 1            | 127.0.0.1 | 21891 | ONLINE | 1      | 0           | 1000            | 0                   | 0       | 0              |
    | 2            | 127.0.0.1 | 21892 | ONLINE | 1      | 0           | 1000            | 0                   | 0       | 0              |
    | 2            | 127.0.0.1 | 21893 | ONLINE | 1      | 0           | 1000            | 0                   | 0       | 0              |
    +--------------+-----------+-------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
    3 rows in set (0.00 sec)
    
    mysql> UPDATE mysql_servers SET use_ssl=1 WHERE port=21891;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT * FROM mysql_servers;
    +--------------+-----------+-------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
    | hostgroup_id | hostname  | port  | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms |
    +--------------+-----------+-------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
    | 1            | 127.0.0.1 | 21891 | ONLINE | 1      | 0           | 1000            | 0                   | 1       | 0              |
    | 2            | 127.0.0.1 | 21892 | ONLINE | 1      | 0           | 1000            | 0                   | 0       | 0              |
    | 2            | 127.0.0.1 | 21893 | ONLINE | 1      | 0           | 1000            | 0                   | 0       | 0              |
    +--------------+-----------+-------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
    3 rows in set (0.00 sec)
    
    mysql> LOAD MYSQL SERVERS TO RUNTIME;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SELECT * FROM runtime_mysql_servers;
    +--------------+-----------+-------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
    | hostgroup_id | hostname  | port  | status | weight | compression | max_connections | max_replication_lag | use_ssl | max_latency_ms |
    +--------------+-----------+-------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
    | 1            | 127.0.0.1 | 21891 | ONLINE | 1      | 0           | 1000            | 0                   | 1       | 0              |
    | 2            | 127.0.0.1 | 21892 | ONLINE | 1      | 0           | 1000            | 0                   | 0       | 0              |
    | 2            | 127.0.0.1 | 21893 | ONLINE | 1      | 0           | 1000            | 0                   | 0       | 0              |
    +--------------+-----------+-------+--------+--------+-------------+-----------------+---------------------+---------+----------------+
    3 rows in set (0.00 sec)
    
    在此阶段,如果使用的是 ProxySQL v1.x,尝试连接 21891 端口,连接将不会使用 SSL,因为没有配置密钥和证书,相反会以正常的非 SSL 建立连接。 而在版本 ProxySQL v2.x,如果 use_ssl = 1,那么所有新连接都会使用 SSL(意味着使用 MySQL 的内置密钥/证书)。 为 SSL 连接配置密钥和证书
    
    Admin> SELECT * FROM global_variables WHERE variable_name LIKE 'mysql%ssl%';
    +--------------------+----------------+
    | variable_name      | variable_value |
    +--------------------+----------------+
    | mysql-ssl_p2s_ca   | (null)         |
    | mysql-ssl_p2s_cert | (null)         |
    | mysql-ssl_p2s_key  | (null)         |
    +--------------------+----------------+
    3 rows in set (0.00 sec)
    
    Admin> SET mysql-ssl_p2s_cert="/home/vagrant/newcerts/client-cert.pem";
    Query OK, 1 row affected (0.00 sec)
    
    Admin> SET mysql-ssl_p2s_key="/home/vagrant/newcerts/client-key.pem";
    Query OK, 1 row affected (0.00 sec)
    
    Admin> SELECT * FROM global_variables WHERE variable_name LIKE 'mysql%ssl%';
    +--------------------+----------------------------------------+
    | variable_name      | variable_value                         |
    +--------------------+----------------------------------------+
    | mysql-ssl_p2s_ca   | (null)                                 |
    | mysql-ssl_p2s_cert | /home/vagrant/newcerts/client-cert.pem |
    | mysql-ssl_p2s_key  | /home/vagrant/newcerts/client-key.pem  |
    +--------------------+----------------------------------------+
    3 rows in set (0.01 sec)
    
    Admin> LOAD MYSQL VARIABLES TO RUNTIME;
    Query OK, 0 rows affected (0.00 sec)
    
    经过上面的配置后,所有与主机 127.0.0.1 的 21891 端口的新连接都将使用 SSL。
    
    验证
    
    要验证 SSL 在 ProxySQL 和 MySQL 之间是否正常工作,并检查连接到 ProxySQL 的 SSL CIPHER(SSL 密钥)是否正常,可以运行 SHOW SESSION STATUS LIKE \"Ssl_cipher\" 命令,例如:
    
    mysql -h127.0.0.1 -P6033 -uroot -psecret -e 'SHOW SESSION STATUS LIKE "Ssl_cipher"'
    +---------------+----------------------+
    | Variable_name | Value                |
    +---------------+----------------------+
    | Ssl_cipher    | ECDHE-RSA-AES256-SHA |
    +---------------+----------------------+
    
    上面的显示表示已经生效
    
    前端 SSH 连接配置
    
    自 2.0 起就可用,尽管默认是禁用状态。
    
    要为前端连接启用 SSL,需要启用 mysql-have_ssl = true。一旦启用此变量,ProxySQL 将自动在 datadir(/var/lib/proxysql)中生成以下文件:proxysql-ca.pemproxysql-cert.pemproxysql-key.pem
    
    当然,也可以预定义这些文件。并且,变量更新后,需要执行 LOAD MYSQL VARIABLES TO RUNTIME,这样新的连接才会使用 SSL。
    
    要验证 SSL 是否正常工作,同时检查 MySQL 客户端和 ProxySQL 之间使用的 SSL CIPHER(密钥)情况,可以连入 ProxySQL 并执行 \s 命令。例如:
    
    mysql -h127.0.0.1 -P6033 -uroot -psecret -e's' | grep -P 'SSL|Connection'
    SSL: Cipher in use is DHE-RSA-AES256-SHA
    Connection: 127.0.0.1 via TCP/IP
    
    支持如下协议: TLSv1 TLSv1.1 TLSv1.2
    
    原来的 SSLv2 和 SSLv3 已在 2.0.6 版本中移除。 支持的密钥类型:
    
    DHE-RSA-AES256-GCM-SHA384
    DHE-RSA-AES256-SHA256
    DHE-RSA-AES256-SHA
    DHE-RSA-CAMELLIA256-SHA
    AES256-GCM-SHA384
    AES256-SHA256
    AES256-SHA
    CAMELLIA256-SHA
    DHE-RSA-AES128-GCM-SHA256
    DHE-RSA-AES128-SHA256
    DHE-RSA-AES128-SHA
    DHE-RSA-SEED-SHA
    DHE-RSA-CAMELLIA128-SHA
    AES128-GCM-SHA256
    AES128-SHA256
    AES128-SHA
    SEED-SHA
    CAMELLIA128-SHA
    DES-CBC3-SHA
    
    
  • 相关阅读:
    BOI 2002 双调路径
    BOI'98 DAY 2 TASK 1 CONFERENCE CALL Dijkstra/Dijkstra+priority_queue/SPFA
    USACO 2013 November Contest, Silver Problem 2. Crowded Cows 单调队列
    BOI 2003 Problem. Spaceship
    USACO 2006 November Contest Problem. Road Blocks SPFA
    CEOI 2004 Trial session Problem. Journey DFS
    USACO 2015 January Contest, Silver Problem 2. Cow Routing Dijkstra
    LG P1233 木棍加工 动态规划,Dilworth
    LG P1020 导弹拦截 Dilworth
    USACO 2007 February Contest, Silver Problem 3. Silver Cow Party SPFA
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/16394143.html
Copyright © 2020-2023  润新知