Note:

Uso de certificados de OCI para emitir un certificado interno y alojar un sitio web protegido TLS/SSL en el servidor Nginx

Introducción

En este tutorial, describimos cómo utilizar certificados de Oracle Cloud Infrastructure (OCI) para emitir un certificado interno para alojar un sitio web protegido de seguridad de capa de transporte (TLS)/capa de conexión segura (SSL) en el servidor de Nginx. OCI Certificates es un servicio para crear y gestionar certificados TLS. El servicio permite a las organizaciones crear jerarquías de autoridad de certificación (CA) privadas y certificados TLS que se pueden desplegar y renovar automáticamente en el arrendamiento del cliente, integrados con servicios de OCI como OCI Load Balancer y OCI API Gateway. También podemos utilizar este servicio para generar certificados para nuestros servidores web internos alojados en Nginx.

Para activar el cifrado TLS/SSL en el servidor Nginx, necesita un certificado TLS/SSL. La solicitud de firma de certificado (CSR) es una solicitud enviada a una CA para obtener un certificado. La CSR contiene información sobre su organización y el dominio para el que solicita el certificado. La CA verifica esta información antes de emitir el certificado TLS/SSL. La verificación de esta información garantiza que el certificado se expida al propietario legítimo del dominio. Cuando crea una CSR, también genera una clave privada. Esta clave privada se utiliza para descifrar los datos cifrados con la clave pública correspondiente. Es crucial generar esta clave de forma segura y mantenerla a salvo.

Objetivos

Requisitos

Tarea 1: Instalación de la CLI de OCI en la instancia informática de OCI

Tarea 2: Creación de una autoridad de certificación (CA) en OCI

Cree una autoridad de certificación (CA) mediante el servicio OCI Certificate que se utilizará para emitir certificados internos para nuestro sitio web. Para obtener más información sobre la configuración de CA, consulte Creating a Certificate Authority.

O bien:

Cree una CA mediante la CLI de OCI. Utilice el comando oci certs-mgmt certificate create-certificate-issued-by-internal-ca y los parámetros necesarios para crear una CA raíz. Para obtener más información, consulte create-certificate-issued-by-internal-ca.

Formato de Comando:

oci certs-mgmt certificate-authority create-root-ca-by-generating-config-details --compartment-id <compartment_OCID> --name <CA_display_name> --subject <CA_subject_information> --kms-key-id <Vault_encryption_key_OCID>

Comando de muestra:

oci certs-mgmt certificate-authority create-root-ca-by-generating-config-details --compartment-id ocid1.compartment.oc1..aaaaaaaaxxx --name MyRootCA --subject file://subject.json --kms-key-id ocid1.key.oc1.iad.abcxxxxx

Nota: El asunto es un tipo complejo cuyo valor debe ser JSON válido. El valor se puede proporcionar como una cadena en la línea de comandos o se puede transferir como un archivo con la sintaxis file://path/to/file.

Archivo subject.json de ejemplo.

subject.json
{
  "commonName": "MyRootCA"
}

Tarea 3: Creación de una solicitud de firma de certificado (CSR) mediante OpenSSL

Cree una CSR en el servidor Nginx, que también creará una clave privada en el mismo servidor. Este es un enfoque recomendado que nos proporciona una forma estandarizada de enviar la CA en su clave pública, así como información que identifica su compañía y nombre de dominio. La generación de la CSR directamente en el servidor Nginx le permite integrar sin problemas el certificado TLS/SSL una vez que se emite.

  1. Vaya a cd /etc/pki/tls/private/.

  2. Cree un archivo denominado mywebsitecert.cnf para especificar parámetros como el nombre alternativo de asunto (SAN) para el que va a solicitar el certificado.

    Nota: La extensión SAN permite asociar identidades adicionales, como nombres de dominio o direcciones IP, al asunto del certificado. El uso de la extensión SAN es una práctica estándar para los certificados SSL, y está en camino de reemplazar el uso del nombre común.

    Archivo de ejemplo:

    [req]
    distinguished_name = req_distinguished_name
    req_extensions = v3_req
    prompt = no
    
    [req_distinguished_name]
    C = IN
    ST = Telangana
    L = Hyd
    O = OU
    CN = www.mywebsite.com
    
    [v3_req]
    basicConstraints = CA:FALSE
    keyUsage = nonRepudiation, digitalSignature, keyEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = mywebsite.com
    IP.1 = 1.2.3.4
    
    
  3. Utilice el comando siguiente para crear una CSR.

    Deberá proporcionar el archivo mywebsite.csr a una CA para obtener el certificado SSL. Lo utilizarán para generar el certificado SSL para su dominio. Utiliza la configuración ya proporcionada mediante el archivo mywebsitecert.cnf.

    Mantenga el archivo private.key seguro porque se utiliza para descifrar los datos cifrados con la clave pública correspondiente.

    openssl req -out mywebsite.csr -newkey rsa:4096 -nodes -keyout private.key -config mywebsitecert.cnf
    

