我使用一个演示程序的代码,使用Devart的MyDac组件,使用Delphi2009连接到一个使用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:\XXXClientkey.pem,它仍然连接着OK,所以它可能根本没有使用SSL。
所以我的问题是:
如何使用Delphi来检测连接是否真的使用SSL?
发布于 2015-06-02 14:27:49
我想我自己来结束这个问题,因为它看起来比我想象的要复杂得多,在这个问题有意义之前,我需要更多的信息。看来sql语句;
SHOW STATUS LIKE 'Ssl_cipher'可以帮助,因为如果它不使用ssl,它的值将是空的,如果是的话,它将包含一个值。我使用的Mysql服务器()甚至没有一个名为Ssl_cipher的变量名,所以看起来它无论如何都不支持ssl。使用另一个ISP进行相同的尝试,我确实看到了变量名,但是它没有值,这表明即使我可以使用ssl,也没有使用ssl。
现在看来,在建立ssl连接之前,还需要做更多的工作。在数据库上创建一个只使用ssl的新用户,为他们设置权限,在服务器上运行代码等等。
根本不像德瓦特在安全桥上的网页那么简单,让人相信!
“只要在表单上放置几个组件,并指定服务器地址和用户登录信息,就可以建立安全连接。”
呃..。不完全是!
https://stackoverflow.com/questions/30592162
复制相似问题