当前位置:   article > 正文

【MySQL精通之路】MySQL8.0新增功能-重用SSL会话_mysql 8 启动ssl

mysql 8 启动ssl

目录

1.重用SSL会话

1.1 SSL会话重用的服务器端运行时配置和监控

1.1.1 要在运行时重新配置SSL会话缓存,请使用以下过程:

1.1.1.1 设置应更改为其新值的每个与缓存相关的系统变量。

1.1.1.2.执行ALTER INSTANCE RELOAD TLS。

1.2 SSL会话重用的客户端配置


1.重用SSL会话

从MySQL 8.0.29开始,MySQL客户端程序可以选择恢复以前的SSL会话前提是服务器在其运行时缓存中有会话。本节介绍有利于SSL会话重用的条件、用于管理监视会话缓存服务器变量,以及用于存储重用会话数据的客户端命令行选项


每个完整的TLS交换在计算和网络开销方面都是昂贵的,如果使用TLSv1.3,则成本更低。通过从已建立的会话中提取会话票证,然后在建立下一个连接时提交该票证,如果可以重用会话,则可以降低总体成本。例如,考虑一下拥有可以打开多个连接并更快生成的网页的好处。


通常,必须满足以下条件,才能重用SSL会话:

-服务器必须将其会话缓存保存在内存中
-服务器端会话缓存淘汰时间不能过期
-每个客户端都必须维护活动会话的缓存并确保其安全

C应用程序可以使用C API功能为加密连接启用会话重用(请参阅SSL会话重用)。

1.1 SSL会话重用的服务器端运行时配置和监控

为了创建初始TLS上下文,服务器使用上下文相关系统变量在启动时具有的值。为了公开上下文值,服务器还初始化一组相应的状态变量。下表显示了定义服务器运行时会话缓存的系统变量,以及公开当前活动会话缓存值的相应状态变量。

表8.15会话重用的系统和状态变量

ssl_session_cache_mode服务器变量的值为ON(这是默认模式)时,ssl_session_cache_mode状态变量的值是server。

SSL会话缓存变量同时应用于mysql_main和mysql_admin TLS通道。它们的值也显示为Performance Schema库tls_channel_status表中的属性,以及任何其他活动tls上下文的属性。

1.1.1 要在运行时重新配置SSL会话缓存,请使用以下过程:

1.1.1.1 设置应更改为其新值的每个与缓存相关的系统变量。

例如,将缓存超时值从默认值(300秒)更改为600秒:

mysql> SET GLOBAL ssl_session_cache_timeout = 600;

由于重新配置过程的工作方式,每对系统和状态变量的成员可能暂时具有不同的值。

  1. mysql> SHOW VARIABLES LIKE 'ssl_session_cache_timeout';
  2. +---------------------------+-------+
  3. | Variable_name | Value |
  4. +---------------------------+-------+
  5. | ssl_session_cache_timeout | 600 |
  6. +---------------------------+-------+
  7. 1 row in set (0.00 sec)
  8. mysql> SHOW STATUS LIKE 'Ssl_session_cache_timeout';
  9. +---------------------------+-------+
  10. | Variable_name | Value |
  11. +---------------------------+-------+
  12. | Ssl_session_cache_timeout | 300 |
  13. +---------------------------+-------+
  14. 1 row in set (0.00 sec)

有关设置变量值的其他信息,请参阅系统变量分配。

1.1.1.2.执行ALTER INSTANCE RELOAD TLS。

