2011-04-28 16 views
5

Tengo una aplicación web alojada en Windows Azure. Queremos usar SSL para la implementación de producción, y tenemos un nombre de dominio personalizado y un certificado SSL para el dominio, y todo eso está configurado y funcionando correctamente en producción.Azure: trata de SSL en una implementación provisional

La función web actualmente tiene un punto final HTTP y HTTPS, pero nos gustaría desactivar el punto final HTTP y simplemente usar HTTPS en producción.

Si eliminamos el punto final HTTP, mi pregunta es: ¿cuál es la mejor forma de lidiar con el punto final HTTPS para una implementación en etapas en Azure? Cada vez que realiza una nueva implementación provisional en Azure, le proporciona un nuevo nombre de dominio temporal para el servicio. En etapas, ¿deberíamos simplemente no usar un certificado SSL, y pasar por alto todas las advertencias del navegador, o hay alguna manera de usar SSL en etapas cuando el nombre de dominio cambia con cada implementación? O cuando cambiamos a producción, ¿hay alguna manera de simplemente "desactivar" un punto final (HTTP) en una implementación de Azure?

Mi idea inicial era crear dos paquetes que tenían puntos finales diferentes, pero no creo que Azure le permita intercambiar en caliente las instalaciones de producción y puesta en escena si tienen diferentes configuraciones de punto final.

Respuesta

9

Para uno de nuestros proyectos estamos usando URL rewrite module, que viene instalado por defecto en Azure. Funciona muy bien. Una sección de web.config hace que todo el tráfico HTTP redirigido automáticamente en HTTPS:

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

para la estadificación del entorno que lo mejor es utilizar el mismo certificado como para la producción. Esto permite un intercambio en caliente fácil entre la producción y la puesta en escena, y usted puede verificar en su navegador que el certificado es el correcto. El inconveniente es que tendrá que hacer clic en "continuar al sitio web" mientras prueba la implementación provisional.

Tenga en cuenta que, si bien el módulo de reescritura de URL siempre está disponible en Azure, para DevFabric tendrá que descargarlo e instalarlo en su cuadro de desarrollo. La descarga está disponible en http://www.iis.com.

1

Para este escenario, lo que hemos hecho es crear 2 implementaciones de servicios diferentes en Azure, ambas teniendo su entorno Producción \ Entorno. Por lo tanto, estamos utilizando una instancia de producción en ambos servicios que mantiene la url estática.
No hay intercambio en caliente entre las implementaciones del servicio, pero cuando se promociona una compilación a partir de una implementación de servicio, se instala en los segundos servicios, se organiza la implementación y luego se realiza un intercambio en caliente. Espero haber sido claro.

+0

Gracias por la respuesta, parece que lo que estás haciendo es tan bueno como puedes esperar. Esperemos que Microsoft mejore la funcionalidad de implementación. –

1

Mantenemos abiertos los puertos 80 y 443 en las implementaciones de producción y puesta en escena, pero utilizamos un custom HttpModule para redirigir el tráfico HTTP a HTTPS en función de una configuración de Azure. Si el valor de configuración es igual a "Producción", todo el tráfico se fuerza sobre HTTPS. De lo contrario, se maneja el tráfico HTTP y HTTPS. Esto fue importante para nosotros porque no queríamos que nuestros usuarios se confundieran cuando se rechazaban las solicitudes HTTP simplemente porque olvidaron ponerle un prefijo a la URL con https: //. ¿Hay alguna razón en particular por la que deba desactivar el punto final HTTP?

+0

Creo que lo que estás haciendo es probablemente lo que terminaremos haciendo, en lugar de hacer dos instancias separadas. No necesariamente debemos deshabilitar HTTP, y creo que tiene un comentario válido sobre la experiencia del usuario si el punto final http no está allí. Solo queremos asegurarnos de que todo el tráfico HTTP sea redirigido a HTTPS. –

+0

Otra posibilidad sería redirigir en función del nombre de dominio. Por ejemplo, si ingresa una solicitud en yourapp.com, realice la redirección e ignore todas las demás solicitudes (yourapp.cloudapp.net, tempstagingurl, etc.). –

Cuestiones relacionadas