¿Las CA ofrecen un servicio en el que una aplicación puede solicitar la clave pública de alguien?
Intento hacer esto, pero no estoy seguro de si es correcto (se agradecerán las mejores maneras de hacerlo):
- alguien con un certificado de una CA y es un usuario autorizado en mi aplicación ingresa los datos a una página web (de forma)
- sus datos de entrada se guardan en los campos mysql
- la aplicación (a través de php y openssl) hash y firma los datos en un resumen de mensaje firmado * editado: 3: la aplicación permite enviar al usuario el hash y firmar esos datos en un resumen de mensaje firmado *
- el resumen del mensaje firmado también se guarda en la misma fila de la tabla mysql # 2 (? en un campo binario?)
- los espectadores de aplicaciones deben estar seguros de que esta fila de datos provino de la misma persona en el # 1
- la aplicación (a través de php y openssl) vuelve a hacer hash de los datos utilizando el mismo algoritmo de hash utilizado en la clave pública # 3 y # 1
- si los hashes no coinciden, algo fue manipulado y se alerta al espectador
preguntas: ¿Debo tener otro campo para aceptar la clave pública de # 1 y guardarla con los datos y el resumen del mensaje firmado también? ¿O puedo simplemente pedirle a la CA la clave pública de la persona en el # 1? (pasando a la CA el número de serie del certificado que la aplicación guardó anteriormente con los datos y el resumen firmado)
¿o debo simplemente guardar el certificado completo en sí mismo (del cual se puede extraer la clave pública de todos modos) incluso si el requisito de almacenamiento de datos será mayor que si solo se guardara la clave pública)? en ese caso, ¿debo guardar el certificado en un campo mysql blob?
gracias por cualquier comentario o clientes potenciales.
matsakaw
@thomas: gracias por la aclaración sobre el rol de CA y la autenticación basada en certificados. Lo siento por mi frase del paso 3 que implicaba erróneamente que será la aplicación la que firmará los datos.
@kiBytes y @el viejo: edité mi pregunta.
Estaba pensando que la aplicación permitirá al usuario que envía el hash y firmar los datos que está enviando en un resumen de mensaje firmado.
Estaba pensando en la aplicación que permite la ejecución de estos comandos (del lado del cliente): para permitir que el usuario registrado firme: $ openssl dgst -sha256 -sign log-user.key -out in.txt.sha256 in.txt
para permitir que cualquier espectador verifique: $ openssl dgst -sha256 -verify signer-pub.pem -signature in.txt.sha256 in.txt
@el viejo: gracias, leeré en servidores de sellos de tiempo como se sugiere.
gracias también a todos los demás que respondieron. sus respuestas son muy apreciadas.