Supongamos que he firmado mi clave pública con una CA de confianza y la CA me proporcionó un certificado firmado, y quiero que las aplicaciones cliente verifiquen este certificado. El proceso general es que el cliente verifica la clave pública de la CA y no la mía, por lo que ni siquiera necesito transmitir la clave pública, pero ¿cuál es la mejor práctica para implementar esto en una aplicación cliente de C #?
Mi enfoque actual elegido es que en la aplicación del servidor, estoy almacenando el certificado (que contiene mi clave privada) en mi tienda local, que uso para firmar datos. Luego, en la aplicación cliente, estoy cargando el almacén raíz del usuario actual y paso el nombre del certificado de la CA que firmó mi certificado, y si esta CA se encuentra en la tienda, recupero su clave pública y verifico que ese. Si mi clave pública ha sido firmada por la CA, entonces la verificación debería tener éxito, de lo contrario fallará. ¿Es esta la forma correcta de implementarlo? Si no, por favor proporcione mejores soluciones.
Las siguientes son mis preguntas con respecto a mi enfoque elegido:
-
¿Puede cambiar el nombre del certificado de la CA? Si es así, tendría que cambiarlo en codigo Si esto puede cambiar, ¿qué más debo usar para buscar el certificado? Tal vez el número de serie?
-
¿Puede alguien crear el mismo nombre de certificado? Estoy asumiendo que tu puede. Por ejemplo, un hacker puede crear un nombre de certificado que es lo mismo que una CA establecida, pero obviamente depende del usuario agregarlo a la tienda de confianza en su máquina. Si él no lo hace, entonces el El hacker no tiene ningún poder en absoluto. Además, no creo que dos certificados pueden tener el mismo número de serie.
-
Si mi clave privada es secuestrada y revoco el certificado, La verificación debe comenzar a fallar en las aplicaciones del cliente. Eso Comenzará a verificar con éxito una vez que comience a firmar los mensajes. con el certificado recién emitido por la CA. ¿Es correcto?
Finalmente, actualmente no poseo un certificado firmado, por lo que no puedo probar esto. Es por eso que estoy haciendo estas preguntas, de modo que si este enfoque es correcto, puedo proceder a comprar un certificado ya que conozco el camino a seguir. También, con suerte, esta pregunta podría ayudar a otras personas con el mismo problema.
Gracias de antemano.