delphi 如何使用Synapse建立安全连接?

cbwuti44  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(317)

我在测试Synapse,想知道怎么才能建立安全的连接,我注意到它支持SSL,但我不确定它是否适合我的需要,我没有CA的证书,我只是想加密我的服务器程序和客户端程序之间的所有数据,当然,我可以在发送之前自己加密数据,但如果SSL可以加密数据,也许我可以直接使用它,从我所知道的,SSL是用来“加密”和“认证”的,我需要的只是“加密”,用Synapse有可能吗?

更新日期:

感谢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保存到文件中,以便以后使用。

o0lyfsai

o0lyfsai1#

是的,你可以使用Synapse附带的the plugins。正如上面提到的,最好使用ssl_openssl.pas。如果你决定使用这个,除了Sysapse,你还需要OpenSSL library。作者推荐OpenSSL 0.9.7,但正如他在我们的本地论坛上所说,它似乎也适用于OpenSSL 1.0.0d。
请注意,如果您使用的是D2009以上,您将需要一个Unicode支持,这在版本中并不完全支持。请下载latest version
下面的示例代码接收前1024个字节,作为对使用SSL加密的安全网站的HTTP GET方法的响应。我已经将OpenSSL 0.9.8hlatest version of Synapse一起用于它。注意,您需要将OpenSSL包中的libssl32.dlllibeay32.dll放入输出目录中,以使其正常工作。让'我们有一个表单,其中有一个按钮和一个备忘录,我们可以在其中接收结果。

uses blcksock, synautil, synsock, ssl_openssl, ssl_openssl_lib;

procedure TForm1.Button1Click(Sender: TObject);
var Socket: TTCPBlockSocket;

begin
  Socket := TTCPBlockSocket.Create;

  try
    Socket.Connect('www.yousendit.com', '443'); // connect to the host
    Socket.SSLDoConnect; // start SSL connection; only server has a certificate

    if Socket.LastError = 0 then
      begin
        Socket.SendString('GET' + CRLF); // request GET method
        Memo1.Text := Socket.RecvBufferStr(1024, 1000); // receive 1024 bytes
      end;

  finally
    Socket.Free;
  end;
end;

相关问题