c# - Azure上托管的ASP .NET MVC项目可使用SSL身份验证连接到clearDB mySQL

标签 c# mysql asp.net azure ssl

我在Azure上有一个免费订阅,它带有一个Web应用程序和一个来自cleardb.com(Dreamspark)的小型mySQL数据库。 ClearDB提供了用于SSL身份验证的证书下载到数据库,当我尝试使用MySQL Workbench或从VisualStudio直接连接到数据库时,它可以正常工作。

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

换句话说,如何在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上指定我的主目录(这不好)?

最佳答案

以下指南可帮助您使用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(主机名,用户名,密码,数据库名);

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

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

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

DATABASES ['default'] = {
    'ENGINE':'django.db.backends.mysql',
    'HOST':'my-host-goes-here',
    'USER':'my-user-goes-here',
    'NAME':'my-db-name-goes-here',
    'PASSWORD':'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 Connector / Net手册以独立形式发布,而不是《 MySQL参考手册》的一部分。

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

•发行说明:MySQL Connector / Net发行说明http://dev.mysql.com/doc/relnotes/connector-net/en/

使用基于商店的证书连接到服务器


第一步是将PFX文件client.pfx导入到个人存储中。在Windows资源管理器中双击该文件。这将启动证书导入向导。
遵循向导指示的步骤,并在提示您输入PFX文件的密码时,输入“ pass”。
单击“完成”关闭向导,然后将证书导入到个人存储中。


检查个人商店中的证书


通过在命令提示符下输入mmc.exe来启动Microsoft管理控制台。
选择“文件”,“添加/删除”管理单元。单击添加。从对话框中的可用管理单元列表中选择“证书”。
单击对话框中的添加按钮,然后选择我的用户帐户单选按钮。这用于个人证书。
单击完成按钮。
单击“确定”关闭“添加/删除管理单元”对话框。
现在,您将在Microsoft管理控制台的左侧面板中显示“证书–当前用户”。展开“证书-当前用户”树项,然后选择“个人”,“证书”。右侧面板将显示颁发给MySQL的证书。这是先前导入的证书。双击证书以显示其详细信息。
将证书导入到个人存储中之后,可以使用更简洁的连接字符串连接到数据库,如以下代码所示:

使用(MySqlConnection connection = new MySqlConnection(
   “数据库=测试;用户= sslclient;” +
   “证书存储位置= CurrentUser;” +
   “ SSL模式=必需”))
{
   connection.Open();
}

使用(MySqlConnection connection = new MySqlConnection(
      “数据库=测试;用户= sslclient;” +
      “证书存储位置= CurrentUser;” +
      “证书指纹= 479436009a40f3017a145cf8479e7694d7aadef0;” +
      “ SSL模式=必需”))
{
    connection.Open();
}

关于c# - Azure上托管的ASP .NET MVC项目可使用SSL身份验证连接到clearDB mySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32211313/

相关文章:

c# - 如何在 asp.net 网站中允许撇号

c# - 将 C# DynamicObject 转换为任意类型

php - 如何通过多重选择从动态生成的行中插入MySQL数据?

php - 我需要显示位于另一台服务器上的另一个数据库的值

c# - HtmlControl 更改类

asp.net - 在 asp .net MVC 中查看数据 - 未设置对象引用

jquery - 如何在 asp.net 转发器中选择一个 div

c# - 每个 HttpContext 实例一个对象

c# - 用作异步任务时出现后台服务错误

mysql - 如何使用mysql获取以星期五为开始日期的一年中的一周