Quali sono i passaggi per configurare SSL in modo che funzioni con WCF in Azure?
Domanda
Pubblica i passaggi che hai eseguito per configurare SSL in modo che funzioni con WCF in Azure.
Il mio certificato valido è stato caricato correttamente ( utilizzando cspack ) e lavorare con cspack ) il resto del sito, ma dopo averlo aggiunto, il mio servizio WCF precedentemente funzionante ha smesso di funzionare. (Tutto ciò che ottengo è un errore 404 di nuovo a Silverlight, il che non è molto utile. In caso di voto a chi si presenta con un migliore logging, potrei fare anch'io per aiutare a diagnosticare il problema!)
Ho provato molte varianti su questa configurazione:
<system.serviceModel>
<!--start added for SSL-->
<bindings>
<basicHttpBinding>
<binding name="SecureBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<!--end added for SSL-->
<behaviors>
<!--start added for SSL-->
<endpointBehaviors>
<behavior name="DisableServiceCertificateValidation">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="None"
revocationMode="NoCheck" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
<!--start added for SSL-->
<serviceBehaviors>
<behavior name="Silverheat.Cloud_WebRole.API.DataServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<!-- certificate checking removed -->
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="Silverheat.Cloud_WebRole.API.DataServiceBehavior"
name="Silverheat.Cloud_WebRole.API.DataService">
<!--<endpoint address="" binding="basicHttpBinding" contract="Silverheat.Cloud_WebRole.API.DataService" />-->
<endpoint bindingConfiguration="SecureBasicHttpBinding"
behaviorConfiguration="DisableServiceCertificateValidation"
address="" binding="basicHttpBinding"
contract="Silverheat.Cloud_WebRole.API.DataService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
Sfortunatamente, il debug di questo e ottenere maggiori informazioni è davvero difficile perché non riesco a passare e debug con qualsiasi configurazione in remoto come userei sul server live perché il tag bindings ha problemi sul debug (ma non in diretta).
Grazie per l'aiuto e l'interesse!
Soluzione
Wow! È vivo! Funziona !!
Non funziona ancora nel debug ( eccezione di sicurezza ), ma vivrò fino alla prossima versione.
Ecco la configurazione che ha funzionato:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="SecureBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="Silverheat.Cloud_WebRole.API.DataServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service behaviorConfiguration="Silverheat.Cloud_WebRole.API.DataServiceBehavior"
name="Silverheat.Cloud_WebRole.API.DataService">
<endpoint bindingConfiguration="SecureBasicHttpBinding"
address="" binding="basicHttpBinding"
contract="Silverheat.Cloud_WebRole.API.DataService" />
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
(Penso che sia stato " mexHttpsBinding " che alla fine ha funzionato, anche se non capisco perfettamente perché abbia bisogno di metadati dopo che è già configurato, tornando ai libri che immagino)
Vorrei ancora sapere come abilitare una sorta di registrazione per WCF, ma cercherò ancora un po 'di più su questo fantastico sito e sono sicuro che troverò una risposta.