2009-10-12 27 views
6

Estoy perdido, ya que no soy una persona Tomcat. Necesito usar el servicio web de un tercero y requieren Autenticación del cliente a través de SSL, por lo que me generaron y me emitieron un certificado SSL. Lamentablemente, esto es en la medida en que lo admiten y no pueden darme ninguna dirección sobre cómo realmente usar. Estoy atascado con esta tercera parte, así que lamentablemente tengo que soportar su falta de apoyo.Autenticación del cliente Tomcat usando SSL

Entonces, lo que tengo es una aplicación Java que un proveedor nos está suministrando (que aparentemente nunca ha tenido que lidiar con esto), un servidor de aplicaciones Tomcat ejecutando 6.0.20 en CentOS 5.3 y el certificado SSL de la tercera fiesta.

¿Qué necesito hacer a esta altura? Todo lo que puedo encontrar en línea es cómo configurar un almacén de claves para que mi aplicación pueda usar Autenticación de cliente contra cosas que se conectan a ella, no para cuando necesita conectarse con otra persona, o cómo usar SSL a través del puerto 8443 (que sé cómo hacer ya y configurar)

+0

Tiendo a estar de acuerdo con el proveedor de servicios web, de acuerdo con la información que ha proporcionado. Han elegido usar un mecanismo de autenticación estándar ampliamente respaldado. No tienen ningún negocio (a menos que los pague para consultar) diciéndole cómo * implementar * la interfaz que han especificado. Afortunadamente, dado que escogieron un estándar ampliamente utilizado, tiene muchos recursos a los que puede recurrir (muchos de ellos, como StackOverflow, son gratuitos), y aprende una tecnología que podría beneficiarlo en otros contextos. – erickson

+0

Mi queja con ellos es más profunda que solo este problema. Pagamos no solo para obtener acceso * al * servicio, sino que también tenemos que pagar por transacción, por lo que esperaría al menos un poco de ayuda (aparte de unos pocos archivos PDF vagos sin casi detalles técnicos). . Todos mis otros proveedores de servicios de terceros al menos me dan ejemplos de código o pueden señalarme en la dirección correcta cuando tengo preguntas. – dragonmantank

Respuesta

3

Aquí está la respuesta muy larga: http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html

no tome mi palabra para ella, pero creo que, como cliente, automáticamente se realizará autenticación del cliente cuando el servidor lo requiere.

Si la configuración de Tomcat es la pregunta, ¿ha leído http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html? En particular, tenga en cuenta el atributo clientAuth del elemento Connector.

+0

Así que todo lo que tengo que hacer es generar un almacén de claves (sin usar un atributo de Puerto, supongo) y cuando mi aplicación acceda al tercero (por ejemplo, a través de SOAP), recogerá la solicitud de autenticación SSL y lo enviará junto con el cliente SSL tengo? – dragonmantank

+0

Si le dieron un certificado que debe usar para conectarse a ellos, también deberían haberle dado una clave privada. Normalmente, generaría ambos, mantendrá la clave privada y les enviará una copia del certificado para colocar en su servidor. Pero sí, obtenga esa clave privada y el certificado en un almacén de claves, obtenga el certificado de su servidor en un almacén de confianza y póngalos en un SSLContext para generar sockets SSL. –

1

No sé que esto es acerca de la configuración de Tomcat, aparte de ser capaz de pasar en propiedades del sistema para una aplicación web que se ejecuta en Tomcat.

El proveedor que suministra la aplicación web realmente debería poder decirle cómo obtener la conexión del cliente desde su software para usar un certificado de cliente específico al hacer una conexión SSL a un servicio web remoto.

Por ejemplo, podrían tener su aplicación a implementar una costumbre KeyManager para las conexiones SSL que es capaz de buscar el certificado de cliente y una clave privada desde una ubicación configurable.

Si no lo han hecho, es probable que estén utilizando el valor por defecto SunX509 KeyManager.

Para el KeyManager predeterminada, puede parecer utilizar herramienta de claves para crear un almacén de claves que contiene el certificado de cliente y la clave privada del certificado describe. A continuación, puede especificar que el almacén de claves utilizando los siguientes parámetros del sistema:

