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

| 我正在测试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保存到文件中,以便以后使用。     
已邀请:
        是的;您可以使用Synapse随附的插件之一。正如那里也提到的,最好是使用ssl_openssl.pas。如果您决定遵循此规则,则除了Sysapse之外,还需要OpenSSL库。作者建议使用OpenSSL 0.9.7,但正如他在我们的本地论坛上所说,它似乎也可以与OpenSSL 1.0.0d一起使用。 请注意,如果您使用的是D2009 up,则需要Unicode支持,而该版本在版本中并未完全支持。而是下载最新版本。 以下示例代码接收前1024个字节,作为对使用SSL加密的安全网站的“ 3”方法的响应。我已经使用了最新版本的Synapse的OpenSSL 0.9.8h。注意,您需要将
OpenSSL
包中的
libssl32.dll
libeay32.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;
    

要回复问题请先登录注册