使用TIdTCPServer到AS400

时间:2015-02-13 15:23:54

标签: delphi ssl delphi-xe2 indy

我有一个小小的"测试"程序在Delphi XE2中。我想用它来测试从AS400到IDTCPServer的SSL连接。 然后,As400创建连接服务器绑定到的端口992(SSL Telnet)上的套接字。

我已经使用OpenSSL创建了一个SSL证书 http://blog.didierstevens.com/2008/12/30/howto-make-your-own-cert-with-openssl/ 并成功将其导入AS400。 我可以看到AS400作业连接到AS400上的端口992。 Wireshark表示在运行服务器的PC上分配了端口992;但是当AS400发送SSL_HANDSHAKE时由于没有回复而超时。我已将超时设置为1分钟,但如果我将其设置为无限制,则在20分钟后没有回复。 IDTCPServer使用TiDServerIOHandlerSSLOpenSSL

在尝试从AS400发送消息之前,

过程prc_SetUpSSL被激活

procedure TUDPMainForm.prc_SetupSSL;
var
  CurrDirectory : string;
  RetLength : integer;
begin
  SetLength(CurrDirectory, 255);
  RetLength := GetCurrentDirectory(255, PChar(CurrDirectory));
  SetLength(CurrDirectory, RetLength);

  SSL_Server.Bindings.Add.Port := StrToInt(edt_Port.Text);
  SSL_Handler.SSLOptions.KeyFile := CurrDirectory + '\ia.key';
  SSL_Handler.SSLOptions.CertFile := CurrDirectory + '\ia.crt';
  SSL_Handler.SSLOptions.RootCertFile := CurrDirectory + '\ia.crt';

  SSL_Server.Active := True;
end;

服务器处于活动状态,因为AS400连接到套接字时会触发OnExecute事件。我得到一个"连接的xxx"消息。

procedure TUDPMainForm.SSL_ServerExecute(AContext: TIdContext);
var
  a : array[0..3000] of byte;
  s: string;
begin
    //Receives the message from the client
    AContext.Connection.IOHandler.ReadLn;
    SetString(s, PAnsiChar(@a[0]), Length(a));
    while (StrPos(Pchar(s), Pchar('  ')) <> nil)  do
        s:= StringReplace(s,'  ',' ', [rfReplaceAll]);

    if s <> '' then
        begin
          UDPMemo.Lines.Add('Connected : ' + DateTimeToStr(Now));
          UDPMemo.Lines.Add(s);
        end;

end;

任何有关这方面的帮助都将非常感激我会围成一圈并且不会在哪里。 谢谢, 杰夫考克斯

0 个答案:

没有答案