He estado trabajando fuera de la siguiente URL para tratar de lograr la protección del transporte WCF utiliza certificados de cliente en mi máquina de desarrollo (por lo que mi cuadro está sirviendo como el cliente y el servidor).
Mi entorno es Visual Studio 2008 en Windows 7 con IIS 7.5. Todo parece estar bien hasta el punto hago una petición al servidor, ya sea mediante la apertura de IE y la navegación a una de mis archivos .SVC o ejecutar mi aplicación cliente de Windows Form .NET y hacer una llamada al servicio y en ese momento me sale el error siguiente:
Error HTTP 403.7 - prohibido
La página que está intentando tener acceso requiere su navegador para tener un certificado de cliente Secure Sockets Layer (SSL) que el servidor Web reconoce.
archivo de configuración del servidor:
<Fijaciones><WsHttpBinding> <Nombre del enlace = "CertificateWithTransport" maxReceivedMessageSize = "2147483647" maxBufferPoolSize = "2147483647"> <= Modo de seguridad "Transporte"> <ClientCredentialType transporte = "Certificado"> </ transporte> </ Seguridad> </ Binding> </ WsHttpBinding></ Fijaciones>
archivo de configuración de cliente:
<? Xml version = "1.0" encoding = "UTF-8"?><Configuration> <System.serviceModel> <Fijaciones> <WsHttpBinding> <Nombre del enlace = "CertificateWithTransport" CloseTimeout = "00:10:00" OpenTimeout = "00:10:00" ReceiveTimeout = "00:10:00" SendTimeout = "00:10:00" bypassProxyOnLocal = "false" transactionFlow = hostNameComparisonMode "falsa" = "StrongWildcard" maxBufferPoolSize = "524288" maxReceivedMessageSize = "655360" messageEncoding = "texto" textEncoding = "UTF-8" useDefaultWebProxy = "true" AllowCookies = "true"> <ReaderQuotas maxDepth = "32" MaxStringContentLength = "8192" maxArrayLength = "16384" maxBytesPerRead = "4096" maxNameTableCharCount = "16384" /> <ReliableSession ordenó = "true" InactivityTimeout = "00:10:00" enabled = "true" /> <= Modo de seguridad "Transporte"> <Transporte clientCredentialType = "Certificado" realm = "" /> </ Seguridad> </ Binding> </ WsHttpBinding> </ Fijaciones><comportamientos> <EndpointBehaviors> <Nombre de la conducta = "clientCertificateConf"> <ClientCredentials> <ClientCertificate FindValue = "32 52 36 cc e1 95 fb ser 4e 3c f6 a6 92 13 53 32 47 f4 b5 45" storeLocation = "CurrentUser" storeName = "Mi" x509FindType = "FindByThumbprint" /> </ ClientCredentials> <! - <ClientCredentials> <ClientCertificate FindValue = "CN = localhostclient" storeLocation = "CurrentUser" storeName = "Mi" x509FindType = "FindBySubjectDistinguishedName" /> </ ClientCredentials> -> <DataContractSerializer maxItemsInObjectGraph = "2147483647" /> </ Comportamiento> </ EndpointBehaviors> </ Comportamientos> <Cliente> <= Dirección de punto final "behaviorConfiguration =" clientCertificateConf " unión = "wsHttpBinding" bindingConfiguration = "CertificateWithTransport"contrato = nombre de "SourceServerReference.ISourceService" = "SourceService.wsHttp" /> <= Dirección de punto final "behaviorConfiguration =" clientCertificateConf " unión = "wsHttpBinding" bindingConfiguration = "CertificateWithTransport" contrato = nombre de "CommunityServerReference.ICommunityService" = "CommunityService.wsHttp" /> <= Dirección de punto final "behaviorConfiguration =" clientCertificateConf "unión =" wsHttpBinding " bindingConfiguration = contrato "CertificateWithTransport" = "ActivityLeadContactServerReference.IActivityLeadContactService" name = "ActivityLeadContactService.wsHttp" /> <= Dirección de punto final "behaviorConfiguration =" clientCertificateConf " unión = "wsHttpBinding" bindingConfiguration = "CertificateWithTransport" contrato = nombre de "UserServerReference.IUserService" = "UserService.wsHttp" /> <= Dirección de punto final "behaviorConfiguration =" clientCertificateConf " unión = "wsHttpBinding" bindingConfiguration = "CertificateWithTransport"contrato = "PickListItemServerReference.IPickListItemService" name = "PickListItemService.wsHttp" /> <= Dirección de punto final "behaviorConfiguration =" clientCertificateConf " unión = "wsHttpBinding" bindingConfiguration = "CertificateWithTransport" contrato = nombre de "ProspectServiceReference.IProspectService" = "ProspectService.wsHttp" /> <= Dirección de punto final "behaviorConfiguration =" clientCertificateConf " unión = "wsHttpBinding" bindingConfiguration = "CertificateWithTransport" contrato = "ActivityLeadServiceReference.IActivityLeadService" name = "ActivityLeadService.wsHttp" /> <= Dirección de punto final "behaviorConfiguration =" clientCertificateConf " unión = "wsHttpBinding" bindingConfiguration = "CertificateWithTransport" contrato = "ActivityReferralServiceReference.IActivityReferralService" name = "ActivityReferralService.wsHttp" /> <= Dirección de punto final "behaviorConfiguration =" clientCertificateConf " unión = "wsHttpBinding"bindingConfiguration = "CertificateWithTransport" contrato = nombre de "ReferralServiceReference.IReferralService" = "ReferralService.wsHttp" /> <= Dirección de punto final "behaviorConfiguration =" clientCertificateConf " unión = "wsHttpBinding" bindingConfiguration = "LeadService.wsHttp" contrato = nombre de "LeadServerReference.ILeadService" = "LeadService.wsHttp" /> </ Cliente> </system.serviceModel></ Configuration>
Cualquier ayuda sería muy apreciada!
.