La clave privada es el secreto que lo identifica a usted, cualquier firma o verificación de su identidad específica necesita la clave privada. Por lo tanto, cualquier operación que genere algo que se derive de su identidad lo requerirá.
Además, aquí no está creando un certificado, está creando una solicitud de firma de certificado, algo que le entregaría a otra persona a la que luego generaría el certificado para otorgarle el acceso.
si desea crear un certificado x509 autofirmado, debe agregar el parámetro -x509, algo como esto:
openssl req -x509 -nodes -days 5000 -newkey rsa:2048 -keyout mypem.key -out mycert.crt
- donde días son por cuánto tiempo es válido el certificado (5000 es efectivamente
indefinido)
- los nodos omiten el negocio de contraseñas (omitir para probar, omitir para cualquier cosa real)
- y también genera la clave y el certificado para su uso posterior
Y @bartonjs es correcto, la clave privada a la clave pública es posible, la clave pública a la clave privada no. Es por eso que puede entregar la clave pública y nadie puede usarla para hacerse pasar por usted. La clave privada debe ser secreta en todo momento.
Si planea actuar como el cliente que desea obtener acceso al servidor y también al servidor que concede la solicitud, primero deberá configurar su autoridad de certificación en el servidor y los certificados del servidor.
Somone on stack overflow ya tiene una gran respuesta:
Pero el juiste básico es que configuras la CA y crt del servidor y luego haces algo como esto en el servidor:
openssl x509 -req -days 30 -in request.csr -CA ca.crt -CAcreateserial -CAkey ca.key -out signedrequest.crt
le devuelve el "signedrequest.crt" a la persona que lo solicitó.
Olvidé mencionar, deshacerme de -nodos en mi comando anterior, omite el proceso de contraseña. Bueno para probar, malo para seguridad. Sólo FYI.