1

認証なしでnetTcpBindingにトランスポートセキュリティを使用することは本当に不可能ですか? 私は本当に自分のサービスに証明書を使用したくありません。以下でサービスの構成を使用しましたが、サービスホストを開始すると、以下で説明するアプリケーションエラーが発生します(証明書を求めて、についても言及しませんでした)アプリ内のどこでも証明書)。ただし、サービス資格情報をビヘイビアーに配置した後、サービスが実行を開始します。誰かがこれの原因を教えてもらえますか?

エラー : 「サービス証明書が提供されていません。ServiceCredentials でサービス証明書を指定してください。」

 <service name="ConsoleApplication1.WCFService1" behaviorConfiguration="" >
                <endpoint address="net.tcp://localhost:853/WCFService1" binding="netTcpBinding"
                    bindingConfiguration="SecurityCheckBinding"  name="TCPEndpoint" contract="ConsoleApplication1.IService1" />

                <host>
                    <baseAddresses>
                        <add baseAddress="net.tcp://localhost:853/WCFService1" />

                    </baseAddresses>
                </host>

            </service>



<bindings>
        <netTcpBinding>
          <binding name="SecurityCheckBinding">
            <security mode="Transport">
              <transport clientCredentialType="None"  ></transport>
            </security>
          </binding>
        </netTcpBinding>
      </bindings>

このシナリオでは、上記のエラーが発生していましたが、信頼できる証明書の params を指定したところ、実行が開始されました。

  <behaviors>
    <serviceBehaviors>
      <behavior name="MyServiceBehaviour">
        <serviceCredentials>
          <serviceCertificate findValue="MyTestCA" x509FindType="FindByIssuerName" storeLocation="LocalMachine" storeName="My" />
        </serviceCredentials>

      </behavior>
    </serviceBehaviors>
  </behaviors>
4

1 に答える 1

1

トランスポート セキュリティを備えた NetTpcBinding を選択したため、チャネルをトランスポート レベルで保護する必要があると述べました。この目的のために、Windows SSPI メカニズムを使用するか、暗号化に使用される証明書を生成する必要があります。最初のオプションは、Windows 資格情報を使用して、暗号化を SSPI ライブラリによって内部的に処理することを前提としています。

<transport clientCredentialType="Windows"></transport>

この場合、プロセスは透過的になりますが、クライアントが他のドメインにある場合は、追加のクロスドメイン信頼設定を適用する必要があります。別のオプションは、証明書をインストールすることです。これは非常に簡単で、internat に多くの例があります。

<transport clientCredentialType="Certificate"></transport>

証明書は自動署名される (サーバー自体で生成される) ため、費用はかかりません。サーバー上でのみ必要です。クライアントは何もインストールする必要はありません。

None クレデンシャルを指定した場合でも、暗号化用の証明書を提供する必要があります。

<transport clientCredentialType="None"></transport>

また、セキュリティを使用しないというオプションがまだあります。その場合、メッセージはプレーン テキストになります。セキュリティをオフにするには、次のように設定してトランスポート セキュリティを変更します。

<security mode="None">
于 2013-02-20T13:27:18.910 に答える