即使certstore为空,Mono 2.10.9也成功建立了SSL连接

时间:2016-02-10 16:36:23

标签: wcf ssl mono certificate

由于服务器SSL证书的更改,我试图测试一些客户方案。在SUSE Enterprise 11 SP3上安装运行在Mono 2.10.9上的产品时,我们会将CA证书安装到Trust存储中。我们现在必须更改我们的服务器证书并在测试它们时看到一些奇怪的行为。在安装新的自签名测试CA证书之前,我运行了应用程序以确认不接受证书(不在商店中)。令我惊讶的是,它连接得很好。如果CA证书不在商店中,任何人都可以解释为什么mono不会抛出异常。

为了确定,我删除了计算机和用户证书存储区中的所有证书。我已经使用certmgr查询了证书库并手动浏览了证书库文件夹。我对这个单声道版本的理解是,必须让商店中加载的CA才能正常工作,但是如果没有它,它似乎工作正常。

任何想法,这让我疯狂???

以下是我用来检查证书库和结果的脚本。

stores =(" CA"" Trust"" AddressBook"" My") ums =("用户""机器")

echo Start Read> certificates.txt 对于你在$ {ums [@]} 做     如果[[$ um ="用户" ]];那么m =" &#34 ;;否则m =" -m&#34 ;;科幻     在$ {商店[@]}的商店     做        echo" ============================================= ====" >> certificates.txt       echo $ um $ store>> certificates.txt       certmgr --list -c $ m $ store>> certificates.txt     DONE DONE echo End Read>> certificates.txt

输出:

开始阅读

用户CA. 单声道证书管理器 - 版本2.10.9.0 从商店管理X.509证书和CRL。 版权所有2002,2003 Motus Technologies。版权所有2004-2008 Novell。 BSD许可。

=============================================== ========================================== 用户信任 单声道证书管理器 - 版本2.10.9.0 从商店管理X.509证书和CRL。 版权所有2002,2003 Motus Technologies。版权所有2004-2008 Novell。 BSD许可。

=============================================== ========================================== 用户AddressBook 单声道证书管理器 - 版本2.10.9.0 从商店管理X.509证书和CRL。 版权所有2002,2003 Motus Technologies。版权所有2004-2008 Novell。 BSD许可。

=============================================== ========================================== 用户我的 单声道证书管理器 - 版本2.10.9.0 从商店管理X.509证书和CRL。 版权所有2002,2003 Motus Technologies。版权所有2004-2008 Novell。 BSD许可。

=============================================== ========================================== 机器CA. 单声道证书管理器 - 版本2.10.9.0 从商店管理X.509证书和CRL。 版权所有2002,2003 Motus Technologies。版权所有2004-2008 Novell。 BSD许可。

=============================================== ========================================== 机器信任 单声道证书管理器 - 版本2.10.9.0 从商店管理X.509证书和CRL。 版权所有2002,2003 Motus Technologies。版权所有2004-2008 Novell。 BSD许可。

=============================================== ========================================== 机器地址簿 单声道证书管理器 - 版本2.10.9.0 从商店管理X.509证书和CRL。 版权所有2002,2003 Motus Technologies。版权所有2004-2008 Novell。 BSD许可。

=============================================== ========================================== 机器我的 单声道证书管理器 - 版本2.10.9.0 从商店管理X.509证书和CRL。 版权所有2002,2003 Motus Technologies。版权所有2004-2008 Novell。 BSD许可。

结束阅读

检查证书存储文件夹 suse:〜#ls -R /usr/share/.mono/certs /

/usr/share/.mono/certs/: 地址簿CA My Trust

/usr/share/.mono/certs/AddressBook:

/usr/share/.mono/certs/CA:

/usr/share/.mono/certs/My:

/usr/share/.mono/certs/Trust:

suse:〜#ls -R .config / .mono / certs /

的.config / .mono /证书/: 地址簿CA My Trust

的.config / .mono /证书/地址簿:

的.config / .mono /证书/ CA:

的.config / .mono /证书/我的:

的.config / .mono /证书/信任:

可能应该提到这是一个WCF服务。客户端是使用wsdl& amp; GCMS。我有一个Visual Studio内置的等效服务,使用相同的app.config在Windows上运行,当Windwos Cert商店中没有根CA时,该服务无法正常运行。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="TestServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
            receiveTimeout="00:10:00" sendTimeout="00:02:00" allowCookies="false"
            bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
            maxBufferSize="1048560" maxBufferPoolSize="524288" maxReceivedMessageSize="1048560"
            messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
            useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="Transport">
            <transport clientCredentialType="None" proxyCredentialType="None"  realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="https://my.test.url/app_dev.php/SOAP/v5"
          binding="basicHttpBinding" bindingConfiguration="TestServiceSoap"
          contract="ServiceClient.TestServiceSoap" name="TestServiceSoap" />
    </client>
  </system.serviceModel>
</configuration>

0 个答案:

没有答案