Conexión SSL / Restablecimiento de conexión con IISExpress


Estoy usando el nuevo Visual Studio 2013 con IISExpress por primera vez (usado anteriormente ASP.net Servidor de desarrollo en VS2010). Me estoy topando con problemas tratando de depurar mi proyecto.

Esto es lo que veo en Chrome:

No se puede establecer una conexión segura con el servidor. Esto puede ser un problema con el servidor, o puede requerir un certificado de autenticación de cliente que no tiene. Código de error: ERR_SSL_PROTOCOL_ERROR

Actualizé mis propiedades -> archivo web para que la Url del proyecto ahora utiliza una URL https. Sin embargo, después de hacer eso, ahora recibo un nuevo error al iniciar:

Se interrumpió la conexión con localhost. Código de error: ERR_CONNECTION_RESET

Gracias

Author: Kevin, 2013-10-17

16 answers

Si está utilizando URLRewrite para forzar conexiones SSL en su web.config, probablemente está reescribiendo su dirección de host local para forzar https. Si la depuración con SSL habilitado no es importante para usted y está utilizando URLRewrite, considere agregar <add input="{HTTP_HOST}" pattern="localhost" negate="true" /> a su web.sección de reescritura del archivo de configuración. Detendrá la reescritura para cualquier dirección localhost pero la dejará en su lugar en un entorno de producción. Si no estás usando URLRewrite o necesitas depurar usando SSL, http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx podría ayudar. Es para VS2010, pero debería ser suficiente para VS2013 también.

 34
Author: djroedger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-12 20:34:07

Estaba obteniendo ERR_CONNECTION_RESET porque mi aplicación configurada de Visual Studio 2013 / IIS Express número de puerto NO estaba en el rango :44300-:44398. (No recuerdo haber tenido que descartar ninguna advertencia para que saliera de ese rango.) Cambiar el número de puerto a algo en este rango es todo lo que tenía que hacer para que funcionara.

Me di cuenta de esto después de revisar la salida netsh http show sslcert > sslcert.txt y algo haciendo clic con cosas que leí recientemente sobre los números de puerto.

 253
Author: Jason Kleban,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-16 13:01:51

Asegúrese de eliminar los certificados 'localhost' anteriores, ya que podrían entrar en conflicto con el generado por IIS Express. Tuve este mismo error (ERR_SSL_PROTOCOL_ERROR), y me tomó muchas horas finalmente averiguarlo después de probar muchas "soluciones". Mi error fue que había creado mi propio certificado de' localhost ' y había dos de ellos. Tuve que eliminar ambos y hacer que IIS Express lo recreara.

Aquí es cómo se puede comprobar y eliminar 'localhost' certificado:

  • Al inicio, escriba -> mmc.exe
  • Archivo -> Agregar/Quitar complemento...
  • Seleccione Certificados - > Agregar > - > Cuenta de equipo - > Equipo local
  • Compruebe en Certificados > Personal > Certificados
  • Asegúrese de que el certificado localhost que existe tenga un nombre descriptivo "IIS Express Development Certificate". Si no, bórralo. O si es múltiple, borre todo.

En Visual Studio, seleccione proyecto y en la pestaña propiedad, habilite SSL=true. Guardar, Construir y Corre. IIS Express generará un nuevo certificado 'localhost'.

Nota: Si no funciona, pruebe estos: asegúrese de deshabilitar IIS Express en VS project y detener todas las aplicaciones en ejecución en él antes de eliminar el certificado 'localhost'. Además, puede ir a 'panel de control > programas' y reparar IIS Express.

 70
Author: ShaTin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-02 17:33:58

Estoy resumiendo los pasos que me ayudaron a resolver este problema:

  1. Asegúrese de que el rango de puertos SSL (utilizado por IIS express) esté entre 44300-44398

Durante la instalación, IIS Express utiliza Http.sys para reservar puertos 44300 hasta 44399 para uso SSL. Esto permite a los usuarios estándar (sin privilegios elevados) de IISExpress para configurar y usar SSL. Para más detalles sobre esto ver aquí

  1. Ejecute el siguiente comando como administrador en símbolo del sistema. Esto generará los enlaces de certificados SSL en el equipo. De esta lista, averigüe el certificado utilizado por IIS express para el puerto correspondiente:

