0

我正在使用演示程序中的代码,该程序使用 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?

4

1 回答 1

0

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

SHOW STATUS LIKE 'Ssl_cipher'

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

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

一点也不像 Devart 在securebridge 上的网页让人相信那么简单!

“在表单上放置几个组件并指定服务器地址和用户登录信息以建立安全连接就足够了。”

呃……不完全是!

于 2015-06-02T14:27:49.597 回答