Pregunta

¿Hay una manera para que una aplicación Java Web para obtener información sobre los certificados de seguridad instalados en la máquina de uno a través de una petición HTTP y permitir el acceso de forma selectiva si un certifiicate particular, está instalado en la máquina.

Básicamente, el requisito es, la aplicación web debe entretener a petición de un portátil de la compañía más debe denegar el acceso con el texto de error apropiado.

(Estos podrían ganar computadoras portátiles con ciertos certifcados instalados en su máquina o pueden ser de un determinado conjunto de direcciones IP estáticas.)

¿Fue útil?

Solución

Sí, esto es posible usando certificados de cliente HTTPS. La configuración exacta y la configuración depende de su servidor de aplicaciones y necesidades específicas, pero un escenario común woul ser que se crea un CA (autoridad de certificación) interna de la empresa a emitir los certificados de cliente que pueden estar restringidos a las direcciones IP de los clientes específicos y configurar el servidor de aplicaciones de HTTPS conector para requerir un certificado de cliente y para confiar en los certificados emitidos por su propia entidad emisora.

Después de la configuración adecuada se ha hecho, el certificado (s) cliente está / están a disposición de la aplicación web a través de un atributo de la petición del servlet:

X509Certificate[] certificates = (X509Certificate[])
    request.getAttribute("javax.servlet.request.X509Certificate");

Otros consejos

Como jambjo dijo - usted puede conseguir absolutamente certificados de cliente a través de HTTPS con autenticación de cliente mientras describía. Me gustaría recomendar que más direcciones IP estática, un certificado es más difícil de falsificar y permite una mayor flexibilidad si necesita volver a configurar la red de forma diferente en el futuro.

Un par de otros pensamientos:

  • Casi cualquier servidor de aplicaciones le permitirá configurar un almacén de certificados de confianza - la lista de certificados de CA su aplicación aceptará para autenticación de cliente HTTPS. Limitar esto a la CA que se suministra certificados de cliente - ya sea una entidad de certificación interna de la empresa o de un proveedor de certificados.
  • La elección de CA interna o proveedor de CA es uno corporativo. Una CA interna se llevará a mano de obra para instalar y mantener, un proveedor de CA le costará dinero por certificado. No llega a un punto de equilibrio donde es más barato hacer los certificados a sí mismo, pero hasta llegar a ese punto, el proveedor de CA puede ser más barato.
  • Si usted tiene una CA interna y la regla es que "cualquier máquina de la empresa (con un certificado) puede acceder a esta aplicación", entonces su trabajo se realiza en la lista de CA de confianza en el servidor applicaiton, ya que usted sabe la empresa CA no será utilizada para cualquier persona, pero la gente en la empresa.
  • Si usted tiene un proveedor de CA, es posible que tenga que limitar su control de acceso más allá y utilizar el código proporcionado jambjo para obtener el certificado y mirar la información dentro de ella. Por lo general, hay una organización (O) y el componente de unidad organizativa (OU) en el sujeto DN (nombre distinguido) que le dirá lo que la organización produce este certificado. Usted debe ser capaz de verificar que estar seguro de que tiene un ordenador de la empresa.
  • Es viable para hacer la O y OU comprobar si sabe que su proveedor de CA nunca se va a dar O de su empresa y los nombres de OU a nadie más que a un miembro de su empresa. Si ese no es el caso, puede que tenga que comprobar contra un almacén de datos back-end (como un directorio LDAP) para asegurarse de que el usuario o el equipo del usuario se conoce a usted.
  • También es posible vincular la dirección IP de la máquina al certificado - a menudo SubjectAltName (nombre alternativo del sujeto) se utiliza para esto cuando se está construyendo el certificado. Yo no lo recomendaría, ya que necesitará una necesidad de un nuevo certificado si alguna vez cambia la dirección IP de la máquina. Parece innecesariamente compleja para sus propósitos.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top