Netsh http show sslcert > sslcert.txt

  1. Busque los siguientes elementos en el sslcert.txt (en mi caso el IIS express se estaba ejecutando en el puerto 44300)

IP: puerto : 0.0.0.0:44300

Hash de certificado : eb380ba6bd10fb4f597cXXXXXXXXXX

Application ID : {214124cd-d05b-4309-XXX-XXXXXXX}

  1. También busque en la consola de administración de IIS express (EJECUTAR (Ctrl+R) -> inetmgr.exe) y busque si el certificado correspondiente existe en los certificados de servidor

(Haga clic en el ServerRoot - > en la sección IIS () - > Abrir el servidor Certificados)

  1. Si su localhost de forma predeterminada usa un certificado diferente que no sea el que aparece en el paso 3, continúe con los siguientes pasos

Netsh http delete sslcert ipport = 0.0.0.0: 44300

Netsh http add sslcert ipport = 0.0.0.0:44300 certhash=New_Certificate_Hash_without_space appid = {214124cd-d05b-4309-XXX-XXXXXXX}

El New_Certificate_Hash será su certificado predeterminado vinculado con su localhost (que encontramos en el paso 4) o el que desea agregar como un nuevo certificado.

P.d. Gracias por su respuesta Uos { (que me ayudó a resolver este problema)

 22
Author: Karthik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-22 20:59:39

El problema que estaba experimentando tenía que ver conmigo, en algún momento, habilitando HSTS para localhost y sin darme cuenta de que esto rompería mi http://localhost:someport en IIS Express.

HSTS le dice al navegador (Chrome en mi caso) que SIEMPRE solicite una URL usando HTTPS. Por lo tanto, a pesar de que ni siquiera había habilitado SSL para mi aplicación MVC 5, el navegador aún intentaría acceder a mi sitio utilizando HTTPS en la URL en lugar de HTTP.

¿La solución?

  1. Navegue hasta chrome: / / net-internals / #hsts
  2. En la sección eliminar, ingrese "localhost" y elimine el registro de Chrome.
 16
Author: PussInBoots,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-13 10:24:54

Ninguna de las opciones anteriores funcionó para mí. Tuve que hacer lo siguiente:

  1. Desinstalado IIS Express 8.0
  2. Eliminado todas las configuraciones en el directorio mis documentos para IIS Express
  3. Reinstalado IIS Express 8.0
  4. Eliminado el proyecto en mi máquina local y descargado una versión limpia para TFS
  5. Ejecutó el proyecto - luego corrió sobre SSL y soy capaz de depurar

Tengo los pasos de este hilo.

Espero que esto ayude.

 9
Author: lopezbertoni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-01 19:33:09

En mi caso, creé un certificado autofirmado y lo hice funcionar, excepto que estaba recibiendo un error en el navegador porque el certificado no era de confianza. Por lo tanto, moví el certificado a la carpeta Entidades de certificación raíz de confianza > Certificados en el complemento Certificados. Funcionó, y luego cerré Visual Studio por el día.

Al día siguiente, comencé mi proyecto y recibí el error mencionado en la pregunta original. El problema es que el certificado que configuró IISExpress con debe existir en la carpeta Personal > Certificados o HTTPS dejará de funcionar. Una vez que IIS Express se inicie correctamente, puede arrastrar el certificado a la ubicación de confianza. Continuará funcionando hasta que reinicie IIS Express.

No quiero preocuparme por arrastrar el certificado de ida y vuelta cada vez, solo coloco una copia del certificado en ambos lugares y ahora todo funciona bien.

 4
Author: HackedByChinese,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-07 08:04:47

Estaba teniendo este problema, había configurado mi sitio para requerir https global en FilterConfig.cs.

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new RequireHttpsAttribute());
    }

Me había olvidado de cambiar la url del proyecto a https: de este tutorial http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-deploy-aspnet-mvc-app-membership-oauth-sql-database/ en HABILITAR SSL parte 4. Esto causó los errores que estaba recibiendo.

 3
Author: gsmith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-21 21:17:34

