27.7.14 C API 对加密连接的支持

本节介绍 C 应用程序如何使用 C API 功能进行加密连接。默认情况下,如果服务器支持加密连接,则 MySQL 程序会尝试使用加密进行连接;如果无法构建加密连接,则回退到未加密连接(请参见第 6.3.1 节“配置 MySQL 以使用加密连接”)。对于那些需要控制超出默认行为的应用程序的应用程序,如何构建加密连接,C API 提供了以下功能:

C 用于加密连接的 API 选项

mysql_options()提供以下选项来控制对加密连接的使用。有关选项的详细信息,请参见第 27.7.6.50 节“ mysql_options()”

mysql_ssl_set()可用作便利例程,它等效于一组mysql_options()调用,这些调用指定了证书和密钥文件,加密密码等。参见第 27.7.6.73 节“ mysql_ssl_set()”

加强加密连接

mysql_options()信息(例如 SSL 证书和密钥文件)的选项用于构建加密连接(如果可用),但不强制要求对获得的连接进行加密。要要求加密的连接,请使用以下技术:

改善加密连接的安全性

为了获得相对于默认加密所提供的安全性更高的安全性,Client 端可以提供与服务器使用的证书相匹配的 CA 证书,并启用主机名身份验证。通过这种方式,服务器和 Client 端将他们的信任放在相同的 CA 证书中,并且 Client 端验证其连接的主机是否是预期的主机:

Note

使用SSL_MODE_VERIFY_IDENTITY进行的主机名身份验证不适用于服务器自动创建的或使用mysql_ssl_rsa_setup手动创建的自签名证书(请参阅第 6.3.3.1 节“使用 MySQL 创建 SSL 和 RSA 证书和密钥”)。此类自签名证书不包含服务器名称作为“通用名称”值。

主机名身份验证也不适用于使用通配符指定“公用名”的证书,因为该名会与服务器名进行逐字比较。

首页