Ich habe meine benutzerdefinierte Zertifizierungsstelle (CA) mit openssl erstellt. Dann habe ich ein Zertifikat erstellt, das das vorherige und die Anfrage von IIS verwendet. So, jetzt habe ich eine Kette von Zertifikaten. Dann habe ich den zweiten an meinen WCF-Service gebunden und alles ist in Ordnung. Dann habe ich auf dem Client mein CA-Zertifikat in der vertrauenswürdigen Stammzertifizierungsstelle installiert, damit es mein benutzerdefiniertes Zertifikat erkennen kann. Mein WCF-Dienst wird derzeit auf einer einfachen http-Verbindung ausgeführt. Server-Seite:WCF-Dienst und benutzerdefinierte CA
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="SyncWcfServices.MainServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="ExtendedMaxSize" maxReceivedMessageSize="2147483647">
<security mode="None">
<transport clientCredentialType="None"></transport>
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="SyncWcfServices.MainService" behaviorConfiguration="SyncWcfServices.MainServiceBehavior">
<endpoint address="/syncService.svc" binding="wsHttpBinding" bindingConfiguration="ExtendedMaxSize" contract="SyncWcfServices.IMainService"></endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
Client-Seite:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IMainService" maxReceivedMessageSize="2147483647" sendTimeout="00:10:00">
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost/SyncService/SyncService.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMainService"
contract="SyncServiceReference.IMainService" name="WSHttpBinding_IMainService" />
</client>
</system.serviceModel>
Also, ich brauche diese Einstellungen zu ändern SSL-Verbindung zu unterstützen. Ich habe viel Post gelesen, wie man es tut, aber dort, immer benutzend 2-way Zertifikationüberprüfung, dass mittlerer Server Clientzertifikat überprüfen muss und Client Serverzertifikat überprüfen muss. Aber ich möchte nur Client überprüfen Serverzertifikat mit CA, die ich installiert habe. Und der Server überprüft die normalen Anmeldeinformationen (Benutzername, Passwort) wie zuvor. Ich denke, dass ich den Sicherheitsmodus zu Transport auf beiden Seiten ändern muss und mex Endpunkt zu mexHttpsBinding, aber was soll ich als nächstes tun? Bitte helfen Sie es zu lösen. Danke euch allen!