我正在使用 c#-4.0 和 EntireX Broker 9.5.1 开发一个应用程序,我试图将tpcip连接转换为使用ssl。 我已成功升级我的 java 代码以执行相同的操作,这要感谢Java / Software AG使用jsse来处理SSL /证书验证。 然而,当在 .net 下连接到同一服务器/端口时,我收到以下错误消息:
02150403:证书过期或无效
错误消息听起来像是在传达信息。那么,我该如何使 .Net 成功验证证书?
PS: 该证书由Verisign签名。
更新:
在https://server.domain:port
下,IE和Firefox都成功连接而没有抛出证书错误。我的应用程序实际上是连接到ssl://server:port?verify_server=y
。
verify_server=n
会抛出相同的证书错误。
证书未过期。异常堆栈跟踪在Broker.Logon();
处停止。
在SoftwareAG.EntireX.NETWrapper.Runtime.Broker.Logon(String password)处:
在C:\ Users \ 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
}