3

https で保護する必要がある WCF サービスがあります。WCF サービス サーバー サイトと WCF サービスを使用するクライアントは、どちらも自社開発です。

自己署名証明書を生成し、ハウツー記事http://msdn.microsoft.com/en-us/library/ff647171.aspxの助けを借りてサービスで使用しました。

私のサービスのバインディングと動作の構成は次のとおりです。

<behaviors>
  <serviceBehaviors>
    <behavior name="SecureServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
      <serviceCredentials>
        <serviceCertificate findValue="CN={my server's ip address}" />
        <userNameAuthentication userNamePasswordValidationMode="MembershipProvider"
          membershipProviderName="SqlMembershipProvider" />
      </serviceCredentials>
      <serviceAuthorization principalPermissionMode="UseAspNetRoles"
        roleProviderName="SqlRoleProvider" />
        <serviceThrottling maxConcurrentCalls="128"
                           maxConcurrentSessions="128"
                           maxConcurrentInstances="128" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<bindings>
  <wsHttpBinding>
    <binding name="MyBinding">
       <security mode="TransportWithMessageCredential">
          <message clientCredentialType="UserName"/>
       </security>
    </binding>
  </wsHttpBinding>
</bindings>

すべての WCF クライアントは、IP アドレスを使用してインターネット経由でシステムにアクセスする当社の従業員です。サーバーの証明書を、各クライアント コンピューターの信頼できる証明機関に追加します。

そのような構成は十分に安全ですか?

4

3 に答える 3

7

証明書が安全であることの意味を理解しているかどうかはわかりません。つまり、最新の証明書はすべて同じように作成されていると言えます。最新のハッシュおよび暗号化アルゴリズムは無料で利用でき、それらはすべて事実上破ることができません。安全な証明書と安全でない証明書を区別するのは、信頼の問題です。

証明書は、潜在的に敵対的なネットワーク内の信頼できるサーバーを識別するために作成されます。警察のバッジやIDと比較することもできますが、それよりも少し多いと思います。そのため、証明書の有効性に関する主な質問は次のとおりです。

  • 証明書を認識できますか?(IDの種類を認識できますか?
  • 証明書はそれを使用しているサーバーと一致していますか?(写真は持ち主に似ていますか?
  • 証明書が侵害された可能性がありますか?(IDが盗まれた可能性はありますか?
  • ルートCAが侵害された可能性がありますか?(誰かが偽造されたIDを作成できますか?

安全な証明書を作成する際の問題は、その有効性に関する質問に類似しています。

  • サーバーを認識することを目的としたすべてのクライアントに証明書をインストールします。
  • サーバーが証明書と一致することを確認する
  • 証明書とルートCAを保護します。

すべてのクライアントとサーバーが相互に密接に認識している場合(同じ会社にいる場合など)、自己署名証明書を使用して、すべてのクライアントに手動でインストールし、認識できるようにすることができます。サーバーは(からの)外部要求に対しても開かれていないため、セキュリティも問題にはなりません。つまり、標準のセキュリティガイドラインを順守している限り、自己署名証明書で問題ありません。

この問題は、外部の訪問者に対してサーバーを識別する必要がある場合に発生します。たとえば、Webサービスを利用したい場合、使用している証明書の概念はコンピューターにありません(自己署名証明書は、それを認識する必要のある各コンピューターに明示的にインストールする必要があるため)。したがって、https機能は役に立たないでしょう。この場合、広く認識されているCAから証明書を取得する必要があります(おそらくお金がかかります)。これは、自己署名証明書よりも本質的に安全ではありませんが、はるかに信頼できます。

于 2012-07-01T09:53:31.353 に答える
1

「何のために十分に安全ですか?」私が尋ねる質問です。自己署名証明書が行っているのは、通信の送信者がその証明書を持っているという認証レベルを提供することだけです。

署名が正しい署名であると信頼できる場合は、十分に安全です。あなたとあなたのサブスクライバーが、あなたになりすましている誰かではなく、あなたと通信していることを確認したい場合は、CA 署名付き証明書を取得する必要があります。

于 2012-07-01T09:39:41.087 に答える
0

同じレベルのセキュリティを備えていますが、主な違いは信頼です。あなたの状況では、安い証明書を購入します。

于 2012-07-01T09:42:46.840 に答える