클라이언트 컴퓨터에 클라이언트 인증서를 설치하지 않아도되는 NetTcpBinding과 함께 WCF SSL을 사용할 수 있습니까? (내가 잘못하지 않는다면 SSL V2).클라이언트 인증서가없는 Tcp를 통한 Wcf SSl 인증서 사용 (서버 측만 해당)
인증을 위해 서버 인증서가 클라이언트의 신뢰할 수있는 저장소에 있고 서버의 공개 키로 메시지를 암호화하기를 원합니다. 즉, 서버 컴퓨터 만 개인 키 인증서를 보유하게됩니다.
우리는 양쪽에 customBinding이 아닌 NetTcpBinding을 사용하고 있습니다. 해당 작업을 수행 할 수있는 경우 올바른 구성은 무엇입니까? (클라이언트의 경우 & 서버 구성)
미리 감사드립니다.
여기 내 wcf Configs입니다.
서버 설정 :
<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>
클라이언트 CONFIG :
<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>
메신저 내 현재 서버 & 클라이언트 CONFIGS를 추가. 또 다른 질문 :
인증 수준에서 우리는 클라이언트가 이 가능하다 (내가 서버의 공개 키가 trustedPeople 저장소에 있어야한다고 생각합니다) THER 서버의 인증서 인증 싶어?
전송 보안 또는 메시지 사용을 권장합니까? 우리가 NTLM (clientCredentialType = 윈도우)에 의해 클라이언트 & 서버를 인증하려면
는 은이 서버의 인증서 인증을 추가로 수행 할 수 있습니다하거나 둘 중 하나를 적용 할 수있다? 지금까지 NTLM 인증을 사용했습니다.
지금 예외 점점 메신저 : "요청한 업그레이드는 지원하지 않습니다 'net.tcp : //이 서버 이름 : 8040/가 **'.이 때문에 일치하지 않는 바인딩으로 될 수있다 (예를 들어 보안에 사용 가능 클라이언트가 아니라 서버에). " 클라이언트가 om 인증서, 에 Windows 보안 및 서버를 사용하고 있기 때문에이 오류가 발생했음을 이해합니다. 그러나 클라이언트 보안을 인증서로 변경하는 중에도 다음 메시지가 표시됩니다. "클라이언트 인증서가 제공되지 않았습니다." 하지만 나는 클라이언트의 인증서를 설정하고 싶지 않아 내 주요 문제의 일부.
- 우리는 우리가이 태그 서버의 인증서 인증에 사용할 수있는 읽기 :하지만, 난 우리가 역자 주 때 신분으로이 인증은 인코딩 된 인증서로 이루어집니다 생각
<identity> <certificate encodedValue="encoded certificate"/> </identity>
그 인증서의 식별 것 클라이언트 저장소 (trustedPeople)에서 서버의 공개 키를 검색하여 수행 할 수 있습니다. 이 정보는 정말로 사실입니까? 정체성이 태그는 신뢰할 수있는 저장소 "의 클라이언트의 공개 키를 검색하는 다른 것을?
당신이 다시 한번 감사,이 방식으로 지원 할 수 있기를 바랍니다.
것이 가능하다. 지금까지 뭐 해봤 어? – Bernard
특별히 요구하지 않는 한 클라이언트 인증서가 필요하지 않습니다. 바인딩 구성은 어떻게 생겼습니까? –
누군가 문제를 해결해 주시겠습니까 ?? – AmirT