none
Problema usando WCF bajo HTTPS (ERR_CERT_AUTHORITY_INVALID) RRS feed

  • Pregunta

  • Hola, tengo una aplicacion .Net con un servicio web que he creado desplegado en el IIS de una maquina remota, cuando he cifrado el servicio web me ha empezado a dar problemas. He creado un certificado autofirmado con el IIS, y cuando llamo al servicico web desde C#, funciona correctamente, ya que le he indicado en el codigo que acepte todo tipo de certificados (AcceptAllCertifications), pero cuando llamo al servicio web desde Ajax en el cliente me da el siguiente error en el Google Chrome: ERR_CERT_AUTHORITY_INVALID... Esta es la llamada Ajax:
            function cargaDatos() {
    
                var Json = { 'codEmpresa': '9' };
    
                $.ajax({
                    url:rutaSerWeb + getGestionOperaciones,
                    data: Json,
                    type: 'GET',
                    async: false,
                    cache: false,
                    dataType: 'json',
                    crossDomain: true,
                    success: function (data) {
    
                        lista_Gestion_Operaciones = [{}];
                        lista_Gestion_Operaciones.push(data);
    
                        getData();
                    },
                    error: function (e) {
                        alert(e.message);
                    }
                });
            }
    Y este es el web config que tengo en el servicio web de la maquina remota:
    	<system.serviceModel>
    		<bindings>
    			<webHttpBinding>
    				<binding name="CORSWebHttpBinding" crossDomainScriptAccessEnabled="True" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647">
    					<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    					<security mode="Transport">
    						<transport clientCredentialType="None" />
    					</security>
    				</binding>
    			</webHttpBinding>
    		</bindings>
    		<services>
    			<service name="Service" behaviorConfiguration="CORSServiceBehavior">
    				<endpoint address="" binding="webHttpBinding" bindingConfiguration="CORSWebHttpBinding" behaviorConfiguration="EndpBehavior" contract="IService" />
    			</service>
    		</services>
    		<behaviors>
    			<serviceBehaviors>
    				<behavior name="CORSServiceBehavior">
    					<serviceMetadata httpGetEnabled="False" httpsGetEnabled="true"/>
    					<serviceDebug includeExceptionDetailInFaults="true" />
    				</behavior>
    			</serviceBehaviors>
    			<endpointBehaviors>
    				<behavior name="EndpBehavior">
    					<enableWebScript />
    					<webHttp/>
    				</behavior>
    			</endpointBehaviors>
    		</behaviors>
    		<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    		<standardEndpoints>
    			<webScriptEndpoint>
    				<standardEndpoint name="" crossDomainScriptAccessEnabled="true" />
    			</webScriptEndpoint>
    		</standardEndpoints>
    	</system.serviceModel>

    Alguien puede ayudarme ??
    miércoles, 21 de abril de 2021 7:24

Respuestas

  • Si quieres poderlo usar desde los navegadores, me temo que tendrás que usar un certificado "real" cuya autoridad sea reconocida desde la máquina que ejecuta el navegador, en lugar de un certificado autofirmado (salvo que añadas la autoridad de autofirma a las autoridades raiz en la máquina cliente). Hasta donde yo sé, no es factible decir en el código AJAX que desprecie la validación del certificado, como se lo dices desde el C#. Vas a necesitar un certificado válido.

    • Marcado como respuesta Luis_Mi_79 miércoles, 21 de abril de 2021 15:10
    miércoles, 21 de abril de 2021 11:01

Todas las respuestas

  • Si quieres poderlo usar desde los navegadores, me temo que tendrás que usar un certificado "real" cuya autoridad sea reconocida desde la máquina que ejecuta el navegador, en lugar de un certificado autofirmado (salvo que añadas la autoridad de autofirma a las autoridades raiz en la máquina cliente). Hasta donde yo sé, no es factible decir en el código AJAX que desprecie la validación del certificado, como se lo dices desde el C#. Vas a necesitar un certificado válido.

    • Marcado como respuesta Luis_Mi_79 miércoles, 21 de abril de 2021 15:10
    miércoles, 21 de abril de 2021 11:01
  • Problema resuelto. En el IIS le he puesto al servicio web el mismo certificado que tenemos asociado a la web y funciona correctamente. No es necesario comprar mas certificados ....
    miércoles, 21 de abril de 2021 15:10
  • Hola Luis,

    Gracias por confirmar que se ha encontrado una solución a la consulta realizada.

    Gracias por usar los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    miércoles, 21 de abril de 2021 15:29
    Moderador