Tengo el mismo problema en Visual Studio 2015. Porque yo uso el enlace SSL en la web.config

<rewrite>
   <rules>   
     <rule name="HTTP to HTTPS Redirect" stopProcessing="true">
       <match url="(.*)" />
       <conditions>
          <add input="{HTTPS}" pattern="off" />
       </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" />
     </rule>
   </rules>
</rewrite>

Y puedo solucionar el problema con la respuesta del Sr. djroedger. Sustituyendo

<add input="{HTTPS}" pattern="off" />

Con

<add input="{HTTP_HOST}" pattern="localhost" negate="true" />

En mi web.config, así que mi código es

<rewrite>
  <rules>   
    <rule name="HTTP to HTTPS Redirect" stopProcessing="true">
      <match url="(.*)" />
      <conditions>
         <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
      </conditions>
         <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Found" />
    </rule>
 </rules>
</rewrite>
 3
Author: pompom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-06 03:00:50

Otro problema que me pasó dos veces:
En el applicationhost.config de IIS Express, el orden de las vinculaciones sí importa. Un enlace podría tener prioridad sobre su enlace SSL, por lo que no funciona.

Ejemplo:

<site name="MySite007" id="1">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\myuser\projects\mysolutionfolder\MyProject.Service" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation=":8081:localhost" />
        <binding protocol="http" bindingInformation=":8080:" /><!-- evil binding -->
        <binding protocol="https" bindingInformation="*:44327:localhost" />
    </bindings>
</site>

Es posible que haya agregado un enlace similar al segundo para poder acceder a su servicio web desde fuera localhost. Debido a que este enlace escucha en cualquier dirección, parece anular el enlace SSL aunque se utilizó un puerto diferente.

Eliminar el mal binding o moverlo hacia abajo.

 1
Author: Thibault D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-19 09:52:35

Esto es anecdótico como oído por casualidad de un compañero de trabajo, pero supuestamente se trata de un problema con Chrome forzando https. Suelo lanzar en Firefox, así que no había visto este problema antes. Usar firefox o ie funcionó para mi compañero de trabajo.

 1
Author: Ken Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-11 14:31:03

Mi problema fue causado por Fiddler. Cuando Fiddler se bloquea de vez en cuando se mete con la configuración de proxy. Simplemente lanzar Fiddler parecía arreglar todo (tal vez se repara a sí mismo de alguna manera).

 0
Author: Jason,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-06 17:53:01

Acababa de reconstruir mi computadora. Este hilo me dio las pistas, donde me di cuenta en la configuración del proyecto>Web, el proyecto estaba configurado para usar HTTP y el puerto HTTP. Al actualizarlo a HTTPS y al puerto HTTPS correcto, todo comenzó a funcionar de nuevo.

 0
Author: Sam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-23 12:07:46

Para continuar con otras respuestas sobre la configuración del puerto SSL entre 44300 y 44399, no pude cambiar la propiedad SSL Habilitada en Visual Studio ni establecer una URL SSL específica. Otras respuestas, como reparar IIS Express no ayudaron. La solución era entrar en el .vs carpeta paralela al archivo sln, abra la subcarpeta config y, a continuación, edite el host de aplicación.archivo de configuración. Luego, agregué la línea https manualmente y reinicié VS.

<binding protocol="http" bindingInformation="*:24941:localhost" />
                <binding protocol="https" bindingInformation="*:44301:localhost" />
 0
Author: r590,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-14 17:11:26

El ' Digicert certificate installation checker' es a menudo útil en situaciones como esta.

Pude verificar que el certificado SSL que se intentó era el que esperaba al comparar el número de serie.

introduzca la descripción de la imagen aquí

Para mí, la respuesta de @Jason Kleban fue el problema real, pero esta puede ser una utilidad muy útil para verificar sus afirmaciones básicas sobre qué certificado se está cargando.

 0
Author: Simon_Weaver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-05 19:56:29

En mi caso, simplemente había olvidado que tenía un enlace configurado para (en mi caso) https://localhost:44300 in full IIS. ¡No puedes tener ambos!

 0
Author: James Ellis-Jones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-09 08:59:44