【问题标题】:How can I tell if my connection is using SSL?如何判断我的连接是否使用 SSL?
【发布时间】:2015-06-02 09:25:50
【问题描述】:

我正在使用演示程序中的代码,使用 Devart 的 MyDac 组件,使用 Delphi 2009 来使用 SSL 连接到远程数据库。

我已经制作并验证了证书和密钥,并在 MyDAC 中设置了连接参数以使用它们,例如

MyConnection.protocol := 'mpSSL';
MyConnection.SSLOptions.CACert := 'C:\ca-cert.pem';
MyConnection.SSLOptions.Cert := 'C:\client-cert.pem';
MyConnection.SSLOptions.Key := 'C:\client-key.pem';
MyConnection.SSLOptions.Chipherlist := 'All';

当我告诉 MyConnection 进行连接时(在设置用户名/密码等之后),它会毫无问题地连接到数据库。 但是,作为测试,我故意输入了一个无效的密钥名称 'C:\XXXclient-key.pem,它仍然可以正常连接,所以它可能根本没有使用 SSL。

所以我的问题是:

如何使用 Delphi 检测连接是否真的使用 SSL?

【问题讨论】:

  • 你使用TScSSLClient组件吗?因为那可以通过它的IsSecure 属性告诉你(至少根据描述)。
  • 要通过 SSL 连接到 MySQL 服务器,您应该将 TMyConnection.Options.Protocol 属性设置为 mpSSL。 MyConection.protokol = mpSSL是否等于MyConection.Options.protokol = mpSSL
  • 您可以在连接后使用“status”命令进行验证(注意 SSL “cipher in use is DHE-RSA-AES256-SHA”表示正在使用 SSL)chriscalender.com/tag/client-key-pem
  • TLama - 不,我正在使用 Devart 的演示,它仅使用 TMyConnection、TMySSLIOHandler 和 TScCryptoAPIStorage。 (但演示过于复杂,无法炫耀,并且没有 cmets,因此您看不到什么是必要的,什么不是)。 Val Marrinov - 是的,我试过了。我的问题并不是关于如何使用 SSL 进行连接,而是如何确认我建立的连接是否真的使用 SSL。我可以使用我认为正确的 SSL 参数进行连接,但无法判断它是否真的是 ssl。如何使用“状态”命令?那是 TMyConnection 的方法还是你指的是 SQL?

标签: delphi ssl mydac


【解决方案1】:

我想我会自己结束这个问题,因为它看起来比我想象的要复杂得多,在这个问题有意义之前我需要更多信息。好像是sql语句;

SHOW STATUS LIKE 'Ssl_cipher'

可以提供帮助,因为如果它不使用 ssl,它的值将为空,或者如果它是,它将包含一个值。 问题是我使用的 Mysql 服务器(ISP Nativespace)甚至没有一个名为 Ssl_cipher 的变量名,所以它看起来无论如何都不支持 ssl。使用另一个 ISP 尝试同样的事情,我确实看到了变量名,但它没有任何价值,表明即使我可以做到,也没有使用 ssl。

现在看来,在建立 ssl 连接之前还有很多工作要做。在数据库上创建一个只使用 ssl 的新用户,为他们设置权限,在服务器上运行代码等。

根本不像德瓦特在securebridge 上的网页让人相信那么简单!

"在表单上放置几个组件并指定 服务器地址和用户登录信息建立一个安全的 连接。”

呃……不完全是!

【讨论】:

    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    相关资源
    最近更新 更多