Generación de Certificados Autofirmados con Openssl
IMPORTANTE: Los certificados autofirmados NO son validos para conectase a ninguna ISP.
Dicho esto, este tutorial se hizo de manera de ilustración para ver el procedimiento para generar certificados X.509.
1-Generación del Certificado de Autoridad de Certificación(CA) Autofirmado
1a-Cree una llave privada (CA);
Código:
openssl genrsa -out ca_privatekey.pem 2048
1b-Cree un archivo de solicitud de certificado (CSR) con la clave privada CA. El "sujeto" (-subj) se tomaron del certificado CA del Arris;
Código:
openssl req -new -sha1 -key ca_privatekey.pem -out ca_cert.csr -subj "/C=US/O=Arris Interactive, L.L.C./OU=DOCSIS/OU=Suwanee, Georgia/CN=Arris Cable Modem Root Certificate Authority"
1c-Cree un archivo de configuración para extensiones con nombre ssl-extensions-x509.cnf y con la siguiente informacion;
Código:
# ssl-extensions-x509.cnf
[v3_ca]
basicConstraints = critical,CA:true,pathlen:0
keyUsage = keyCertSign, cRLSign
[v3_req]
1d-Cree el certificado CA autofirmado a partir de la solicitud de certificado y con la clave privada CA;
Código:
openssl x509 -extensions v3_ca -extfile ssl-extensions-x509.cnf -in ca_cert.csr -out ca_cert.cer -req -signkey ca_privatekey.pem -days 3650 -sha1
2-Generación del Certificado de CableModem(CM)
2a-Cree una llave privada (CM);
Código:
openssl genrsa -out cm_privatekey.pem 1024
2b-Cree un archivo de solicitud de certificado (CSR) con la clave privada de CM. El "sujeto" (-subj) contiene la mac del modem (CN);
Código:
openssl req -new -sha1 -key cm_privatekey.pem -out cm_cert.csr -subj "/C=US/O=Arris Interactive, L.L.C./OU=Suwanee, Georgia/CN=DE:AD:DE:AD:DE:AD"
2c-Cree un certificado CM a partir de la solicitud de certificado con la clave privada CM, el certificado CA autofirmado y la clave privada CA;
Código:
openssl x509 -req -sha1 -extensions v3_req -extfile ssl-extensions-x509.cnf -in cm_cert.csr -out cm_cert.cer -signkey cm_privatekey.pem -CA ca_cert.cer -CAkey ca_privatekey.pem -CAcreateserial -days 3650
3-Conversion de la clave privada CM y los certificados CA y CM a formato DER
Código:
openssl x509 -in ca_cert.cer -out ca_cert.cer.der -outform DER
openssl x509 -in cm_cert.cer -out cm_cert.cer.der -outform DER
openssl rsa -in cm_privatekey.pem -out cm_privatekey.der -outform DER
En el paso 2c para crear un certificado CM autofirmado se necesita;1-la clave privada CM.
2-el certificado CA autofirmado.
3-la clave privada CA.
Con estos componenetes se crea la firma que asegura la integridad del contenido del certificado.
Por otro lado, para crear un certificado CM valido para una mac especifica se necesita;1-la clave privada CM que se genera aleatoriamente (paso 2a).
2-el certificado CA valido que se consigue del modem.
3-la clave privada CA valida que se encuentra en el CMTS bien resguardada y super encriptada.
Como es muy improbable obtener la clave privada CA valida del CMTS. Se puede intentar recrear la clave privada CA, que es una llave de encriptación RSA de 2048 bits, a fuerza bruta o con algun otro metodo pero esto tomaria esta vida y la otra.
Si se modificar la mac del certificado CM valido, la firma no correponde y el certificado ya no es valido. El proceso es mas complejo. Se tiene que cambiar también la firma y para eso necesitamos la clave privada CA valida.
En resumen crear un certificado CM valido es altamente improbable para no decir que imposible.
Fuente: https://www.openssl.org/docs/man1.0.2/man1/