Cómo utilizar SSL en su aplicación
HTTPS es en realidad SSL sobre HTTP. Este protocolo utiliza SSL para cifrar los datos originales en el remitente y descifrarlos en el receptor. Por lo tanto, los piratas informáticos de la red no interceptan ni descifran fácilmente los datos transmitidos. Este artículo presenta tres métodos de implementación de HTTPS.
Método 1 Hipervínculo estático
Este es el método más utilizado en sitios web y también es el más sencillo. Indicar directamente el uso del protocolo HTTPS en los enlaces a páginas web que requieren el uso de SSL para su transmisión. Los siguientes son hipervínculos a páginas web que requieren el uso de SSL:
Ejemplo de SSL
<. p>Cabe señalar que, si un hipervínculo en una página web utiliza una ruta relativa, su protocolo de habilitación predeterminado es el mismo que el protocolo de transmisión de la página web o recurso que hace referencia al hipervínculo, por ejemplo, en un hipervínculo "https. ://192.168.100.100/ok/login.jps" La página web contiene los dos hipervínculos siguientes:Enlace SSL
Enlace no SSL
Luego , el primer enlace utiliza el mismo enlace que "https://192.168.100.100/ok/login.jsp" y el mismo protocolo de transporte HTTPS, el segundo enlace utiliza el protocolo identificado por sí mismo HTTP.
La ventaja de utilizar hipervínculos estáticos es que son fáciles de implementar y no requieren desarrollo adicional. Sin embargo, no es fácil de mantener y administrar porque en una aplicación web a la que se accede completamente mediante el protocolo HTTP, cada recurso se almacena en cada subdirectorio en el directorio raíz específico de la aplicación y las rutas de enlace de los recursos se utilizan en forma relativa; rutas, por lo que esto se hace para facilitar la migración de aplicaciones y la facilidad de administración. Sin embargo, si algunos recursos de la aplicación usan el protocolo HTTPS, el enlace referenciado debe usar la ruta completa, por lo que cuando la aplicación migra o necesita cambiar cualquier parte involucrada en la URL como: nombre de dominio, directorio, nombre de archivo, etc. ., el mantenedor Cada hipervínculo debe modificarse y se puede imaginar la carga de trabajo. Además, si los clientes ingresan manualmente los recursos del protocolo HTTPS en la barra de direcciones del navegador, todos los datos sensibles y confidenciales no estarán protegidos durante la transmisión y los piratas informáticos pueden interceptarlos y manipularlos fácilmente.
Método 2 Restricciones de acceso a recursos
Para proteger los datos confidenciales en aplicaciones web, evitar el acceso ilegal a los recursos y garantizar la seguridad de la transmisión, la especificación Java Servlet 2.2 define restricciones de seguridad (Seguridad - Constraint), que se utiliza para especificar las restricciones de seguridad de uno o más conjuntos de recursos web, el elemento User-Data-Constraint es una subclase del elemento de restricción de seguridad, que se utiliza para especificar las restricciones de seguridad entre el cliente y el contenedor; Cómo se protegen los datos transmitidos entre ellos. El componente de restricción de datos del usuario también incluye el componente Garantía de transporte, que estipula que la comunicación entre el cliente y el servidor debe realizarse en uno de los tres modos siguientes: Ninguno, Integral y Confidencial. Ninguno indica que el recurso web especificado no requiere ninguna garantía de transmisión; Integral indica que los datos transmitidos entre el cliente y el servidor no serán manipulados durante la transmisión; Confidencial indica que los datos están cifrados durante la transmisión. En la mayoría de los casos, Integral o Confidencial se implementa mediante SSL.
Aquí tomamos WebLogic Server 6.1 de BEA como ejemplo para presentar su método de implementación. WebLogic es un servidor J2EE con excelente rendimiento que puede configurar el control de acceso para recursos web administrados, incluidas aplicaciones EJB, JSP y Servlet. . términos.
Supongamos que una aplicación está construida en el directorio /mywebAPP en Weblogic Server, y algunos de los Servlets y JSP requieren transmisión SSL. Luego puede colocarlos todos en el directorio /mywebAPP/sslsource/ y luego editar /secureAPP/Web-INF. /web .xml, a través de la configuración de web.xml, se puede lograr el control de acceso para los usuarios web.
Cuando un usuario web intenta acceder a recursos en el directorio /sslsource a través de HTTP, Weblogic Server buscará la definición de restricción de acceso en web.xml y devolverá el mensaje: Necesita conexión SSL para acceder a este recurso. La combinación de restricciones de acceso a recursos e hipervínculos estáticos no solo hereda la simplicidad y facilidad de uso del método de hipervínculo estático, sino que también protege eficazmente los datos confidenciales de los recursos. Sin embargo, existe un problema: si un cliente web utiliza el protocolo HTTP para acceder a recursos de red que requieren SSL, ve un mensaje emergente: Necesita conexión SSL para acceder a este recurso. Es posible que la mayoría de las personas no sepan que se debe utilizar HTTPS para acceder. it La consecuencia de esta página web es que el usuario dejará de acceder a la página web, algo que el proveedor de servicios de la aplicación web no quiere ver.
Método tres redirección de enlaces
Al observar el acceso interactivo actual a los datos de recursos de sitios web comerciales, los datos que requieren cifrado y transmisión estrictos solo representan una pequeña parte, es decir, digamos, en una aplicación web específica Los programas de servicio que necesitan usar SSL solo representan una pequeña parte del total. Luego, podemos considerar soluciones desde el aspecto del desarrollo de aplicaciones y procesar aquellos JSP, Servlets o EJB que necesitan usar el protocolo HTTPS, de modo que cuando el programa reciba una solicitud de acceso, primero determine si el protocolo utilizado por la solicitud cumple. los requisitos de este programa, es decir, si la solicitud entrante utiliza el protocolo HTTPS. De lo contrario, el protocolo de acceso será redirigido a HTTPS. Esto evitará la situación en la que los clientes estén confundidos sobre qué hacer cuando vean mensajes de error. utilizando el protocolo HTTP para acceder a recursos web que requieren el uso del protocolo HTTPS. Estos procesos son transparentes para los clientes web.
La idea de implementación es: primero crear una clase cuyo método pueda guiar automáticamente las solicitudes de acceso de los clientes web para que utilicen el protocolo HTTPS. Cada Servlet o JSP que requiera el uso de SSL para la transmisión lo llamará en el momento. comienzo del programa. redirección del protocolo y finalmente procesamiento de la aplicación de datos.
J2EE proporciona dos mecanismos de redirección de enlaces. El primer mecanismo es el método forward() en la interfaz RequestDispatcher. Las aplicaciones web que utilizan el mecanismo MVC (Modelo-Vista-Controlador) suelen utilizar este método para transferir solicitudes de Servlet a JSP. Sin embargo, este tipo de redirección sólo puede realizarse entre el mismo tipo de protocolos y no puede redirigirse a protocolos diferentes. El segundo mecanismo es utilizar el método sendRedirect() en la interfaz HTTPServletReponse, que puede redirigir a cualquier URL utilizando cualquier protocolo, por ejemplo:
BeSslResponse.sendRedirect("https://192.168.100.100/order " );
Además, también necesitamos utilizar dos métodos en la API de Servlet de Java: getScheme() en la interfaz ServletRequest, que se utiliza para obtener el protocolo de transmisión utilizado por la solicitud de acceso; getRequestUrl( ) en la clase HTTPUtils ), que se utiliza para obtener la URL de la solicitud de acceso. Cabe señalar que este método se ha movido a la interfaz HTTPServletRequest en Servlet 2.3.
Los siguientes son los pasos básicos para implementar la redirección de protocolo:
1. Obtener el protocolo utilizado por la solicitud de acceso
2. la solicitud de acceso El protocolo requerido por el Servlet significa que se ha utilizado el protocolo HTTPS y no se requiere procesamiento
3. Si no cumple, utilice el protocolo (HTTPS) requerido por el Servlet; redirigir a la misma URL.
Por ejemplo, un usuario web utiliza el protocolo HTTP para acceder al recurso BeSslServlet que requiere el uso del protocolo HTTPS. Escriba "URL: http://192.168.100.100/BeSslServlet" y primero utilice ProcessSslServlet. al ejecutar BeSslServlet. ProcessSsl() redirige a https://192.168.100.100/BeSslServlet y luego los datos se transmiten entre BeSslServlet y el navegador del cliente a través del protocolo HTTPS.
La introducción anterior es solo el ejemplo más simple, para tener una comprensión preliminar de este método de redirección. Si realmente desea implementarlo en una aplicación web, también debe considerar las siguientes cuestiones:
● En las aplicaciones web, a menudo se utiliza el método GET o Post, y algunas palabras de consulta se incluirán en el URL de la solicitud de acceso. Estas cadenas no se pueden obtener cuando se usa getRequesUrl() y se perderán después de la redirección, por lo que deben agregarse a la nueva URL antes de la redirección. Podemos usar request.getQueryString() para obtener la cadena de consulta de GET. Para los parámetros de solicitud de Publicación, podemos convertirlos en cadenas de consulta y luego procesarlos.
● Algunas solicitudes de aplicaciones web utilizarán objetos como atributos. Estos atributos deben guardarse en la sesión antes de la redirección para que puedan usarse después de la redirección.
● La mayoría de los navegadores considerarán el acceso a diferentes puertos del mismo host como acceso a diferentes hosts y utilizarán diferentes sesiones. Para conservar la sesión original después de la redirección, debe configurar el nombre de dominio de cookies de la aplicación. servidor en consecuencia.
Los problemas anteriores se pueden resolver en programación.
Al implementar la redirección de protocolo en el programa mismo, los recursos que requieren protección estricta se pueden separar lógicamente de otros datos ordinarios, de modo que los recursos que requieren el uso de SSL y los recursos que no necesitan usar SSL puedan tomarse por separado para evitar desperdiciar recursos del sistema del sitio web.