Puede configurar sitios en IIS para solicitar un certificado pero eso A) generará un error si alguien no está visitando con https y B) requerirá que todas las páginas usen https. Por lo tanto, que no funcionará. Podría poner un filtro en IIS que verifique todas las solicitudes y las redirija como llamadas https si están en su lista de encriptación. El inconveniente obvio aquí es la necesidad de actualizar su lista de páginas cada vez que se agrega una nueva página (por ejemplo, desde un archivo XML o base de datos) y reiniciar el filtro.
Creo que probablemente tenga razón en la creación de código en las páginas que requieren https que redirigen a una versión https si llegan a través de http. En lo que respecta a su error de certificación, puede redireccionar con una ruta completa (que incluye www) en lugar de una ruta relativa para solucionar este problema. Si tiene alguna pregunta sobre cómo detectar si la llamada usa https O cómo obtener la ruta completa de la solicitud actual, por favor hágamelo saber. Ambos son bastante sencillos, pero tengo un código de muestra si lo necesitas.
ACTUALIZACIÓN - Josh, los certs que manejan múltiples subdominios se llaman certificados comodín. El problema es que son bastante más caros que los certificados estándar.
ACTUALIZACIÓN 2: Otra cosa a considerar es utilizar una página maestra o una clase derivada para las páginas que necesitan SSL. De esta forma, en lugar de duplicar el código en cada página, simplemente puede declararlo como tipo SSLPage (o usar la página maestra correspondiente) y hacer que la clase Master/Parent maneje la redirección. De nuevo, necesitará hacer algún procesamiento de URL si toma este enfoque, pero es bastante trivial.
Sí, tomo el mismo enfoque. Tengo una clave EnableSsl en mi archivo web.config que puedo activar y desactivar dependiendo del entorno en el que me encuentre. También tengo una clave SecurePages delimitada por tuberías a la que puedo agregar/eliminar sitios fácilmente. –
Otra forma en lugar de delimitada por Tuberías (suponiendo que no necesita cambiar esto después de implementar) sería definir una página base que haga la verificación, entonces cualquier página que quiera garantizar segura heredará siempre de esa página. También puedes usar atributos. – JoshBerke
Sí, pero preferiría tener una única página base, y me gustaría tener la capacidad de establecer dinámicamente las páginas en SSL o no sin recompilar. –