Giter Club home page Giter Club logo

easy-rsa-lab's Introduction

Prerequisitos

  1. FQDN configurado en sus sistema
  2. Acceso a Internet en una VM ubuntu 20.04
  3. Paquete instalado de git
  4. FQDN Accesible desde su estación de trabajo (puede temporalmente configurar en /etc/hosts o similar)

Generar CA y Certificados utilizando Easy-rsa-lab

  1. Clonar el repositorio
git clone https://github.com/OpenVPN/easy-rsa.git
  1. Ingresar al directorio de easyrsa3
cd easy-rsa/easyrsa3
  1. Inicializar
./easyrsa init-pki
  1. Personalizar configuración

Modificar archivo pki/vars

set_var EASYRSA_DN      "org"

set_var EASYRSA_REQ_COUNTRY     "GT"
set_var EASYRSA_REQ_PROVINCE    "Guatemala"
set_var EASYRSA_REQ_CITY        "Guatemala"
set_var EASYRSA_REQ_ORG         "PSI"
set_var EASYRSA_REQ_EMAIL       "email"
set_var EASYRSA_REQ_OU          "OSSEC2"

set_var EASYRSA_ALGO            rsa
set_var EASYRSA_NS_COMMENT      "CA PoC"

  1. Generar CA

Common Name: Test-PSI CA

./easyrsa build-ca
  1. Consultar CA Creado
./easyrsa show-ca

  1. Consultar Certificado CA utilizando openssl

Issuer:

openssl x509 -in pki/ca.crt -issuer -noout

Subject:

openssl x509 -in pki/ca.crt -subject -noout

EndDate:

openssl x509 -in pki/ca.crt -enddate -noout
  1. Generar CSR (EasyRSA)
./easyrsa gen-req FQDN

Por defecto la llave esta encriptada, si desea generarla sin password ejecutar:

./easyrsa gen-req FQDN nopass
  1. Consultar Llave Privada
head -n1 pki/private/FQDN.key 

Mostrará: -----BEGIN ENCRYPTED PRIVATE KEY-----, si está encriptada.

Puede eliminar el password utilizando:

openssl rsa  -in pki/private/FQDN.key -out pki/private/FQDN-no-pass.key

Mostrará: -----BEGIN RSA PRIVATE KEY-----, si no está encriptada

  1. Consultar CSR
./easyrsa show-req FQDN
  1. Firmar Certificado para WebServer TLS
./easyrsa sign-req server FQDN
  1. Consultar Certificado
./easyrsa show-cert FQDN
  1. Validar firma de Certificado por el CA
openssl verify -CAfile pki/ca.crt pki/issued/FQDN.crt

Debe mostrar: pki/issued/FQDN.crt: OK

Utilizar el Certificado en un WebServer

  1. Instalar apache2
sudo apt-get install apache2
  1. Activar modulo de ssl y sitio por defecto ssl
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo systemctl restart apache2
  1. Consultar Certificado por defecto Apache
openssl s_client -connect localhost:443 -showcerts

Buscar en la salida el texto:

  • verify return
  • issuer
  • subject
  • -----BEGIN CERTIFICATE-----
  • -----END CERTIFICATE-----

Puede observar que no existe un Certificado que valide al emisor (Issuer), en este caso es un certificado autofirmado.

  1. Consultar el servicio web en HTTPS
curl -I -v  https://FQDN

Este comando devuelve el resultado:

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

Al ser un certificado no confiado por algún CA, cuyo certificado se encuentre en el sistema, no es posibe conectarnos sin desactvar la verificación del certificado.

curl -I -v  https://FQDN -k
  1. Remplazar certificado por defecto por el certificado firmado por el nuevo CA.
sudo cp pki/private/FQDN.key /etc/ssl/private/ 
sudo cp pki/issued/FQDN.crt /etc/ssl/certs/
sudo sed -i 's/ssl-cert-snakeoil/FQDN/g' /etc/apache2/sites-available/default-ssl.conf
sudo sed -i 's/FQDN.pem/FQDN.crt/g' /etc/apache2/sites-available/default-ssl.conf
sudo systemctl restart apache2
  1. Repita el paso 3

Buscar en la salida el texto:

  • verify return
  • issuer
  • subject
  • -----BEGIN CERTIFICATE-----
  • -----END CERTIFICATE-----
  1. Repita el paso 4 y 5

El Certificado ha sido actualizado, pero aun no se valida el CE, ya que este no es parte de los CAs reconocidos por el sistema.

  1. Agregar CAs al sistema (Linux Shell)
sudo cp pki/ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  1. Repita el paso 4

Deberá reconocer el certificado emitido por un CA reconocido por el Sistema Operativo.

  1. Agregue el CA a su Cliente (Firefox)

Settings -> Certificates -> View Certificates -> Authorities -> Import

Importar

Verificar Certificado

Verificar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.