2012-04-10 13 views
5

Aquí hay algunas preguntas que tengo sobre SSL.Forzar SSL a través de HTAccess

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} somefolder 
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L] 
  1. Por encima de código es para obligar a todo para ir a través de SSL HTAccess. ¿Hay alguna manera de restringir este código a una dirección IP específica? Quiero forzar SSL solo por mi dirección IP para que pueda probar el sitio minuciosamente utilizando los nuevos enlaces SSL y ver (asegúrese) todo está funcionando antes de llevarlo a cabo en vivo en el sitio en vivo. Probar con solo mi IP sería mucho más fácil.

  2. es SSL va a interferir con cualquier GET/mensajes? Es decir ... si uso que el código de seguridad, y alguien está en una page..and que enviar un formulario, que va a obligarlos a SSL, es que va a ser considerado una redirección y despejar cualquier puesto variables GET/? Solo quiero tratar de averiguar de antemano si va a estropear todo lo que tengo en ejecución.

  3. ¿Alguno de ustedes tiene alguna situación donde forzados SSL continuación tenido un montón de problemas con el sitio no funciona bien?

+1

1) Use una línea RewriteCond más y una variable '% {REMOTE_ADDR}' para que coincida con la dirección IP; 2) Se redirige - se meterá con los datos POST (pero no con GET); 3) Se trata de cómo diseñas tu sitio, si todos lo hiciste bien (utilizaba enlaces HTTPS cuando fuera necesario) pero alguien aún intentaba usar HTTP de forma manual (especialmente cuando usaba POST, por ejemplo, enviando formularios), entonces simplemente tira un error (lo hace a propósito, entonces son sus propios problemas). Por cierto – LazyOne

+0

- dependiendo de donde este sitio se desplegará etc - se puede usar '% RewriteCond {HTTPS} = off [NC]' en vez de comprobar el número de puerto, como se puede poner fácilmente en la página web diferente puerto no estándar (por ejemplo, 8080, etc.). – LazyOne

Respuesta

2

Si desea asegurarse de que su sitio funciona bien con HTTPS, apague HTTP plano (asumiendo que es para todo el servidor), o utilizar las directivas de Apache Httpd (en .htaccess o en la configuración principal) que hacen que las páginas que necesitan ser atendidos a través de HTTPS devuelven un error (por ejemplo, 404) cuando se accede a través de HTTP simple. Puede lograr esto para una dirección IP específica usando Deny from xxxxxxx.

No confíe en mod_rewrite o similar a redirigir las peticiones HTTP plano a su equivalente HTTPS. Esto en el mejor de los casos esconderá problemas y causará una falsa sensación de seguridad.

La razón de esto es que, incluso con un redireccionamiento, las solicitudes iniciales se hacen claras antes de ser redirigidas: asegúrese de que todas las referencias utilizan https:// URI antes de hacer uso de ellas. Puede encontrar más detalles en this answer.

+0

Muy bien, gracias. Finalmente conseguí que todo funcionara simplemente cambiando las URL centrales a https. Una vez en HTTPS permanecieron en ese protocolo. Así que al iniciar sesión, solo me aseguré de que el formulario apuntara a HTTPS, y se mantuvieron así en el resto del sitio. Este era un panel de administración por lo que no había necesidad de forzar HTTP ... pero la forma en que lo explicaste funcionó bien. Gracias. – Ninjakreborn

Cuestiones relacionadas