Skip to content

Instantly share code, notes, and snippets.

@isyutaro
Last active December 13, 2018 21:37
Show Gist options
  • Save isyutaro/628d95c2285a9d826832ee930777ce33 to your computer and use it in GitHub Desktop.
Save isyutaro/628d95c2285a9d826832ee930777ce33 to your computer and use it in GitHub Desktop.
create ssl certificate

Generacion de Request.

Para solicitar un certificado, necesitamos crear la peticion y al mismo tiempo la llave que tendra nuestro certificado.

Creamos unas variables para el dominio

DOMAIN=midominio.com

Creamos Request (CSR)

openssl req -new -newkey rsa:2048 -sha256 -nodes -out $DOMAIN.csr -keyout $DOMAIN.key

Al crear el request, nos pedira informacion sobre el certificado.

Country Name (2 letter code) [AU]:
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) []:
Email Address []:

Tambien nos pedira unos extras. Que los podemos omitir.

A challenge password []:
An optional company name []:

Esto nos genera dos archivos, un .csr y un .key

Es importante no perder el .key ya que ese es la llave para cifrar el certificado y va configurado en el cervidor web.

Enviar CSR a certificadora

Nuestor CSR lo enviamos a la certificadora de confianza. Puede ser:

Entre muchos otros.

Configurar Servidor Web

Una vez que la certificadora nos devuelve el certificado firmado, vamos a configurar el servidor web, en este caso utilizaremos nginx

Basados en la certificadora Thawte, nos envia dos archivos.

  • Certificado (ssl_certificate.crt)
  • Intermediarios (IntermediateCA.crt)

Para configurar nginx, necesitamos dos archivos. El certificado y la llave.

Para tener el certificado tendremos que concatenar el certificado de nuestro dominio con el certificado de los intermediarios.

Antes concatenar, debemos asegurarnos que quede primero el certificado de nuestro dominio.

DOMAIN=midominio.com
cat ssl_certificate.crt > $DOMAIN.crt
cat IntermediateCA.crt >> $DOMAIN.crt

Con el certificado concatenado y la llave, vamos a copiar los archivos a nuestro servidor.

  • dominio.com.crt
  • dominio.com.key

Revisar hash

Para cerciorarse de que los tres archivos pertencen al mismo request/dominio, hacemos lo siguiente:

openssl x509 -noout -modulus -in $DOMAIN.crt | openssl md5
openssl rsa -noout -modulus -in $DOMAIN.key | openssl md5
openssl req -noout -modulus -in $DOMAIN.csr | openssl md5

El hash debe de ser el mismo en los tres

Los movemos a su ruta respectiva

DOMAIN=midominio.com
mv $DOMAIN.key /etc/ssl/private/
chmod 400 /etc/ssl/private/$DOMAIN.key
mv $DOMAIN.crt /etc/ssl/certs/
chown root:root /etc/ssl/private/$DOMAIN.key
chown root:root /etc/ssl/certs/$DOMAIN.crt

nginx

Ahora editamos nuestro archivo de configuracion.

vim /etc/nginx/sites-available/dominio.com

Agregar o midificar lo siguiente:

# ...
    server {
    listen 443;
    server_name dominio.com;

    ssl on;
    ssl_certificate /etc/ssl/certs/dominio.crt;
    ssl_certificate_key /etc/ssl/private/dominio.key;
# ...

listo.

Podemos revisar aqui:

https://www.digicert.com/help/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment