我正在测试Synapse并希望知道如何建立安全连接。我注意到它支持SSL,但我不确定它是否适合我的需求。我没有CA的证书。我只想加密我的服务器程序和客户端程序之间的所有数据。当然,我可以在发送之前自己加密数据。但是如果SSL可以加密数据,也许我可以使用它。据我所知,SSL是用于“加密”和“认证”的。我需要的只是“加密”。 Synapse可能吗?如何使用Synapse建立安全连接?
UPDATE:
感谢来自daemon_x和突触,卢卡斯葛鲍尔笔者帮助,我想我终于使它工作。下面是我所做的:
服务器端:
1)采用ssl_openssl在你的单位,并把“的libeay32.dll”和“ssleay32.dll”的exe文件的同一目录
2)接受连接后,为新创建的套接字添加以下代码行。
fclient.SSLAcceptConnection;
客户端:
1)在你的单元使用ssl_openssl并把 '的libeay32.dll' 和 'ssleay32.dll' 的exe文件
2)相同的目录连接到服务器后,添加以下行。
fclient.SSLDoConnect;
如果没有发生错误,连接现在是安全的。但是当你运行你的代码时,如Synapse文档中所述,你可能会注意到SSLAcceptConnection需要一些时间才能返回。所以如果你想加快速度,你最好先创建一个证书文件和私钥文件。而SSLAcceptConnection
fclient.SSL.CertificateFile := 'bs-cert';
fclient.SSL.PrivateKeyFile := 'bs-privatekey';
前添加以下代码如果没有证书和私钥,请参考“CreateSelfSignedCert”在ssl_openssl用于获取自签名的证书和私钥。例如,可以通过WriteStrToStream将FCertificate和FPrivatekey保存到文件中并稍后使用它们。
我感谢您的帮助。我最困惑的是,我不知道如何在没有证书时使用加密通道。在服务器端接受连接后,我尝试调用“SSLAcceptConnection”。并且在连接到服务器之后在客户端调用“SSLDoConnect”。他们“似乎”工作。但我可以在哪里设置密码?我试过“SSL.Password”,但似乎是解密证书。即使密码不同,连接仍然建立。 – trudger 2011-06-14 01:48:04
@trudger您可以创建自签名证书。 – Harriv 2011-06-14 05:35:57
是否有任何组件/代码可以集成到我的程序中以生成证书?我认为用户自己生成证书有点复杂。 – trudger 2011-06-14 06:02:26