我正在测试Synapse,并想知道如何建立安全连接。我注意到它支持SSL,但我不确定它是否适合我的需求。我没有来自CA的证书。我只想加密服务器程序和客户端程序之间的所有数据。当然,我可以在发送数据之前自己加密数据。但如果SSL可以加密数据,也许我可以直接使用它。据我所知,SSL用于“加密”和“认证”。我需要的只是“加密”。在Synapse中是否可能实现?
更新:
感谢daemon_x和Synapse的作者Lukas Gebauer的帮助,我想我终于成功了。以下是我所做的:
服务器端:
1)在您的单元中使用ssl_openssl,并将'libeay32.dll'和'ssleay32.dll'放在exe文件的同一目录中
2)在接受连接后,为新创建的套接字添加以下代码行。
如果没有出现错误,连接现在是安全的。但是当您运行代码时,如Synapse文档中所述,您可能会注意到SSLAcceptConnection需要一些时间才能返回。因此,如果您想加快速度,最好提前创建证书文件和私钥文件。并在SSLAcceptConnection之前添加以下代码。
如果您没有证书和私钥,请参考ssl_openssl中的"CreateSelfSignedCert"来获取自签名证书和私钥。例如,您可以通过WriteStrToStream将FCertificate和FPrivatekey保存到文件中以便后续使用。
更新:
感谢daemon_x和Synapse的作者Lukas Gebauer的帮助,我想我终于成功了。以下是我所做的:
服务器端:
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';
如果您没有证书和私钥,请参考ssl_openssl中的"CreateSelfSignedCert"来获取自签名证书和私钥。例如,您可以通过WriteStrToStream将FCertificate和FPrivatekey保存到文件中以便后续使用。
SSLAcceptConnection
是用于服务器端使用的。关于证书;当 Synapse 为您创建临时证书时,也有一种方法。原则上,只需使用Connect
建立与主机的连接,指定SSL.Username
、SSL.Password
并调用SSLDoConnect
即可。还要检查您的 SSL 库是否正常工作;如果它没有抛出任何错误,它将无法工作。您可以通过SSL.LibName
进行检查;这应该返回不同于ssl_none
的其他内容。 - user532231