C'è un modo per utilizzare WCF SSL con NetTcpBinding che non richiede l'installazione di un certificato client sul computer client? (SSL V2 se non mi sbaglio).Utilizzo del certificato Wcf SSL su Tcp senza certificato client (solo lato server)
Vogliamo che il certificato del server sia nell'archivio attendibile del client per l'autenticazione e che crittografa il suo messaggio con la chiave pubblica del server, il che significa che solo la macchina server avrà un certificato di chiave privata.
stiamo utilizzando NetTcpBinding e non CustomBinding su entrambi i lati. Se è possibile farlo, qual è la configurazione corretta per questo? (sulle configurazioni del server &)
Grazie in anticipo.
qui ci sono i miei wcf Configs.
SERVER CONFIG:
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="TcpSecureBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</netTcpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceCredentialsBehavior">
<serviceDebug includeExceptionDetailInFaults="True" />
<serviceMetadata httpGetEnabled="true" />
<serviceAuthorization
principalPermissionMode="UseWindowsGroups">
</serviceAuthorization>
<serviceCredentials>
<windowsAuthentication includeWindowsGruops="true"
allowAnonymousLogons="false"/>
<clientCertificate>
<authentication certificateValidationMode="none"/>
</clientCertificate>
<serverCertificate
findValue="thumbprint"
storelocation="LocalMachine"
x509FindType="FindMyThumbprint"
storeName="My"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="ServiceCredentialsBehavior"
name="ServiceModel.Calculator">
<endpoint address="net.tcp://localhost:8040/Calculator"
binding="netTcpBinding"
bindingConfiguration="TcpSecureBinding"
contract="ServiceModel.ICalculator" >
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</service>
</services>
</system.serviceModel>
</configuration>
configurazione client:
<configuration>
<system.serviceModel>
<client>
<endpoint address="net.tcp://localhost:8040/Calculator"
behaviorConfiguration="endpointCredentialBehavior"
binding="netTcpBinding"
bindingConfiguration="Binding1"
contract="ServiceModel.ICalculator">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</client>
<behaviors>
<endpointBehaviors>
<behavior name="endpointCredentialBehavior">
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<netTcpBinding>
<binding name="Binding1">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
</configuration>
im aggiungendo il mio attuale server di & configurazioni client. altre domande:
a livello di autenticazione si desidera che il client di autenticare cert del server ther (credo la chiave pubblica del server dovrebbe essere in magazzino trustedPeople), è possibile?
ci consigliate di utilizzare la sicurezza o il messaggio di trasporto?
se vogliamo per l'autenticazione client & server NTLM (clientCredentialType = Windows) è che può essere fatto in aggiunta all'autenticazione cert del server o semplicemente può essere applicato uno di loro? fino ad ora, abbiamo utilizzato l'autenticazione NTLM.
momento Im ottenendo un'eccezione: "L'aggiornamento richiesto non è supportato da 'net.tcp: // nomeserver: 8040/**'. Questo potrebbe essere dovuto ad attacchi non corrispondenti (ad esempio la sicurezza abilitata su il client e non sul server). " ho capito che si è verificato questo errore perché il client sta utilizzando Windows Security e il server in om Certificate, ma quando si modifica anche la sicurezza del client in Certificate, sto ottenendo un errore: "Il certificato client non è fornito". ma non voglio impostare il certificato del cliente e questo è parte del mio problema principale.
leggiamo che possiamo utilizzare per l'autenticazione cert del server questo tag:
<identity> <certificate encodedValue="encoded certificate"/> </identity>
ma, penso che questa autenticazione per identità è fatta da un certificato codificato quando abbiamo preffer che l'identificazione del CERT essere eseguita cercando la chiave pubblica del server nello store del client (trustedPeople). questa informazione è vera? che questo tag di identità sono alternativi alla ricerca della chiave pubblica nel cliente "s store supporta?
Spero che sarete in grado di aiutare in questo modo, grazie ancora.
È possibile. Cosa hai provato fino ad ora? – Bernard
Non dovresti avere bisogno di un certificato client a meno che non ne chiedi espressamente uno; come si presenta la tua configurazione di binding? –
Qualcuno può aiutarmi con il nostro problema, per favore ?? – AmirT