close

El establecimiento de Gobierno en la nube

certificado de servicio y los requisitos de certificado de cliente

Cuando se utiliza el transporte WCF y seguridad de los mensajes, que inevitablemente tendrá que lidiar con un certificado de servicio. Aquí voy a enumerar algunos problemas que pueda tener al utilizar certificado de servicio y sus mensajes de error normales hay una excepción en el uso de certificado de servicio, que está utilizando seguridad de los mensajes con ninguno de autenticación (anónimo), el requisito de que el certificado es bastante relajado. Debido a que no está utilizando verdadero nego TLS pero el protocolo SPNEGO cuando no hay autenticación del cliente en cuestión. Me parece que cualquier certificado válido será aceptada por el cliente. De lo contrario, el servicio debe coincidir siguientes condiciones para ser consumidos por los clientes felices Debe tener a juego con el nombre del asunto el nombre de host El nombre Asunto CN = XXXX debe coincidir con el anfitrión, de lo contrario la validación fallará. Y el mensaje de error podría ser como: Control de identidad falló para el mensaje saliente. La identidad de DNS esperada del extremo remoto era 'xxxxx.com' pero el punto final remoto proporcionado reivindicación DNS 'yyy.com'.Si se trata de un punto final remoto legítima, se puede solucionar el problema mediante la especificación explícita de la identidad de DNS 'yyy.com' como la propiedad de identidad de EndpointAddress al crear proxy de canal. Así que la solución también se sugiere aquí, tratar de especificar explícitamente la identidad de DNS en el error de error de generación cliente de configuración de la cadena o la comprobación de revocación El CA raíz del certificado de servicio debe ser de confianza para el cliente, y la comprobación de revocación debe tener éxito si se necesita. Y mensaje de error podría ser como: El objeto de comunicación, System.ServiceModel.Channels.ServiceChannel, no se puede utilizar para la comunicación, ya que es en el estado de fallo. El edificio de la cadena CN = xxx.com certificado X.509 falló. El certificado que se utilizó tiene una cadena de confianza que no puede ser verificada. Sustituir el certificado o cambiar el certificateValidationMode. La función de la revocación no pudo comprobar la revocación del certificado. Algún tiempo se garantiza que la confianza de la cadena es de hecho en su lugar, pero no está habilitado todos los certificados de CRL,especialmente certificados auto firmado, no hay ninguna comprobación de revocación apoyado, sino como un defecto, el cliente siempre tiene ganas de hacer la comprobación de revocación del certificado de servicio. Puede resolver este problema proporcionando un certificado de servicio Bueno, cuando no tiene el control sobre el lado del servidor, como solución alternativa, se sugiere que se puede cambiar o CertificationValidationMode RevocationMode de pasar por alto estas deficiencias en el código se puede WsHttpBinding unión = new wsHttpBinding (); binding.Security.Mode = SecurityMode.Message; binding.Security.Message.ClientCredentialType = MessageCredentialType.Certificate; usando (ChannelFactory <WCFContract.ICalculator> SCF = nueva ChannelFactory <WCFContract.ICalculator> (vinculante, namedServerUri @ "WSHttpService.svc")) { // Especificar un certificado de usar para autenticar al cliente. scf.Credentials.ClientCertificate.SetCertificate ( "CN = tempClientcert", StoreLocation.LocalMachine,StoreName.My); X509ServiceCertificateAuthentication myAuthProperties = scf.Credentials.ServiceCertificate.Authentication; // Por defecto es X509CertificateValidationMode.ChainTrust // MyAuthProperties.CertificateValidationMode = // X509CertificateValidationMode.None; // Por defecto está en línea // MyAuthProperties.RevocationMode = // X509RevocationMode.NoCheck; canal WCFContract.ICalculator = scf.CreateChannel (); var s = channel.Add (1, 2); }  Sólo ten cuidado con las líneas comentadas en el código, puede desactivar la validación de certificados / RevocationMode privada cuenta clave de emisión de servicios tiene que tener acceso a la clave privada del certificado de servicio Mensaje de error podría ser como: El objeto de comunicación, System.ServiceModel. Channels.ServiceChannel, no se puede utilizar para la comunicación, ya que es en el estado de fallo. El certificado 'CN = xxxxx' debe tener una clave privada. El proceso debe tener derechos de acceso para la clave privada. Potencialmente podría tenerinstalado el certificado en el almacén CurrentUser, incluso le conceda el permiso a la clave privada en ese caso, usted todavía tiene problemas de acceso como tiendas CurrentUser almacena las claves privadas en virtud de las carpetas que dependen del usuario, siempre instalar certificados en LocalMachine incluso usarlos como certificados de cliente, en este caso, se acaba de conceder el permiso de clave privada a través de Gestionar clave privada ... del MMC. Sólo una razón por la que se puede pensar en la instalación de órdenes de certificado en CurrentUser, que es el servicio de acceso desde el navegador. Como cliente de servicio WCF que casi tratamos de utilizar el servicio en nuestra propia aplicación. En cuanto a los certificados de cliente, sobre todo se necesita acceder clave privada en el PC del cliente, la CA raíz del certificado de cliente debe estar en entidades de confianza del servidor. Hay un error en la autenticación de certificado de cliente haciendo que las autoridades de servidor de confianza lista que se está truncado, por lo tanto, las etiquetas certificado de cliente válido se negó: «» Esta entrada fue publicada el Martes, 15 de de abril de, 2014 a 4:51 y estáguardada bajo. Puedes seguir cualquier respuesta a esta entrada a través de la alimentación. Usted puede, o desde su propia web.

Previous Post     Next Post


TAGS


CATEGORIES

.