2

現在、クライアント側のマシンの 1 つで Windows サービスとしてホストされている Wcf サービスがあります。実際、これは通常の http 呼び出しで動作しています。http の代わりに https を使用する必要があるため、app.config を変更しましたが、サービスを開始した後、https url が機能しませんでしnetsh http add urlacl url=https://+:18732/Peripheral/ user=Everyoneた。 .

URl ブラウザーでエラーが発生する •TLS および SSL プロトコルが有効になっていることを確認します。

これは証明書の問題に関連していますか? もしそうなら、どうすればこの問題を解決できますか?

web.config は以下に提供されます:-

<system.serviceModel>
<standardEndpoints />
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
  <bindings>
    <basicHttpBinding>
    <binding name ="soapBinding">
    <security mode="Transport">
    <transport clientCredentialType="None"/>
    </security>
    </binding>
    </basicHttpBinding>
    <webHttpBinding>
 <binding name="Bind1" crossDomainScriptAccessEnabled="true">
<security mode="Transport">
 <transport clientCredentialType="None"/>
</security>
</binding>
</webHttpBinding>  
    </bindings>
    <services>
      <service name="Peripheral.Server.Impl.PeripheralServiceImpl" behaviorConfiguration="SvcBhvr">
<host>
<baseAddresses>
  <add baseAddress="https://localhost:18732/Peripheral/" />
  </baseAddresses>
</host>
<endpoint address="https://localhost:18732/Peripheral/" binding="webHttpBinding" behaviorConfiguration="EndPBhvr" bindingConfiguration="Bind1" 
contract="Peripheral.Server.Contract.IPeripheralService">
 <!--<identity>
    <dns value="localhost" />
  </identity>-->
</endpoint>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="EndPBhvr">
<webHttp /> 
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="SvcBhvr">
<serviceMetadata httpsGetEnabled="true" httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

これを修正する方法と、Windows サービスから https として URL にアクセスできるようにするために必要なことを知っている人はいますか?

4

1 に答える 1

6

OS のバージョンによっては、netsh または HttpConfig ツールを使用して、ssl 証明書を特定のポート番号にバインドする必要がある場合もあります。詳細な手順については、こちらをご覧ください

あなたの場合、次のようになります。

netsh http add sslcert ipport=0.0.0.0:18732 certhash=<certhash> appid={<guid>} clientcertnegotiation=enable

どこ

certhash = 証明書の拇印(X509Certificate2.Thumbprint)

appid = Guid.NewId() だけでもかまいません

于 2013-09-02T20:11:34.157 に答える