背景情報:
特定のポートの内部サーバーでホストされているいくつかの WCF サービスがあります。DMZ からこのポートのサービスにアクセスできるようにするために、ファイアウォールに穴が「開けられました」。消費する Web アプリは DMZ でホストされます。
内部サーバーには SSL 証明書がありません。
DMZ サーバーには SSL 証明書があります。
問題:
WCF について読んだすべてのことから、WCF サービスをホストするサーバーには SSL 証明書が必要であると理解しています。これは正しいです?
現時点では、いつ内部サーバーに SSL 証明書がインストールされるかわからないため、プラン B を考え出す必要があると言われました。
ASMX/WSE に戻すことを検討し始めましたが、WSE はサポートされなくなり、VS2008 と統合されず、x64 マシンと互換性がないため、これが問題になるようです。
[ロック]私[ハードプレイス]
データには PII が含まれるため、私はセキュリティについてかなり考慮しています...他の人はあまり気にしていませんが.
私が見落としたオプションはありますか?WCF のセキュリティを誤解していませんか? アドバイス?
この投稿はやや似ているようです。
アップデート
mikey の回答とコメントのおかげで、構成にいくつかの変更を加えました。試行錯誤と追加のグーグルが必要でした...しかし、現在は機能しているようです(まだ大規模なテストは行っていません)。ただし、これが十分に安全かどうかはわかりません...元の投稿にソリューションを追加して、マイキーの回答を回答としてマークできるようにします。
私の変更点
サービス:
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<dataContractSerializer maxItemsInObjectGraph="6553600" />
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpsGetEnabled="false" />
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="customBinding">
<reliableSession enabled="true" />
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="serviceBehavior" name="MyApp.WcfServices.MyService">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="customBinding" contract="MyApp.WcfServices.IMyService">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
ウェブアプリ:
<bindings>
<wsHttpBinding>
<binding name="customBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="1048576" maxReceivedMessageSize="1048576"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="true" />
<security mode="None">
<transport clientCredentialType="None" />
<message clientCredentialType="None" negotiateServiceCredential="false" establishSecurityContext="false" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://[Ip Address]:8943/MyAppWcfServices/Hosts/MyService.svc"
binding="wsHttpBinding" bindingConfiguration="customBinding"
contract="MyService.IMyService" name="customBinding" behaviorConfiguration="clientBehavior">
</endpoint>
</client>