RDS MySQL SSL 使用详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: RDS MySQL SSL 使用详解

背景描述

为了提高RDS MySQL的链路安全性,可以启用SSL(Secure Sockets Layer)加密,并安装SSL CA证书到需要的应用服务。SSL在传输层对网络连接进行加密,能提升通信数据的安全性和完整性,但会同时增加网络连接响应时间。

SSL在部署和使用过程,易出现各种问题,本文就个人经验介绍一下MySQL SSL常见问题。


SSL技术简单介绍

SSL技术优点

  • 机密性:SSL协议使用密钥加密通信数据。
  • 可靠性:服务器和客户都会被认证,客户的认证是可选的。
  • 完整性:SSL协议会对传送的数据进行完整性检查。

工作原理

流程图


SSL握手流程

  1. 客户端向服务器发送Client Hello,信息包含:SSL协议号、加密算法、随机数,等信息。
  2. 服务端向客户端发送Server Hello,信息包含:SSL协议号、加密算法、随机数和自已的公钥等。数据进行签名。
  3. 客户端检证证书是否过期,CA是否可靠,并用公钥进行验证签名是否正确。
  4. 客户端生成对称密钥,并用公钥进行加密,回传给服务端。用于后续加密。(对称加密比非对称加密省资源)
  5. 如果(在握手过程中可选)服务端要求验证客户身份,客户会生成一个随机数,然后进行签名,并将签名随机数和自己的证书传送给服务器。
  6. 同4步,服务器验证客户端的证书和签名信息等。
  7. 服务器和客户端使用相同的主密码进行通信。同时还要验证通信过程中的完整性。
  8. 客户端向服务器发出信息,指明使用对称密钥进行加密,同时告知服务器握手结束。
  9. 服务器向客户端发出信息,指明使用对称密钥进行加密,同时告知客户端握手结束。
  10. 同7步,SSL 握手结束。

抓包查看SSL握手流程

通过抓包,可以看来客户端与服务端进行建议SSL连接的整过过程。


如何开通RDS MySQL SSL功能

开启SSL加密

RDS MySQL是支持SSL功能,但需要在控制台开启,具体如何操作需要参考设置SSL加密文档。

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 在左侧导航栏单击数据安全性
  3. 单击未开通前面的滑块开关。
  4. 在弹出的对话框中选择要开通SSL加密的地址,单击确定,开通SSL加密。

如截图:

如何在JAVA程序中配置SSL

使用MySQL SSL连接数据库测试样例:

importjava.sql.*;
importjava.util.Properties;
publicclassMySQLSSL {
publicstaticvoidmain(String[] args) {
StringconnectionUrl="jdbc:mysql://******.mysql.rds.aliyuncs.com:3306/db01";
Propertiesproperties=newProperties();
properties.setProperty("user","****");
properties.setProperty("password","*****");
properties.setProperty("useSSL","true");
properties.setProperty("trustCertificateKeyStoreUrl","file:/Users/*****/Downloads/ApsaraDB-CA-Chain/ApsaraDB-CA-Chain.jks");
properties.setProperty("trustCertificateKeyStorePassword","apsaradb");
ResultSetresultSet;
try (Connectionconnection=DriverManager.getConnection(connectionUrl,properties);
Statementstatement=connection.createStatement()) {
StringselectSql="SELECT * FROM t1 limit 1";            //输入希望执行的SQL。resultSet=statement.executeQuery(selectSql);
while (resultSet.next()) {
System.out.println(resultSet.getString("id"));
                }
            }
catch (SQLExceptione) {
e.printStackTrace();
            }
        }
}


说明:

  • trustCertificateKeyStoreUrl:指定Server端 CA证书的路径
  • trustCertificateKeyStorePassword:指定Server端CA证书的密码
  • 阿里云RDS MySQL CA证书都是一样的,所以不同的实例基本上都是使用相同的CA证书


常见问题

  1. 为什么出现报错信息:WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

解答:

  • 不建议没有使用server ca 证书进行验证就使用SSL连接。
  • 在适当的版本,服务端开启SSL,客户端默认就是通过SSL连接的。
  • 若不使用SSL连接,将verifyServerCertificate属性设置为false。
  • 可以通过设置useSSL=false显式禁用SSL,或者设置useSSL=true并且要提供服务器证书验证。

解决方案:

  • 连接字符串,添加useSSL=false选项,禁用SSL,就不会出现警告。
  1. java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors

解决方案:

  • 这个报错,是指定了useSSL=true ,但是没有指定服务器证书路径。
  • 需要添加trustCertificateKeyStoreUrl和trustCertificateKeyStorePassword选项


相关文档




相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
4月前
|
存储 SQL 关系型数据库
RDS DuckDB技术解析一:当 MySQL遇见列式存储引擎
RDS MySQL DuckDB分析实例以​列式存储与向量化计算​为核心,实现​复杂分析查询性能百倍跃升​,为企业在海量数据规模场景下提供​实时分析能力​,加速企业数据驱动型决策效能。​​
|
7月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
3月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
3月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
3月前
|
关系型数据库 MySQL 数据库
云时代MySQL:RDS与自建数据库的抉择
在云计算时代,选择合适的数据库部署方案至关重要。本文深入对比了AWS RDS与自建MySQL的优劣,帮助您在控制权、运维成本和业务敏捷性之间找到最佳平衡点。内容涵盖核心概念、功能特性、成本模型、安全性、性能优化、高可用方案及迁移策略,为您提供全面的决策参考。
|
4月前
|
关系型数据库 MySQL 程序员
从自建MySQL到阿里云RDS:程序员的数据库减负革命
如果你正在为自建MySQL数据库的高成本运维发愁,为凌晨三点的主从同步故障告警而崩溃,为开发团队频繁索要新测试库的要求感到窒息——是时候开启一场数据库的自我救赎了。 程序员更需构建"技术敏锐度+工程落地能力+跨域协作"的三维竞争力,通过创建技术组合形成差异化优势。企业应建立持续学习机制,提供AI沙盒环境促进技术转化。
|
7月前
|
存储 关系型数据库 MySQL
【免费动手教程上线】阿里云RDS MySQL推出大容量高性能存储:高性能本地盘(最高16TB存储空间)、高性能云盘(最高64TB存储空间)
阿里云RDS MySQL提供高性能本地盘与高性能云盘等存储方案,满足用户大容量、低延迟需求。高性能本地盘单盘最大16TB,IO延时微秒级;高性能云盘兼容ESSD特性,支持IO性能突发、BPE及16K原子写等能力。此外,阿里云还提供免费动手体验教程,帮助用户直观感受云数据库 RDS 存储性能表现。
|
8月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。

推荐镜像

更多