-Djavax.net.ssl.keyStore="/path/to/keystore" 
-Djavax.net.ssl.keyStorePassword="<password>" 

Usted tendrá que configurar Tomcat para pasar en estas propiedades.

2

Actualización:

Try siguiente manera para permitir la autenticación del cliente en Tomcat.

Para hacer Tomcat tomar ventajas de la autenticación de clientes, que requieren tres certificados. es decir, un Certificado de servidor para Tomcat, Certificado de cliente para el navegador y Certificado de CA que firmará ambos certificados mencionados anteriormente. Aquí, mostraré cómo hacerlo en Windows.

Hay dos formas.

1) Usted debe tener un archivo de RSE es decir, una solicitud de firma de certificado.Puede enviarlo a la Autoridad de certificación como Verisign o Comodo o muchos otros como ellos. Ellos te proporcionarán el certificado. O

2) Puede crear su propia Autoridad de certificación y firmar los certificados. Pero se recomienda hacer esto solo para uso personal.

Debería tener instalado Java y OpenSSL para realizar los pasos siguientes.

Para generar la Solicitud de firma de certificado, debe tener la clave. Para generar la clave, escriba el siguiente comando en CMD.

openssl genrsa salida privado Serverkey.key 1024

Esto generará un archivo "Serverkey.key". El tamaño de clave es 1024. Puede darlo según su requisito.

Ahora genere el archivo CSR con la ayuda del siguiente comando.

openssl req -nuevo tecla Serverkey.key salida privado ServerReq.csr -config /path/to/openssl.cnf

Una vez que se ejecuta este comando, se le pedirá a dar alguna información. Después de eso, encontrará el archivo CSR en su directorio. Puede enviar este archivo a la CA. En caso de que esté haciendo esto para su uso personal, y quiera tener su propia CA, cree una clave y CSR para su CA con la ayuda de los dos comandos anteriores. Después de tener su CSR para CA, puede firmar con la clave de CA con la ayuda del siguiente comando.

openssl x509 -req -days 365 -en CAReq.csr -signkey CAKey.key salida privado ca.crt

Una vez que tenga el certificado de CA, que se puede utilizar para firmar otros certificados.

openssl x509 -req -days 365 -CA ca.crt -CAkey CAKey.key -CAcreateserial -en ServerReq.csr salida privado server.crt

Se puede utilizar el mismo comando para el certificado de cliente también.

El navegador que es nuestro cliente aquí, aceptará el certificado de formato P12. El formato P12 es un archivo que contiene su certificado y la clave.

Para convertir el CRT a P12, utilice el siguiente comando.

openssl pkcs12 -export -en server.crt -inkey ServerKey.key cadena beta -CAfile ca.crt salida privado ServerCert.p12

En Tomcat, hay un almacén de confianza que tendrá de la AC certificado y otro es un almacén de claves que tendrá la clave del servidor y el certificado (archivo p12).

Para importar el certificado de CA al almacén de confianza, use el siguiente comando.

keytool -import -alias CertAuth -keystore caCerts.jks -file CA.crt

Puede dar un alias como lo desee. Tenga en cuenta la contraseña que proporciona cuando se le pregunta después de ejecutar el comando anterior. Usaremos esa contraseña en el archivo server.xml. Lo mismo aplica para el siguiente comando.

Para importar el certificado de formato p12 al almacén de claves, use el siguiente comando.

herramienta de claves -importkeystore -destkeystore tomcat.keystore -srckeystore -ServerCert.p12 -srcstoretype PKCS12 -alias 1

Ahora, cambie server.xml de Tomcat como el siguiente.

<Connector port="8443" 
      protocol="org.apache.coyote.http11.Http11NioProtocol" 
      SSLEnabled="true" scheme="https" secure="true" 
      truststoreFile="path/to/truststorefile" truststorePass="password" 
      keystoreFile="path/to/keystorefile" keystorePass="password" 
      clientAuth="true" sslProtocol="TLS" 
      /> 

Ahora, para importación de certificados formato P12 del Cliente al navegador. Luego, inicie el servidor Tomcat e intente acceder al https://localhost:8443. Puede visitar el blog para obtener la versión detallada de esta respuesta. Espero que esto ayude.

Cuestiones relacionadas