2011-10-27 14 views
2

私はWCFといくつかのテストをやっているし、我々は現在、(簡易設定)、次のサーバーを設定している上で、サーバ証明書の検証を無効にする方法:WCF net.tcpトランスポートセキュリティ - クライアント

<netTcpBinding> 
    <binding name="netTcp" ... > 
    <security mode="Transport"> 
     <transport clientCredentialType="None"/> 
    </security> 
    </binding> 
</netTcpBinding> 

... 

<serviceBehaviors> 
    <behavior name="defaultServiceBehavior"> 
     <serviceCredentials>    
      <serviceCertificate 
        findValue="OurCert" 
        storeLocation="LocalMachine" 
        storeName="My" 
        x509FindType="FindBySubjectName"/>      
     </serviceCredentials> 
    </behaviour> 
</serviceBehaviors> 

そして次クライアントの設定:

<endpointBehaviors> 
    <behavior name="NoRevNoValid"> 
     <clientCredentials> 
      <serviceCertificate> 
       <authentication certificateValidationMode="None" 
           revocationMode="NoCheck"/> 
      </serviceCertificate> 
     </clientCredentials> 
    </behavior> 
</endpointBehaviors> 

ので、アイデアは、サーバ証明書は、データを暗号化するために使用されていることですが、クライアントが証明書を検証する気にしないこと(クライアントはとにかく証明書のCAを持っていません。 )。

ただし、この構成では、クライアントが証明書の検証を停止することはありません。それでも、信頼の連鎖を歩み、失効リストを探します。

このリンクを発見しましたstating that the certificateValidationMode attribute does NOT apply to net.tcp bindings

私はServicePointManager.ServerCertificateValidationCallbackイベントを処理する見てきましたが、やはり唯一のHTTPベースのバインディングに適用されることが表示されます。

おそらくnet.tcpバインディングを使用すると、トランスポートセキュリティがアプリケーションのスコープ外で処理されるため、これらは両方ともですか?

証明書を検証しないように強制する他の方法はありますか?

答えて

2

多くのテストの結果、certificateValidationMode属性がnet.tcpバインディングに適用されないというリンクが間違っているようです。

このオプションは、net.tcpバインディングにも適用されます。

ただし、net.tcpトランスポートセキュリティに使用される証明書はまだロードされており、CAとCRLは引き続き解決されます。私が使用していた証明書にはCRLとCAの両方のURLが含まれていたため、WCFの設定が証明書が無効かどうかを無視するように指定していたとしても、証明書ストアは毎回これらの問題を解決するようになっていました(URLは利用できませんでした)。

したがって、WCFのconfig certificateValidationMode設定はまだ適用されますが、その証明書が証明書ストアによって引き続き「解決」されるということです。これは大部分の人にとって大きな問題ではないはずですが、接続時に大きなレイテンシの問題を引き起こしているため、証明書が持つURLに関するさらなるテストを行う予定です。 CertificateValidatorを使用して、私の場合は

+0

はあなたが自己署名証明書を使用していますか? – Yuan

+0

実際には、ドメインコントローラの証明機関で作成されたテスト証明書であるため、CRLおよびCAエントリにはそのコントローラを指し示すURLがありましたが、URLは実際にはもう解決しませんでした。 – OffHeGoes

0

= X509CertificateValidator.Noneができます:

非稼働コード:

var handler = new Saml2SecurityTokenHandler(); 
var configuration = new SecurityTokenHandlerConfiguration 
    { 
     RevocationMode = X509RevocationMode.NoCheck, 
     CertificateValidationMode = X509CertificateValidationMode.None 
    }; 
handler.ValidateToken(saml2Token) gives a exception: 

X.509証明書のCN = cn.name.comチェーンの構築に失敗しました。使用された証明書には、検証できない信頼チェーンがあります。証明書を交換するか、certificateValidationModeを変更します。証明書チェーンは処理されましたが、信頼によって信頼されていないルート証明書で終了しました。

作業コード:

var handler = new Saml2SecurityTokenHandler{CertificateValidator = X509CertificateValidator.None}; 
var configuration = new SecurityTokenHandlerConfiguration(); 
関連する問題