2011-04-02 21 views
55

No consigo que IIS Express acepte conexiones seguras para un proyecto VS2010 MVC3 que estoy desarrollando. Puedo conseguir que se acepte conexiones no seguras en el puerto 80, pero no es seguro en el puerto 443.IIS Express: hacer que SSL funcione

que he tomado los pasos siguientes, basados ​​en google:

1) Situado la huella digital SHA1 para mi servidor IIS expreso certificado de firma a través de la ejecución de la siguiente línea de comandos en un VS2010:

certmgr.exe /c /s /r localMachine MY 

el resultado fue 9B088F80 A4FC3141 28F62890 70BA1FC4 49FDD009. Más tarde supe que necesito eliminar los espacios cuando uso la huella digital.

2) Suprimido lo que sea certificado fue ligado al puerto 443 mediante la ejecución del siguiente en un símbolo de comandos elevada:

netsh http delete sslcert ipport=0.0.0.0:443 

3) genera un nuevo GUID mediante la ejecución Crear GUID del menú Herramientas VS2010. En mi caso obtuve B0421A5B-FF61-47CE-892D-11AA3A9C7D2A.

4) instalado el certificado autofirmado para el puerto 443 mediante la ejecución de lo siguiente en un símbolo de comandos elevada:

netsh http add sslcert ipport=0.0.0.0:443 certhash=9B088F80A4FC314128F6289070BA1FC449FDD009 appid={B0421A5B-FF61-47CE-892D-11AA3A9C7D2A} 

5) Modificado el ACL ejecutando el siguiente desde un símbolo de comandos elevada:

netsh http add urlacl url=https://localhost:443/ user=everyone 

6) Se modificó el archivo application.config para IIS Express agregando un enlace para el puerto 443 y el protocolo https. La sección de sitios para el archivo acabó con este aspecto:

 <sites> 
     <site name="Development Web Site" id="1" serverAutoStart="true"> 
      <application path="/"> 
       <virtualDirectory path="/" physicalPath="%IIS_BIN%\AppServer\empty_wwwroot" /> 
      </application> 
      <bindings> 
       <binding protocol="https" bindingInformation="*:443:localhost" /> 
       <binding protocol="http" bindingInformation="*:80:localhost" /> 
      </bindings> 
     </site> 
     <siteDefaults> 
      <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" /> 
      <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" /> 
     </siteDefaults> 
     <applicationDefaults applicationPool="IISExpressAppPool" /> 
     <virtualDirectoryDefaults allowSubDirConfig="true" /> 
    </sites> 

7) reinicia el servicio HTTP ejecutando el siguiente en un indicador de comandos elevada:

net stop http 
net start http 

8) Se ha cambiado la URL de proyectos en el ficha web de la página propiedad de mi proyecto MVC a lo siguiente:

http://localhost/ 

Ahorro de la página de propiedades del proyecto provocó una reconfiguración del servidor después de hacer este cambio.

Cuando lance la aplicación MVC desde VS2010, se relaciona correctamente con http://localhost (en el puerto 80, por defecto, no he incluido todos los pasos para que IIS Express funcione con conexiones no seguras/normales en el puerto 80, pero básicamente son pasos del 5 al 7, pero se centran en http y el puerto 80, no en https y en el puerto 443).

Sin embargo, intentar pasar a cualquier acción que requiera https me da un error de "conexión de servidor rechazado".

¿Qué estoy haciendo mal?

Respuesta

72

Después de configurar un proyecto para utilizar IISExpress, pulse F4 mientras que el proyecto es seleccionado en el Explorador de soluciones para abrir las propiedades y en las propiedades del conjunto de SSL Enable conjunto true y bajo SSL URL establecer la dirección URL con el puerto (443 en su caso) usted quiere para SSL.

Esto funciona para mí sin pasar por alto y el certificado autofirmado fue automático.

para ejecutar el proyecto en esa dirección URL por defecto, puede hacer clic derecho sobre el proyecto, seleccione Propiedades y, a continuación Web y vuelva a colocar la URL del proyecto con https://localhost:443

+2

¡Guau! Eso seguro es mucho más fácil que lo que encontré en mi búsqueda. Tendré que intentarlo. –

+4

Para mayor claridad, ¿es esta simple respuesta todo lo que tiene que hacerse para habilitar SSL en IIS Express? es decir, el trabajo de la línea de comandos de Mark no es obligatorio. –

+1

Sí, respuesta simple todo lo que se requiere. – jbtule

6

Me encontré con la respuesta.

En el paso 6, estaba modificando el archivo IIS Express application.config incorrecto. Resulta que hay un archivo de configuración "maestro" en el directorio principal de la aplicación (por ejemplo, C:\Program Files (x86)\IIS Express\AppServer, en mi sistema), que es el que modifiqué.

El segundo y archivo correcto para modificar es el que se encuentra en el área de datos del usuario (por ejemplo, C:\Users\Mark.ARCABAMA\Documents\IISExpress\config, en mi sistema).

2

Si ha seguido los pasos de jbtule y SSL sigue sin funcionar , asegúrese de que su puerto tenga el formato :443XX.

Visual Studio lo hizo automáticamente para el primer proyecto en el que habilité SSL, pero cualquier proyecto posterior parece tener puertos SSL aleatorios. Cambiándolo a la estructura de 443 anterior debajo de la interfaz de usuario Project > Web, lo puse en marcha y funcionó para mí.

Cuestiones relacionadas