Crear certificado autofirmado para un balanceador en AWS

Publicado por Víctor del Barco el

Amazon AWSSeguridad

En ciertas ocasiones, a pesar de la facilidad de Amazon AWS para gestionar los certificados, podemos necesitar autofirmarnos uno, ya sea bien por que no gestionamos nosotros mismos el dominio y necesitamos que alguien externo lo valide, o bien porque lo necesitemos para alguna prueba interna.

Si solicitamos un certificado, el responsable del mismo ha de validarlo. De esta forma nos evitamos esa tarea.

Para generar el certificado autofirmado, necesitaremos un Linux con openssl instalado como único requisito.
Con un usuario root haremos los siguiente. Nos pedirá, una frase (opcional) para securizar el almacén, la confirmamos:

root@ip-10-10-10-214:~# openssl genrsa -des3  -out keyfile.key 1024

Generating RSA private key, 1024 bit long modulus  
...++++++
...........................++++++
e is 65537 (0x10001)  
Enter pass phrase for keyfile.key:  
Verifying - Enter pass phrase for keyfile.key:  
root@ip-10-10-10-214:~#  

Ahora deberíamos de generarnos el autorequest.
Rellenamos los cambos obligatorios. Al menos tenemos que introducir el país y el Common Name que es el que aparecerá en el certificado:

root@ip-10-10-10-214:~# openssl req -nodes  -newkey rsa:2048 -keyout keyfile.key -out keyfile.csr  
Generating a 2048 bit RSA private key  
.................................................................+++
...........................................+++
writing new private key to 'keyfile.key'  
-----
You are about to be asked to enter information that will be incorporated  
into your certificate request.  
What you are about to enter is what is called a Distinguished Name or a DN.  
There are quite a few fields but you can leave some blank  
For some fields there will be a default value,  
If you enter '.', the field will be left blank.  
-----
Country Name (2 letter code) [AU]:ES  
State or Province Name (full name) [Some-State]:  
Locality Name (eg, city) []:  
Organization Name (eg, company) [Internet Widgits Pty Ltd]:  
Organizational Unit Name (eg, section) []:  
Common Name (e.g. server FQDN or YOUR name) []:TESTCERT  
Email Address []:

Please enter the following 'extra' attributes  
to be sent with your certificate request  
A challenge password []:  
An optional company name []:  
root@ip-10-10-10-214:~#  

Una vez lo tenemos, generamos el certificado (autofirmado). Ojo con los days de vigencia. Podemos ponerle 10 años (2.650 días):

openssl x509 -req -days 3650 -in keyfile.csr -signkey keyfile.key -out keyfile.crt

root@ip-10-10-10-214:~# openssl x509 -req -days 3650 -in keyfile.csr -signkey keyfile.key -out keyfile.crt  
Signature ok  
subject=/C=ES/ST=Some-State/O=Internet Widgits Pty Ltd/CN=TESTCERT  
Getting Private key  

Ahora sólo nos quedaría extraer la clave y el certificado para ponerlas en el balanceador (nos solatará un chorro enorme. La parte que nos interesa es donde empieza: -----BEGIN RSA PRIVATE KEY-----)

Primero la clave:

