¿Es esta forma de SSL del lado del cliente lo suficientemente segura como para mantener a los hackers alejados de mi aplicación web?

5

Me pregunto si los siguientes pasos son suficientes para proteger mi servicio en la nube, en el sentido de que los usuarios no autorizados no pueden jugar con mi aplicación web.

En otras palabras, ¿es posible pasar por alto este tipo de protección?

Así que los pasos son:

Crear una raíz de autoridad de certificación (que representa este servidor)

Organización & Nombre común: algún identificador humano para esta CA del servidor.

openssl genrsa -des3 -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.crt

Crear la clave del cliente y la CSR

Organización & Nombre común = nombre de la persona

openssl genrsa -des3 -out client.key 4096
openssl req -new -key client.key -out client.csr
# self-signed
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt

Convertir la clave del cliente a PKCS

Para que se pueda instalar en la mayoría de los navegadores.

openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

Convertir la clave del cliente en PEM (combinado)

Combina client.crt y client.key en un solo archivo PEM para programas que utilizan openssl.

openssl pkcs12 -in client.p12 -out client.pem -clcerts

Instale la clave de cliente en el dispositivo cliente (SO o navegador)

Utilice client.p12. Las instrucciones reales varían. Instale el certificado CA en nginx

Para que el servidor web sepa que debe solicitar (y validar) la clave de cliente de un usuario contra el certificado de CA interno.

ssl_client_certificate /path/to/ca.crt;
ssl_verify_client optional; # or 'on' if you require client key

enlace

Mi host virtual se ve así:

SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile "cert/ca.crt"

¿Alguna sugerencia?

    
pregunta Mirsad 31.03.2016 - 07:53
fuente

1 respuesta

2

Sí, esto es lo suficientemente seguro.

Sugeriría verificar:

perl: $ENV{'SSL_CLIENT_M_SERIAL'}

en tu aplicación web. Esto significa que tendrá que tener una base de datos de usuarios válidos, y posiblemente los derechos que tienen en la aplicación web.

Hacer esto en lugar de hacer revocaciones a la "manera PKI" es mejor, ya que primero no necesita administrar una CRL, y también es más fácil poner lo que los usuarios realmente pueden hacer, por lo que puede tener los usuarios que tienen derechos diferentes, por ejemplo, algunos usuarios pueden ser administradores, algunos pueden ser moderadores y otros simplemente usuarios regulares, y algunos son usuarios limitados.

Entonces, primero, su certificado debe estar firmado por la CA del cliente, pero también, su certificado serie debe estar en la base de datos como válido. Asegúrese y tenga cuidado para no generar varios certificados de usuario con la misma serie. La serie también se puede usar como un UserID numérico en módulos que requieren un UserID numérico.

    
respondido por el sebastian nielsen 31.03.2016 - 09:33
fuente

Lea otras preguntas en las etiquetas