【问题标题】:ASP .NET MVC project hosted on Azure to connect to clearDB mySQL using SSL authentication托管在 Azure 上的 ASP .NET MVC 项目使用 SSL 身份验证连接到 clearDB mySQL
【发布时间】:2015-11-19 14:08:24
【问题描述】:

我在 Azure 上有一个免费订阅,它附带一个 web 应用程序和一个来自 cleardb.com (Dreamspark) 的小型 mySQL 数据库。 ClearDB 为数据库的 SSL 身份验证提供证书下载,当我尝试使用 MySQL Workbench 或 VisualStudio 直接连接到它时效果很好。

将证书文件复制到 Azure 后,如何在 VisualStudio 中设置连接字符串以指定证书文件的远程路径?

换句话说,我如何指定 Azure 上 ssl 认证文件的路径,以及在哪里使用 SSL 连接到 cleardb?我在“C:\”驱动器上的本地路径显然不起作用。

Web.config 中的 connectionString 应如下所示:

<add name="mySQLExample"
     connectionString="server=azure-example.cloudapp.net;
     user id=example-user;
     password=password;
     persistsecurityinfo=True;
     connectiontimeout=5;
     database=mySQL_db_example;
     sslmode=Required;
     certificatefile=C:\path\to\cert\file\randomchars-cert.pfx"
  providerName="MySql.Data.MySqlClient" />

我猜它是一个 Windows Server,所以我需要一个类似的路径,对吧?或者它是否适用于 UNIX/internet 样式路径,该路径仅使用 ~/randomchars-cert.pfx 指定我在 Azure 上的主目录(这不是很好)吗?

【问题讨论】:

  • 服务器日志引用了一个“D:”驱动器,所以看起来免费的 Dreamspark“web 应用程序”站点实际上使用的是 Windows 服务器,并且可能是 ClearDB SSL 密钥的合适路径在 Web.config 中构建。 Azure 门户也有一个 ConnectionString 设置,但我猜这是某种覆盖。

标签: c# mysql asp.net azure ssl


【解决方案1】:

以下指南可帮助您使用 SSL 安全性连接到 ClearDB,从而确保您的数据库拥有 100% SSL Everywhere 环境。

准备 SSL 连接

ClearDB 让我们的用户能够使用证书和密钥通过 SSL 进行连接。

注意:不要与您不想访问您的数据库的任何人共享这些证书。每个证书仅对您的帐户可用和可见。

下载正确的证书以在您的应用程序中使用。

使用 PHP 通过 SSL 连接到 ClearDB

要使用 PHP 通过 SSL 进行连接,您需要使用“MySQLi”扩展,如下所示:

$db = mysqli_init(); $db->ssl_set(PATH_TO_SSL_CLIENT_KEY_FILE, PATH_TO_SSL_CLIENT_CERT_FILE, PATH_TO_CA_CERT_FILE, null, null); $db->real_connect(HOSTNAME, USERNAME, PASSWORD, DATABASE_NAME);

有关使用 PHP 的 MySQLi 扩展创建与 MySQL 的 SSL 加密连接的更多信息,请参阅 PHP 官方文档。 http://www.php.net/manual/en/mysqli.ssl-set.php

使用 Python/Django 通过 SSL 连接到 ClearDB

通过 Python/Django 连接应该很容易通过简单地传递 SSL 信息来执行,如下所示:

数据库['默认'] = { '引擎': 'django.db.backends.mysql', '主机':'我的主机去这里', 'USER': '我的用户去这里', 'NAME': 'my-db-name-goes-here', '密码':'my-db-pass-goes-here', 'OPTIONS': {'ssl': {'ca':'/path/to/cert.pem', 'cert':'/path/to/cert.pem', 'key':'/path/to/ key.pem'},}, }

您还可以通过查看http://mysql-python.sourceforge.net/MySQLdb.html的 MySQLdb 驱动程序文档了解如何通过 SSL 连接到 ClearDB

对于 .NET MySQL 连接,请参阅

MySQL 连接器/网络

MySQL 连接器/网络手册现在以独立形式发布,而不是作为 MySQL 参考手册的一部分。

您可以使用 MySQL Connector/Net 连接到配置为使用 SSL 的 MySQL 服务器。 MySQL Connector/Net 6.2 添加了对 SSL 客户端证书的支持。见http://dev.mysql.com/doc/connector-net/en/connector-net-tutorials-ssl.html

• 发行说明:MySQL 连接器/网络发行说明http://dev.mysql.com/doc/relnotes/connector-net/en/

使用基于存储的证书连接到服务器

  1. 第一步是将 PFX 文件 client.pfx 导入 Personal Store。在 Windows 资源管理器中双击该文件。这将启动证书导入向导。

  2. 按照向导指示的步骤,当提示输入 PFX 文件的密码时,输入“pass”。

  3. 单击“完成”关闭向导并将证书导入个人存储区。

检查个人商店中的证书

  1. 通过在命令提示符下输入 mmc.exe 来启动 Microsoft 管理控制台。

  2. 选择文件,添加/删除管理单元。单击添加。从对话框的可用管理单元列表中选择证书。

  3. 单击对话框中的添加按钮,然后选择我的用户帐户单选按钮。这用于个人证书。

  4. 单击“完成”按钮。

  5. 单击“确定”关闭“添加/删除管理单元”对话框。

  6. 您现在将在 Microsoft 管理控制台的左侧面板中显示证书 - 当前用户。展开证书 - 当前用户树项目并选择个人、证书。右侧面板将显示颁发给 MySQL 的证书。这是之前导入的证书。双击证书以显示其详细信息。

  7. 将证书导入个人存储后,可以使用更简洁的连接字符串连接数据库,如下代码所示:

    使用 (MySqlConnection 连接 = new MySqlConnection( “数据库=测试;用户=SSL客户端;” +
    “证书存储位置=当前用户;” +
    "SSL 模式 = 必需")) { 连接.打开(); }

    使用 (MySqlConnection 连接 = new MySqlConnection( “数据库=测试;用户=SSL客户端;” + “证书存储位置=当前用户;” + "证书指纹=479436009a40f3017a145cf8479e7694d7aadef0;"+ "SSL 模式 = 必需")) { 连接.打开(); }

【讨论】:

猜你喜欢
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
相关资源
最近更新 更多