Generar un CSR (Certificate Signing Request) es necesario para poder firmar con https una web.
Para ello seguimos los siguientes pasos en el servidor que queremos firmar:
Instalando OpenSSL
En Ubuntu:
apt-get install openssl
o en Centos:
yum install openssl
Creamos la carpeta para almacenar las salidas:
mkdir ~/domain.com.ssl/
cd ~/domain.com.ssl/
Generando la RSA key
openssl genrsa -out ~/domain.com.ssl/domain.com.key 2048
Creando el CSR
openssl req -new -sha256 -key ~/domain.com.ssl/domain.com.key -out ~/domain.com.ssl/domain.com.csr
Pedira algunos datos que deberan ser los mismos que ocupaste en la entidad certificante de donde estes adquiriendo el SSL.
Generando RSA y CSR para Subdominios y WWW
Esto funciona bien si queremos firmar solo un dominio, pero existen veces en que queremos firmar el dominio y los subdominios de la web, para ello usamos AlternativeNames(Nombres Alternativos), por ejemplo: incluir el dominio www y no-www en el mismo certificado.
Entonces al momento de adquirir el SSL especificamos el “Common Name” como:
*.domain.com
Generando el RSA y CSR con AlternativeNames
openssl req -new -sha256 -nodes -out \*.domain.com.csr -newkey rsa:2048 -keyout \*.domain.com.key -config <(
cat <<-EOF
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C=US
ST=New York
L=Rochester
O=Corporation Name
OU=Testing Domain
emailAddress=your-administrative-address@your-awesome-existing-domain.com
CN = www.domain.com
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = www.domain.com
DNS.2 = domain.com
DNS.3 = *.domain.com
DNS.4 = *.*.domain.com
DNS.5 = *.*.*.domain.com
EOF
)
De esta forma certificaras hasta 3 niveles de subdominios.
Se generaran 2 archivos, el .csr y el .key