首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Synapse建立安全连接?

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

Stack Overflow用户
提问于 2011-06-13 17:50:38
回答 1查看 7K关注 0票数 9

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

更新:

谢谢daemon_x和“Synapse”的作者Lukas的帮助,我想我终于成功了。以下是我所做的:

服务器端

1)在单元中使用ssl_openssl,并将'libeay32.dll‘和'ssleay32.dll’放在exe文件的同一个目录中。

2)接受连接后,为新创建的套接字添加以下代码行。

代码语言:javascript
运行
复制
fclient.SSLAcceptConnection;

客户端

1)在单元中使用ssl_openssl,并将'libeay32.dll‘和'ssleay32.dll’放在exe文件的同一个目录中。

2)连接到服务器后,添加以下一行。

代码语言:javascript
运行
复制
fclient.SSLDoConnect;

如果没有发生错误,则连接现在是安全的。但是,当您运行代码时(如Synapse文档中所述),您可能会注意到SSLAcceptConnection需要一些时间才能返回。因此,如果您想加快速度,最好先创建一个证书文件和私钥文件。并在SSLAcceptConnection之前添加以下代码

代码语言:javascript
运行
复制
  fclient.SSL.CertificateFile := 'bs-cert';
  fclient.SSL.PrivateKeyFile := 'bs-privatekey';

如果您没有证书和私钥,请参考ssl_openssl中的“ssl_openssl”获取自签名证书和私钥。例如,您可以通过WriteStrToStream将FCertificate和FPrivatekey保存到文件中,并在以后使用它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-13 21:08:27

是的;您可以使用Synapse附带的插件之一。正如这里还提到的,最好的方法是使用openssl.pas。如果您决定遵循这一条,那么除了西索普之外,您还需要使用OpenSSL库。作者推荐了OpenSSL 0.9.7,但正如他在本地论坛上所说的,它似乎也适用于OpenSSL 1.0.0d。

注意,如果您正在使用D2009 up,您将需要一个在版本中不完全支持的Unicode支持。下载最新版本

下面的示例代码接收前1024字节作为对使用SSL加密的安全网站的HTTP GET方法的响应。我用过OpenSSL 0.9.8 h最新版本的Synapse。注意,您需要将来自libssl32.dll包的libeay32.dllOpenSSL包放到输出目录中,以使其正常工作。让我们有一个带有按钮和备忘的表单,在那里我们收到一个结果。

代码语言:javascript
运行
复制
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;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6334141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档