Tengo que generar una CA raíz autofirmada y usarla para emitir certificados de forma programática. Soy nuevo en seguridad y certificados y creo que me faltan algunas piezas necesarias para hacer que todo funcione en conjunto.
A mi entender, necesito generar un certificado X509 usando Java keytool para actuar como CA raíz y luego usar su clave privada para firmar los nuevos certificados que estoy generando usando Bouncy Castle en tiempo de ejecución.
Generé un nuevo certificado usando keytool y el siguiente comando:
keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048
Cuando intenté leer este almacén de claves y el certificado programáticamente, descubrí que la clave privada del certificado no está almacenada en el almacén de claves o que no había forma de leer la clave privada.
Tengo las siguientes preguntas:
1) ¿Cómo genero una CA raíz utilizando keytool?
2) ¿Cuál debería ser el formato de salida de la CA raíz para que pueda leer la clave privada? ¿Mi enfoque actual de escribir el certificado en un almacén de claves es incorrecto?