openssl rsa -in keyfile.key -text  
bla bla bla  
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAmLingfaxOt7ykCqiAA+YwfruxXlKVbDzsAnsAGRiSi3U3j8s  
41G7M9A0b9q0saHNqOt39JsPLl/8bKdOxx0L7wcIJWmeMFrcYST/I4B3+TLghoRK  
dDye2baYM/8/t08e+pSrC/dnPq+osi0jRQjQLz1AgIq7+Gm3QP2g64H3rFtIbEKk  
nchpaHnsr2PiOz9fGhBIqROGQ2hl2bMbadrVg9ix8swISP2y4qGNlXVlyX0iq1qr  
t7sRBTE5qwy3xQ3A8OIRMC4DOtw0m+gXTUUSfiw1i9BhWnGm+ONWeUpY15kiP9NF  
B/EVFrxlhfrowib0ejdsFiC4DoXXwFK5cMoEwwIDAQABAoIBABQWVZH2jKEdqfHk  
aaJwars48ibvKSPUPnktFOmISpVPKeyBirnrih/qhrsfnRywF4jcT87QhlKnNWBl  
MStnWqZ52kxxc+kQSmRMpXJZ923Dj1yiEdjwEES6i5JrREosEfsLiuPsCpxoJlwp  
K7ZszlUoTU+a79ZgsUXPFldjpNv6gagtJFuNlfYxNGH8hYcyKMeB7tgfcI1fgtMc  
EAb6dxzjcfk/FLVTx8JHIoG54uaH7VA9nhLMOKoPdbirVyJvXELv3T8aazGUtRz8  
ZDPSHv+Mmez38unuEUAmi7lSR1r+oOEA18bdNqcoQpV8r2lIWJojhIrSjMX+SNAQ  
yvn2dKECgYEAyrgob1UG5FbGoyevbOtTxuUvbdg7DsDsyUIhLBGlnMBeOaxZ8cyL  
Wc+FR/Duc9EuXx1y+6P3PgECOGr6OsKUTIljHcXGuuyxU9KIRRr4CKFuZ37QG2+D  
oR+uaaUeDynUn84D5d3Mn/3gpQUauewE/iXL/AQiW3D5NcmZ4nJhqpcCgYEAwNxo  
tvxuy2bH/+bzUH6djEcXjHhGzlLYQ8aGy0KDcc28yldIc7oWA10IaQSAJ8VhTN/n  
gBKCRCimR7Dk/wkr69eiG7ehERD95OTjw+9Z5z5mzeKnqBqn1xjEbm+7psZq8Wic  
n62eDpE6f1pKHr2rHN0lvsLJCRZj7AVnnQ872LUCgYEApX+zgzDnb4Nop8q+bS2y  
N67kCcl+bY0Twzs52cCOdGqYgn0y8TUMj0Xcid8ozWT5dq2UMdyq/PPV3Dl6EH7K  
k7GWObg9hl22Z7h5h/F8jY89k0D0pXFlBSXYPmePItIDxHNsuz1Y0UVzIUYJi8Ak  
U1iIMDcv1Xdl/YOZHkZDdgECgYEAohshcV1xC0rTJQfM0IX8iyJeatXWPipoWV+P  
gV3g+lFCNJl07sElK6KRJSSBS+yeQm2ZOo9UK1I3od7QPIZLAqt3OPD6U0wC/Nhf  
khunZ7WN19SBs8zj8uqAgYstIZt53Hxf2d+nEPuFPfJ4hqpKH7LKvTMgo6DMUGCi  
nONnHFkCgYAR5CS90dNatwSnGXaoGPKLf9RdxLEsr5QzMFxXvqWWzgcPcZONHrcc  
J3NiHbPt3aAgj7xhUED4N16Nx52L+ALHKf5MfUSaV8Nzooq/KAa2H9FZMtDB/VHZ  
BYRkmaMQ2kMlam+gQ1lMb50yVtSkuvQE5pBVwi8ckRQiewS4xOWcZg==  
-----END RSA PRIVATE KEY-----

Ahora cogemos dicho texto y lo metemos en la private key:

Y hacemos lo mismo con la clave pública del certificado:

root@ip-10-10-10-214:~# openssl x509 -inform PEM -in keyfile.crt  
-----BEGIN CERTIFICATE-----
MIIDLDCCAhQCCQCtywllUTb8LTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJF  
UzETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0  
cyBQdHkgTHRkMREwDwYDVQQDDAhURVNUQ0VSVDAeFw0xNzA0MTEwODIwMzdaFw0y  
NzA0MDkwODIwMzdaMFgxCzAJBgNVBAYTAkVTMRMwEQYDVQQIDApTb21lLVN0YXRl  
MSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxETAPBgNVBAMMCFRF  
U1RDRVJUMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmLingfaxOt7y  
kCqiAA+YwfruxXlKVbDzsAnsAGRiSi3U3j8s41G7M9A0b9q0saHNqOt39JsPLl/8  
bKdOxx0L7wcIJWmeMFrcYST/I4B3+TLghoRKdDye2baYM/8/t08e+pSrC/dnPq+o  
si0jRQjQLz1AgIq7+Gm3QP2g64H3rFtIbEKknchpaHnsr2PiOz9fGhBIqROGQ2hl  
2bMbadrVg9ix8swISP2y4qGNlXVlyX0iq1qrt7sRBTE5qwy3xQ3A8OIRMC4DOtw0  
m+gXTUUSfiw1i9BhWnGm+ONWeUpY15kiP9NFB/EVFrxlhfrowib0ejdsFiC4DoXX  
wFK5cMoEwwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCDZvKAsnrsXTj5KQ5Eax3S  
bUUPp0QzyW4mwcIKzblozuTtJjolv4Djb2NSFIuZCi04q5oFQYNLoKPYzDCLlr5z  
zvyati3O+PXeNa2NKJszVuoUg6ao0S1xTIATUUgouK+Or5ZVoDd7ZVZ24TFBDw2N  
F0OAYT9/UOmlNg/FH45DbKZ04MEP0Aoip6n2QU6HwEQU+TMockwrmGL4+mscSkWq  
LA0UzLGCTpMDuGo6Gpq436+fI8srKDOgJpManlppQj/d29muw7CYhb41VWJG0ic6  
KQ1jXD5LAnDEJ4siAdXA4lNPdw+2H8+KZyJAMNFdptJ18IhK/a7FcbfCZQG9wT8Y  
-----END CERTIFICATE-----

Y lo pegamos en su sitio correspondiente:

Y con esto y un bizcocho, tenemos un balanceador con un autofirmado y 0 problemas !

Tenéis más información en:
https://aws.amazon.com/es/certificate-manager/

Si te ha gustado este post, ¡síguenos en Twitter!

Autor

Víctor del Barco

IT Specialist, spent 16 years at IBM and right now working at atSistemas. Focused on webserver/appservers. AWS Certified Solution Architect