我正在使用c#-4.0开发一个应用程序,Entirex Broker 9.5.1我正在尝试转换为TPCIP连接以使用SSL。由于java/software ags使用java处理ssl/ceritificate验证,我成功地将jsse代码升级为执行相同的操作。但是,当连接到.net下的同一服务器/端口时,出现以下错误:
02150403: Certificate expired or invalid
错误消息听起来像是在通信。那么,如何让.NET成功验证证书?
PS:证书由VeriSign签署。
更新:
IE和Firefox都成功地连接到https://server.domain:port而没有抛出证书错误。我的应用程序实际上正在连接到ssl://server:port?verify_server=y
verify_server=n引发相同的证书错误。
证书未过期。异常的堆栈跟踪在Broker.Logon();处停止。
在softwareag.entirex.netwrapper.runtime.broker.logon(字符串密码)
位于c:\用户\tfburton\documents\visual studio 2010\projects\new fadcom\faserver\entirexdotnetclasses\entirexwrapper.cs中的faserver.entirexdotnetclasses.entirexwrapper.createbroker():第1302行
更新:
下面是我创建broker对象的方法。

try
{
  Broker mybroker;
  try { mybroker = new Broker(BrokerName, BrokerUser); }
  catch (Exception e)
  {
     Utilities.LogEntry("Error Creating broker instance -- BEFORE LOGON. ", e, true);

     throw new WrapperException("Error Creating broker instance -- BEFORE LOGON. "
                               + Environment.NewLine + e.Message);
  }
  try //{ mybroker.Logon(BrokerPass); }
  {
     mybroker.Password = BrokerPass;
     mybroker.Logon();  //<-- stracktrace points here
  }
  catch (AccessViolationException ave)
  {
     Utilities.LogEntry("Error During Broker Logon.", ave,
                        EventLogEntryType.Error);

     throw new WrapperException(ave); //wrap and duck
  }
}
catch ( Exception e )
{
   Utilities.LogEntry("Error Creating broker instance. ", e, true);

   XException be = e as XException;
   if ( null != be  ) //<-- resolves to true
   {
      String msg = "Certificate error connecting to: " + BrokerName;

      throw new WrapperException(msg, e);
   }
   throw new WrapperException( "Error Creating broker instance. "
                             + Environment.NewLine + e.Message);  //<-- error caught and re-thrown here

}

最佳答案

结果我找错树了。
我不确定.net是否有与jsse相同的版本。
我的解决方案简单得多,在文本文件中包含根证书并添加

trust_store=path\to\file\myrrootcerts.pem

作为url aka的参数
BROKER-ID

10-08 11:06