此语句根据缓存相关系统变量的当前值重新配置活动TLS上下文。它还设置与缓存相关的状态变量,以反映新的活动缓存值。该语句需要CONNECTION_ADMIN权限

  1. mysql> ALTER INSTANCE RELOAD TLS;
  2. Query OK, 0 rows affected (0.01 sec)
  3. mysql> SHOW VARIABLES LIKE 'ssl_session_cache_timeout';
  4. +---------------------------+-------+
  5. | Variable_name | Value |
  6. +---------------------------+-------+
  7. | ssl_session_cache_timeout | 600 |
  8. +---------------------------+-------+
  9. 1 row in set (0.00 sec)
  10. mysql> SHOW STATUS LIKE 'Ssl_session_cache_timeout';
  11. +---------------------------+-------+
  12. | Variable_name | Value |
  13. +---------------------------+-------+
  14. | Ssl_session_cache_timeout | 600 |
  15. +---------------------------+-------+
  16. 1 row in set (0.00 sec)

在执行ALTER INSTANCE RELOAD TLS之后建立的新连接使用新的TLS上下文。现有连接不受影响。

博主PS:新规矩不影响旧行为!

1.2 SSL会话重用的客户端配置

所有MySQL客户端程序都能够将先前的会话重新用于与同一服务器建立的新加密连接,前提是您在原始连接仍处于活动状态时存储了会话数据。会话数据存储到一个文件中,您可以在再次调用客户端时指定该文件。

要存储和重用SSL会话数据,请使用以下过程:

1.2.1 调用mysql以建立与运行mysql 8.0.29或更高版本的服务器的加密连接

1.2.2 使用ssl_session_data_print命令指定可以安全存储当前活动会话数据的文件的路径。例如:

mysql> ssl_session_data_print ~/private-dir/session.txt

会话数据是以空终止PEM编码ANSI字符串的形式获得的。如果省略路径文件名该字符串将打印为标准输出

1.2.3 在命令解释器的提示下,调用任何MySQL客户端程序,以建立到同一服务器的新加密连接。要重用会话数据,请指定--ssl-session-data命令行选项和文件参数。

例如,使用mysql建立一个新连接:

mysql -u admin -p --ssl-session-data=~/private-dir/session.txt

然后是mysqlshow客户端:

  1. mysqlshow -u admin -p --ssl-session-data=~/private-dir/session.txt
  2. Enter password: *****
  3. +--------------------+
  4. | Databases |
  5. +--------------------+
  6. | information_schema |
  7. | mysql |
  8. | performance_schema |
  9. | sys |
  10. | world |
  11. +--------------------+

在每个示例中,客户端都会尝试恢复原始会话,同时建立与同一服务器的新连接。

要确认mysql是否重用了会话,请参阅status命令的输出。如果当前活动的mysql连接确实恢复了会话,则状态信息包括SSL会话重用:true。

除了mysql和mysqlshow,SSL会话重用还适用于mysqladmin、mysqlbinlog、mysqlcheck、mysqldump、mysqlimport、mysqlpump、mysqlslap、mysqltest、mysql_migrate_keyring、mysql_secure_installation和mysql_upgrade。

有几种情况可能会阻止会话数据的成功检索。例如,如果会话未完全连接,则它不是SSL会话,服务器尚未发送会话数据,或者SSL会话根本无法重复使用。即使使用正确存储的会话数据,服务器的会话缓存也可能超时。不管是什么原因,如果指定--ssl-session-data,但该会话无法重用,则默认情况下会返回一个错误。例如:

  1. mysqlshow -u admin -p --ssl-session-data=~/private-dir/session.txt
  2. Enter password: *****
  3. ERROR:
  4. --ssl-session-data specified but the session was not reused.

要抑制错误消息,并通过静默创建新会话来建立连接,请在命令行上指定--ssl-session-data-continue-on-failed-reuse ,以及--ssl-session-data。如果服务器的缓存超时已过期,则可以将会话数据再次存储到同一文件中。默认的服务器缓存淘汰时间可以延长(请参阅1.1中的SSL会话重用的服务器端运行时配置和监控)。

PS: SSL的重用会话用得不多,因为我们大部分情况不用mysql的ssl加密,还记得我们常常连接mysql时,都会在连接参数后加上一个useSSL=false配置吗。嗯就是他了。不过作为了解,当我们真的需要ssl连接时,查阅这里就可以配置它了

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号