Tarea 4: Creación de un certificado mediante la CA

Para crear un nuevo certificado mediante la CLI de OCI, necesitará que se instale .pem del certificado en el servidor de Nginx.

  1. Convierta el formato del archivo csr al formato .pem.

    openssl req -inform DER -in mywebsite.csr -out mywebsite.pem
    
  2. Ejecute el siguiente comando para crear un certificado.

    Formato de Comando:

    oci certs-mgmt certificate create-certificate-managed-externally-issued-by-internal-ca --compartment-id  <compartment_OCID>  --csr-pem <csr_pem> --issuer-certificate-authority-id <CA_OCID> --name <Certificate-name>
    

    Comando de muestra:

    oci certs-mgmt certificate create-certificate-managed-externally-issued-by-internal-ca --compartment-id ocid1.compartment.oc1..aaaaaaaaxxx --csr-pem mywebsite.pem --issuer-certificate-authority-id ocid1.certificateauthority.oc1.iad.aaaxxxx
    --name mywebsite.com
    

Tarea 5: Descarga del Certificado y la Cadena de Certificados

Los archivos pem del certificado se pueden obtener directamente de la consola de OCI, acceder a Identidad y seguridad, Certificados, Certificado, Ver contenido y descargar el contenido de certificate-pem y certificate-chain-pem.

Cree un único archivo combinando el contenido de ambos archivos, certificate-pem en la parte superior y certificate-chain-pem en la parte inferior del archivo. Puede nombrarlo como ca_certificate.pem.

O bien:

También puede recuperar el certificado desde la CLI de OCI mediante el siguiente comando.

Formato de Comando:

oci certificates certificate-bundle get --certificate-id <Certificate_OCID> > certificate.crt

Nota: Copie el identificador de Oracle Cloud (OCID) del certificado.

Tarea 6: Instalación y configuración del servidor Nginx con el certificado

  1. Instale Nginx en una instancia informática. Para obtener más información, consulte Install Nginx.

  2. Abra un explorador web y acceda a la página web mediante https://your-server-ip. Compruebe si hay advertencias o errores de seguridad que pueda mostrar el explorador.

    Imagen

    Muestra una advertencia de seguridad, por lo que necesitamos instalar el certificado y modificar el archivo conf en el servidor Nginx.

  3. Copie los archivos certificate.pem y ca_certificate.pem descargados de la consola de OCI o la CLI de OCI en el servidor de Nginx.

  4. Configure el servidor de Nginx editando su archivo de configuración, ubicado en /etc/nginx/conf.d.

    Imagen

  5. Reinicie el servidor de Nginx.

Tarea 7: Prueba de si HTTPS está funcionando

Hemos colocado el certificado de CA (ca_certificate.pem) en la carpeta de autoridad de certificación raíz de confianza en la máquina local, almacén de certificados en nuestras máquinas cliente utilizadas para acceder a este sitio web. Esto se hace porque las CA creadas por los certificados de OCI son CA privadas y, por lo tanto, no son de confianza para los exploradores, por lo que necesitamos agregar la CA raíz y la CA intermedia (si se utilizan) en el almacén raíz de confianza o el almacén intermedio en todas las máquinas locales que intentan acceder al sitio web.

Abra un explorador web y acceda a la página web mediante https://your-server-ip. Ahora debe observar que la página web está siendo servida con un certificado TLS válido, y cualquier advertencia de seguridad o error encontrado anteriormente debe ser resuelto.

Imagen

Imagen

Al realizar estas tareas, se asegura de que el servidor Nginx esté configurado correctamente con el certificado de CA interno y de que los clientes puedan acceder de forma segura a la página web mediante HTTPS.

Agradecimientos

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.

Para obtener documentación sobre el producto, visite Oracle Help Center.