Administración de certificados mediante la autoridad certificadora de OpenXPKI a través de SCEP

Esta sección contiene instrucciones sobre cómo configurar la CA de OpenXPKI versión 2.5.x mediante el protocolo SCEP (Protocolo de inscripción de certificados simple).

Notas:

Configuración de la CA de OpenXPKI

Instalación de la CA OpenXPKI

  1. Conecte el equipo utilizando PuTTY u otro cliente.

  2. En el cliente, ejecute el comando sudo su - para ir al usuario raíz.

  3. Introduzca la contraseña raíz.

  4. En nano /etc/apt/sources.list , cambie el origen para la instalación de las actualizaciones.

  5. Actualice el archivo. Por ejemplo:

    #
    
    # deb cdrom:[Debian GNU/Linux 8.11.1 _Jessie_ - Official amd64 CD Binary-1 20190211-02:10]/ jessie local main
    # deb cdrom:[Debian GNU/Linux 8.11.1 _Jessie_ - Official amd64 CD Binary-1 20190211-02:10]/ jessie local main
    
    deb http://security.debian.org/ jessie/updates main
    deb-src http://security.debian.org/ jessie/updates main
    
    # jessie-updates, previously known as 'volatile'
    # A network mirror was not selected during install.  The following entries
    # are provided as examples, but you should amend them as appropriate
    # for your mirror of choice.
    #
    deb http://ftp.debian.org/debian/jessie-updates main
    deb-src http://ftp.debian.org/debian/jessie-updates main
    deb http://ftp.us.debian.org/debian/jessie main
    
  6. Guarde el archivo.

  7. Ejecute los siguientes comandos:

    • apt-get update

    • apt-get upgrade

  8. Actualice las listas de certificados de CA en el servidor mediante apt-get install ca-certificates .

  9. Instale en_US.utf8 locale mediante dpkg-reconfigure locales .

  10. Seleccione la configuración regional en_US.UTF-8 UTF-8 y, a continuación, haga que sea la configuración regional predeterminada del sistema.

    Nota:  Utilice las teclas de tabulación y barra espaciadora para seleccionar y desplazarse por el menú.
  11. Compruebe las configuraciones regionales que ha generado mediante locale –a .

    Salida de ejemplo
    C
    C.UTF-8
    en_IN
    en_IN.utf8
    en_US.utf8
    POSIX
  12. Copie la huella del paquete de OpenXPKI mediante nano /home/Release.key . En este caso, copie la clave en /home .

  13. Escriba 9B156AD0 F0E6A6C7 86FABE7A D8363C4E 1611A2BE 2B251336 01D1CDB4 6C24BEF3 como valor.

  14. Ejecute el siguiente comando:

    gpg --print-md sha256 /home/Release.key

  15. Agregue el paquete utilizando el comando wget https://packages.openxpki.org/v2/debian/Release.key -O - | apt-key add - .

  16. Agregue el repositorio a la lista de orígenes (jessie) mediante echo "deb http://packages.openxpki.org/v2/debian/jessie release" > /etc/apt/sources.list.d/openxpki.list y, a continuación, aptitude update .

  17. Instale el enlace MySQL y Perl MySQL mediante aptitude install mysql-server libdbd-mysql-perl .

  18. Instale apache2.2-common mediante aptitude install apache2.2-common .

  19. En nano /etc/apt/sources.list , instale el módulo fastcgi para acelerar la interfaz de usuario.

    Nota:  Recomendamos que se utilice mod_fcgid .
  20. Agregue la línea deb http://http.us.debian.org/debian/jessie main en el archivo y, a continuación, guárdelo.

  21. Ejecute los siguientes comandos:

    apt-get update

    aptitude install libapache2-mod-fcgid

  22. Active el módulo fastcgi mediante a2enmod fcgid .

  23. Instale el paquete principal de OpenXPKI mediante aptitude install libopenxpki-perl openxpki-cgi-session-driver openxpki-i18n .

  24. Reinicie el Apache Servidor mediante service apache2 restart .

  25. Compruebe si la instalación se ha realizado correctamente mediante openxpkiadm version .

    Nota:  Si la instalación se ha realizado correctamente, el sistema muestra la versión de OpenXPKI instalada. Por ejemplo, Version (core): 2.5.5 .
  26. Cree la base de datos vacía y, a continuación, asigne el usuario de la base de datos mediante mysql -u root –p .

    Notas:

    • Este comando debe escribirse en el cliente. De lo contrario, no podrá introducir la contraseña.
    • Escriba la contraseña para MySQL. En este caso, root es el usuario MySQL.
    • openxpki es el usuario en el que está instalado OpenXPKI.
    CREATE DATABASE openxpki CHARSET utf8; 
    CREATE USER 'openxpki'@'localhost' IDENTIFIED BY 'openxpki';
    GRANT ALL ON openxpki.* TO 'openxpki'@'localhost';
    flush privileges;

    Si el servicio MySQL no se está ejecutando, ejecute /etc/init.d/mysql start para iniciar el servicio.

  27. Escriba quit para salir de MySQL.

  28. Almacene las credenciales utilizadas en /etc/openxpki/config.d/system/database.yaml .

    Contenido de archivo de ejemplo
    debug: 0
    type: MySQL
    name: openxpki
    host: localhost
    port: 3306
    user: openxpki 
    passwd: openxpki
    Nota:  Cambie user y passwd para que coincidan con el nombre de usuario y la contraseña de MySQL.
  29. Guarde el archivo.

  30. Para un esquema de base de datos vacío, ejecute zcat /usr/share/doc/libopenxpki-perl/examples/schema-mysql.sql.gz | \mysql -u root --password --database openxpki desde el archivo de esquema proporcionado.

  31. Introduzca la contraseña de la base de datos.

Configuración de la CA OpenXPKI mediante el script predeterminado

Nota:  El script predeterminado solo configura el dominio predeterminado, ca-one . El CDP y las CRL no se configuran.
  1. Descomprima el script de ejemplo para instalar el certificado mediante gunzip -k /usr/share/doc/libopenxpki-perl/examples/sampleconfig.sh.gz .

  2. Ejecute el script mediante bash /usr/share/doc/libopenxpki-perl/examples/sampleconfig.sh .

  3. Confirme la configuración mediante openxpkiadm alias --realm ca-one .

    Salida de ejemplo
    === functional token ===
    scep (scep):
    Alias    : scep-1
    Identifier: YsBNZ7JYTbx89F_-Z4jn_RPFFWo
    NotBefore : 2015-01-30 20:44:40
    NotAfter  : 2016-01-30 20:44:40
    
    vault (datasafe):
    Alias    : vault-1
    Identifier: lZILS1l6Km5aIGS6pA7P7azAJic
    NotBefore : 2015-01-30 20:44:40
    NotAfter  : 2016-01-30 20:44:40
    
    ca-signer (certsign):
    Alias    : ca-signer-1
    Identifier: Sw_IY7AdoGUp28F_cFEdhbtI9pE
    NotBefore : 2015-01-30 20:44:40
    NotAfter  : 2018-01-29 20:44:40
    
    === root ca ===
    current root ca:
    Alias     : root-1
    Identifier: fVrqJAlpotPaisOAsnxa9cglXCc
    NotBefore : 2015-01-30 20:44:39
    NotAfter  : 2020-01-30 20:44:39
    
    upcoming root ca:
      not set
  4. Compruebe si la instalación se realiza correctamente mediante openxpkictl start .

    Salida de ejemplo
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  5. Realice lo siguiente para acceder al servidor OpenXPKI:

    1. En un navegador web, escriba http://ipaddress/openxpki/ .

    2. Inicie sesión como Operador . La contraseña predeterminada es openxpki .

      Nota:  El inicio de sesión del operador tiene dos cuentas de operador preconfiguradas, raop y raop2 .
  6. Cree una solicitud de certificado y, a continuación, pruébela.

Configuración de la CA de OpenXPKI de forma manual

Descripción general

Nota:  Antes de comenzar, asegúrese de que tiene conocimientos básicos sobre la creación de certificados OpenSSL.

Para configurar la CA OpenXPKI de forma manual, debe crear lo siguiente:

  1. Certificado de la CA raíz. Para obtener más información, consulte Creación de un certificado de la CA raíz .

  2. Certificado del firmante de la CA, firmado por la CA raíz. Para obtener más información, consulte Creación de un certificado de firmante .

  3. Certificado de almacén de datos, autofirmado. Para obtener más información, consulte Creación de un certificado de almacén .

  4. Certificado SCEP, firmado por el certificado del firmante.

Notas:

En este caso, vamos a utilizar el directorio /etc/certs/openxpki_ca-one/ para la generación de certificados. Sin embargo, puede utilizar cualquier directorio.

Creación de un archivo de configuración de OpenSSL

  1. Ejecute el siguiente comando:

    nano /etc/certs/openxpki_ca-one/openssl.conf

    Nota:  Si se puede acceder al servidor mediante el nombre de dominio completo (FQDN), utilice el DNS del servidor en lugar de su dirección IP.
    Archivo de ejemplo
    # x509_extensions               = v3_ca_extensions
    # x509_extensions               = v3_issuing_extensions
    # x509_extensions               = v3_datavault_extensions
    # x509_extensions               = v3_scep_extensions
    # x509_extensions               = v3_web_extensions
    # x509_extensions               = v3_ca_reqexts # not for root self-signed, only for issuing
    ## x509_extensions              = v3_datavault_reqexts # not required self-signed
    # x509_extensions               = v3_scep_reqexts
    # x509_extensions               = v3_web_reqexts
    
    [ req ]
    default_bits            = 4096
    distinguished_name      = req_distinguished_name
    
    [ req_distinguished_name ]
    domainComponent         = Domain Component
    commonName              = Common Name
    
    [ v3_ca_reqexts ]
    subjectKeyIdentifier    = hash
    keyUsage                = digitalSignature, keyCertSign, cRLSign
    
    [ v3_datavault_reqexts ]
    subjectKeyIdentifier    = hash
    keyUsage                = keyEncipherment
    extendedKeyUsage        = emailProtection
    
    [ v3_scep_reqexts ]
    subjectKeyIdentifier    = hash
    
    [ v3_web_reqexts ]
    subjectKeyIdentifier    = hash
    keyUsage                = critical, digitalSignature, keyEncipherment
    extendedKeyUsage        = serverAuth, clientAuth
    
    [ v3_ca_extensions ]
    subjectKeyIdentifier    = hash
    keyUsage                = digitalSignature, keyCertSign, cRLSign
    basicConstraints        = critical,CA:TRUE
    authorityKeyIdentifier  = keyid:always,issuer
    
    [ v3_issuing_extensions ]
    subjectKeyIdentifier    = hash
    keyUsage                = digitalSignature, keyCertSign, cRLSign
    basicConstraints        = critical,CA:TRUE
    authorityKeyIdentifier  = keyid:always,issuer:always
    crlDistributionPoints   = URI:http://FQDN of the server/CertEnroll/MYOPENXPKI.crl
    authorityInfoAccess     = caIssuers;URI:http://FQDN of the server/CertEnroll/MYOPENXPKI.crt
    
    [ v3_datavault_extensions ]
    subjectKeyIdentifier    = hash
    keyUsage                = keyEncipherment
    extendedKeyUsage        = emailProtection
    basicConstraints        = CA:FALSE
    authorityKeyIdentifier  = keyid:always,issuer
    
    [ v3_scep_extensions ]
    subjectKeyIdentifier    = hash
    basicConstraints        = CA:FALSE
    authorityKeyIdentifier  = keyid,issuer
    
    [ v3_web_extensions ]
    subjectKeyIdentifier    = hash
    keyUsage                = critical, digitalSignature, keyEncipherment
    extendedKeyUsage        = serverAuth, clientAuth
    basicConstraints        = critical,CA:FALSE
    subjectAltName          = DNS:stlopenxpki.lexmark.com
    crlDistributionPoints   = URI:http://FQDN of the server/CertEnroll/MYOPENXPKI_ISSUINGCA.crl
    authorityInfoAccess     = caIssuers;URI:http://FQDN of the server/CertEnroll/MYOPENXPKI_ISSUINGCA.crt
    
  2. Cambie la dirección IP y el nombre del certificado de la CA con la información de configuración.

  3. Guarde el archivo.

Creación de un archivo de contraseña para claves de certificado

  1. Ejecute el siguiente comando:

    nano /etc/certs/openxpki_ca-one/pd.pass

  2. Escriba su contraseña.

  3. Guarde el archivo.

Creación de un certificado de la CA raíz

Nota:  Puede crear un certificado de la CA raíz autofirmado o generar una solicitud de certificado y, a continuación, obtenerlo firmado por la CA raíz.

Ejecute los siguientes comandos:

Nota:  Sustituya la longitud de clave, el algoritmo de firma y el nombre del certificado por los valores adecuados.
  1. openssl genrsa -out /etc/certs/openxpki_ca-one/ca-root-1.key -passout file:/etc/certs/openxpki_ca-one/pd.pass 4096

  2. openssl req -new -key /etc/certs/openxpki_ca-one/ca-root-1.key -subj /DC=COM/DC=LEXMARK/DC=DEV/DC=CA-ONE/CN=MYOPENXPKI_ROOTCA -out /etc/certs/openxpki_ca-one/ca-root-1.csr

  3. openssl req -config /etc/certs/openxpki_ca-one/openssl.conf -extensions v3_ca_extensions -x509 -days 3560 -in /etc/certs/openxpki_ca-one/ca-root-1.csr -key /etc/certs/openxpki_ca-one/ca-root-1.key -out /etc/certs/openxpki_ca-one/ca-root-1.crt -sha256

Creación de un certificado de firmante

Nota:  Sustituya la longitud de clave, el algoritmo de firma y el nombre del certificado por los valores adecuados.
  1. Ejecute el siguiente comando:

    openssl genrsa -out /etc/certs/openxpki_ca-one/ca-signer-1.key -passout file:/etc/certs/openxpki_ca-one/pd.pass 4096

  2. Cambie el asunto de la solicitud con la información de la CA mediante openssl req -config /etc/certs/openxpki_ca-one/openssl.conf -reqexts v3_ca_reqexts -new -key /etc/certs/openxpki_ca-one/ca-signer-1.key -subj /DC=COM/DC=LEXMARK/DC=DEV/DC=CA-ONE/CN=MYOPENXPKI_ISSUINGCA -out /etc/certs/openxpki_ca-one/ca-signer-1.csr .

  3. Obtenga el certificado firmado por la CA raíz mediante openssl x509 -req -extfile /etc/certs/openxpki_ca-one/openssl.conf -extensions v3_issuing_extensions -days 3650 -in /etc/certs/openxpki_ca-one/ca-signer-1.csr -CA /etc/certs/openxpki_ca-one/ca-root-1.crt -CAkey /etc/certs/openxpki_ca-one/ca-root-1.key -CAcreateserial -out /etc/certs/openxpki_ca-one/ca-signer-1.crt -sha256 .

Creación de un certificado de almacén

Notas:

  1. Ejecute el siguiente comando:

    openssl genrsa -out /etc/certs/openxpki_ca-one/vault-1.key -passout file:/etc/certs/openxpki_ca-one/pd.pass 4096

  2. Cambie el asunto de la solicitud con la información de la CA mediante openssl req -config /etc/certs/openxpki_ca-one/openssl.conf -reqexts v3_datavault_reqexts -new -key /etc/certs/openxpki_ca-one/vault-1.key -subj /DC=COM/DC=LEXMARK/DC=DEV/DC=CA-ONE/DC=STLOPENXPKI_INTERNAL/CN=MYOPENXPKI_DATAVAULT -out /etc/certs/openxpki_ca-one/vault-1.csr .

  3. Ejecute el siguiente comando:

    openssl req -config /etc/certs/openxpki_ca-one/openssl.conf -extensions v3_datavault_extensions -x509 -days 3560 -in /etc/certs/openxpki_ca-one/vault-1.csr -key /etc/certs/openxpki_ca-one/vault-1.key -out /etc/certs/openxpki_ca-one/vault-1.crt

Creación de un certificado SCEP

Nota:  El certificado SCEP está firmado por el certificado del firmante.

Ejecute los siguientes comandos:

Nota:  Sustituya la longitud de clave, el algoritmo de firma y el nombre del certificado por los valores adecuados.
  1. openssl genrsa -out /etc/certs/openxpki_ca-one/scep-1.key -passout file:/etc/certs/openxpki_ca-one/pd.pass 4096

  2. openssl req -config /etc/certs/openxpki_ca-one/openssl.conf -reqexts v3_scep_reqexts -new -key /etc/certs/openxpki_ca-one/scep-1.key -subj /DC=COM/DC=LEXMARK/DC=DEV/DC=CA-ONE/CN=MYOPENXPKI_SCEPCA -out /etc/certs/openxpki_ca-one/scep-1.csr

  3. openssl x509 -req -extfile /etc/certs/openxpki_ca-one/openssl.conf -extensions v3_scep_extensions -days 900 -in /etc/certs/openxpki_ca-one/scep-1.csr -CA /etc/certs/openxpki_ca-one/ca-signer-1.crt -CAkey /etc/certs/openxpki_ca-one/ca-signer-1.key -CAcreateserial -out /etc/certs/openxpki_ca-one/scep-1.crt -sha256

Copia del archivo de clave y creación de un enlace simbólico

  1. Copie los archivos de clave en /etc/openxpki/ca/ca-one/ .

    Nota:  Los archivos de clave deben ser legibles para OpenXPKI.
    cp /etc/certs/openxpki_ca-one/ca-signer-1.key /etc/openxpki/ca/ca-one/
    
    cp /etc/certs/openxpki_ca-one/vault-1.key /etc/openxpki/ca/ca-one/
    
    cp /etc/certs/openxpki_ca-one/scep-1.key /etc/openxpki/ca/ca-one/
  2. Cree el enlace simbólico.

    Nota:  Los enlaces simbólicos son alias utilizdos por la configuración predeterminada.
    ln -s /etc/openxpki/ca/ca-one/ca-signer-1.key /etc/openxpki/ca/ca-one/ca-signer-1.pem
    
    ln -s /etc/openxpki/ca/ca-one/scep-1.key /etc/openxpki/ca/ca-one/scep-1.pem
    
    ln -s /etc/openxpki/ca/ca-one/vault-1.key /etc/openxpki/ca/ca-one/vault-1.pem

Importación de certificados

Importe el certificado raíz, el certificado del firmante, el certificado de almacén y el certificado SCEP a la base de datos con los tokens adecuados.

Ejecute los siguientes comandos:

  1. openxpkiadm certificate import --file /etc/certs/openxpki_ca-one/ca-root-1.crt

  2. openxpkiadm certificate import --file /etc/certs/openxpki_ca-one/ca-signer-1.crt --realm ca-one --token certsign

  3. openxpkiadm certificate import --file /etc/certs/openxpki_ca-one/scep-1.crt --realm ca-one --token scep

  4. openxpkiadm certificate import --file /etc/certs/openxpki_ca-one/vault-1.crt --realm ca-one --token datasafe

  5. Compruebe que la importación se realiza correctamente mediante openxpkiadm alias --realm ca-one ..

    Salida de ejemplo
    === functional token ===
    scep (scep):
    Alias    : scep-1
    Identifier: YsBNZ7JYTbx89F_-Z4jn_RPFFWo
    NotBefore : 2015-01-30 20:44:40
    NotAfter  : 2016-01-30 20:44:40
    
    vault (datasafe):
    Alias    : vault-1
    Identifier: lZILS1l6Km5aIGS6pA7P7azAJic
    NotBefore : 2015-01-30 20:44:40
    NotAfter  : 2016-01-30 20:44:40
    
    ca-signer (certsign):
    Alias    : ca-signer-1
    Identifier: Sw_IY7AdoGUp28F_cFEdhbtI9pE
    NotBefore : 2015-01-30 20:44:40
    NotAfter  : 2018-01-29 20:44:40
    
    === root ca ===
    current root ca:
    Alias     : root-1
    Identifier: fVrqJAlpotPaisOAsnxa9cglXCc
    NotBefore : 2015-01-30 20:44:39
    NotAfter  : 2020-01-30 20:44:39
    
    upcoming root ca:
      not set
    

Inicio de OpenXPKI

  1. Ejecute el comando openxpkictl start

    Salida de ejemplo
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  2. Realice lo siguiente para acceder al servidor OpenXPKI:

    1. En un navegador web, escriba http://ipaddress/openxpki/ .

      Nota:  En lugar de ipaddress , también puede utilizar el FQDN del servidor.
    2. Inicie sesión como Operador . La contraseña predeterminada es openxpki .

      Nota:  El inicio de sesión del operador tiene dos cuentas de operador preconfiguradas, raop y raop2 .
  3. Cree una solicitud de certificado y, a continuación, pruébela.

Generación de información de la CRL

Nota:  Si se puede acceder al servidor mediante el FQDN, utilice el DNS del servidor en lugar de su dirección IP.
  1. Detenga el servicio OpenXPKI mediante Openxpkictl stop .

  2. En nano /etc/openxpki/config.d/realm/ca-one/publishing.yaml , actualice la sección connectors: cdp para que muestre lo siguiente:

    class: Connector::Builtin::File::Path
    LOCATION: /var/www/openxpki/CertEnroll/
    file: "[% ARGS.0 %].crl"
    content: "[% pem %]"
    1. En nano /etc/openxpki/config.d/realm/ca-one/profile/default.yaml , actualice lo siguiente:

      • crl_distribution_points: sección

        critical: 0
        uri:
            - http://FQDN of the server/CertEnroll/[% ISSUER.CN.0 %].crl
            - ldap://localhost/[% ISSUER.DN %]
      • authority_info_access: sección

        critical: 0
        ca_issuers: http://FQDN of the server/CertEnroll/MYOPENXPKI.crt
        ocsp: http://ocsp.openxpki.org/

      Cambie la dirección IP y el nombre del certificado de la CA de acuerdo con el servidor de la CA.

    2. En nano /etc/openxpki/config.d/realm/ca-one/crl/default.yaml , realice lo siguiente:

      • Si es necesario, actualice nextupdate y renewal .

      • Agregue ca_issuers a la siguiente sección:

        extensions:
            		authority_info_access:
                			critical: 0
                			# ca_issuers and ocsp can be scalar or list
                			ca_issuers: http://FQDN of the server/CertEnroll/MYOPENXPKI.crt
               			#ocsp: http://ocsp.openxpki.org/
        

        Cambie la dirección IP y el nombre del certificado de la CA de acuerdo con el servidor de la CA.

  3. Inicie el servicio OpenXPKI mediante Openxpkictl start .

Configuración de la accesibilidad de la CRL

  1. Detenga el servicio Apache mediante service apache2 stop .

  2. Cree un directorio CertEnroll para crl en el directorio /var/www/openxpki/ .

  3. Defina openxpki como propietario de este directorio y, a continuación, configure los permisos para permitir a Apache leer y ejecutar, y a otros servicios solo leer.

    chown openxpki /var/www/openxpki/CertEnroll

    chmod 755 /var/www/openxpki/CertEnroll

  4. Agregue una referencia al archivo alias.conf de Apache mediante nano /etc/apache2/mods-enabled/alias.conf .

  5. Después de la sección <Directory "/usr/share/apache2/icons"> , agregue lo siguiente:

            	Alias /CertEnroll/ "/var/www/openxpki/CertEnroll/"
             	<Directory "/var/www/openxpki/CertEnroll">
                   Options FollowSymlinks
                   AllowOverride None
                   Require all granted
             	</Directory>
  6. Agregue una referencia en el archivo apache2.conf utilizando nano /etc/apache2/apache2.conf .

  7. Agregue lo siguiente en la sección Apache2 HTTPD server :

             	<Directory /var/www/openxpki/CertEnroll>
                   Options FollowSymlinks
                   AllowOverride None
                   Allow from all
             	</Directory>
  8. Inicie el servicio Apache mediante service apache2 start .

Activación del servicio SCEP

  1. Detenga el servicio OpenXPKI mediante openxpkictl stop .

  2. Instale el paquete openca-tools usando aptitude install openca-tools .

  3. Inicie el servicio OpenXPKI mediante openxpkictl start .

Pruebe el servicio con cualquier cliente; por ejemplo, certnanny con SSCEP.

Nota:  SSCEP es un cliente de línea de comandos para SCEP. Puede descargar SSCEP de https://github.com/certnanny/sscep .

Activación del certificado Firmante en nombre de un tercero (agente de inscripción)

Para las solicitudes automáticas de certificados, se utilizará la función de certificado Firmante en nombre de un tercero de OpenXPKI.

  1. Detenga el servicio OpenXPKI mediante openxpkictl stop .

  2. En nano /etc/openxpki/config.d/realm/ca-one/scep/generic.yaml , desde la sección authorized_signer: , agregue una regla para el nombre del sujeto del certificado de firmante.

    rule1:
            		# Full DN
                		subject: CN=Markvision_.*
    

    Notas:

    • En esta regla, cualquier certificado CN que empiecen por MarkVision_ es el certificado Firmante en nombre de un tercero.
    • El nombre del sujeto se define en MVE para generar el certificado Firmante en nombre de un tercero.
    • Revise el espacio y la sangría en el archivo de script.
    • Si el CN se cambia en MVE, agregue el CN actualizado en OpenXPKI.
    • Solo se puede especificar un certificado como Firmante en nombre de un tercero y, a continuación, especificar el CN completo.
  3. Guarde el archivo.

  4. Inicie el servicio OpenXPKI mediante openxpkictl start .

Activación de la aprobación automática de solicitudes de certificado en la CA OpenXPKI

  1. Detenga el servicio OpenXPKI mediante openxpkictl stop .

  2. En nano /etc/openxpki/config.d/realm/ca-one/scep/generic.yaml , actualice la sección eligible :

    Contenido antiguo

    eligible:
    			initial:
    				value@: connector:scep.generic.connector.initial
           		args: '[% context.cert_subject_parts.CN.0 %]'
           		expect:
           			- Build
           			- New

    Nuevo contenido

    eligible:
    			initial:
    				value: 1
    				# value@: connector:scep.generic.connector.initial
    				# args: '[% context.cert_subject_parts.CN.0 %]'
    				# expect:
    				#	- Build
    				#	- New

    Notas:

    • Revise el espacio y la sangría en el archivo de script.
    • Para aprobar certificados de forma manual, comente value: 1 y, a continuación, quite el comentario de las otras líneas que se hayan comentado previamente.
  3. Guarde el archivo.

  4. Inicie el servicio OpenXPKI mediante openxpkictl start .

Creación de un segundo dominio

En OpenXPKI, puede configurar varias estructuras PKI en el mismo sistema. En los temas siguientes se muestra cómo crear otro dominio para MVE con el nombre ca-two .

Copia y configuración del directorio

  1. Copie el árbol de directorios de ejemplo /etc/openxpki/config.d/realm/ca-one en un nuevo directorio ( cp -avr /etc/openxpki/config.d/realm/ca-one /etc/openxpki/config.d/realm/ca-two ) dentro del directorio del dominio.

  2. En /etc/openxpki/config.d/system/reinos.yaml , actualice la siguiente sección:

    Contenido antiguo
    # This is the list of realms in this PKI
    # You only need to enable the realms which are visible on the server
    
    ca-one:
        label: Verbose name of this realm
        baseurl: https://pki.example.com/openxpki/
    
    #ca-two:
    #    label: Verbose name of this realm
    #    baseurl: https://pki.acme.org/openxpki/
    Nuevo contenido
    # This is the list of realms in this PKI
    # You only need to enable the realms which are visible on the server
    
    ca-one:
        label: CA-ONE
        baseurl: https://pki.example.com/openxpki/
    
    ca-two:
        label: CA-TWO
        baseurl: https://pki.example.com/openxpki/
  3. Guarde el archivo.

Creación de certificados

En las siguientes instrucciones se muestra cómo generar el certificado de firmante, el certificado de almacén y el certificado SCEP. La CA raíz firma el certificado de firmante y, a continuación, el certificado de firmante firma el certificado SCEP. El certificado de almacén se firma automáticamente.

  1. Genere los certificados y, a continuación, fírmelos. Para obtener más información, consulte Configuración de la CA de OpenXPKI de forma manual .

    Nota:  Cambie el nombre común del certificado para que el usuario pueda distinguir fácilmente entre distintos certificados para diferentes dominios. Puede cambiar DC=CA-ONE a DC=CA-DOS . Los archivos de certificado se crean en el directorio /etc/certs/openxpki_ca-two/ .
  2. Copie los archivos de clave en /etc/openxpki/ca/ca-two/ .

    Nota:  Los archivos de clave deben ser legibles para OpenXPKI.
    cp /etc/certs/openxpki_ca-two/ca-signer-1.key /etc/openxpki/ca/ca-two/
    
    cp /etc/certs/openxpki_ca-two/vault-1.key /etc/openxpki/ca/ca-two/
    
    cp /etc/certs/openxpki_ca-two/scep-1.key /etc/openxpki/ca/ca-two/
  3. Cree el enlace simbólico. Además, cree un enlace simbólico para el certificado de la CA raíz.

    Nota:  Los enlaces simbólicos son alias utilizdos por la configuración predeterminada.
    ln -s /etc/openxpki/ca/ca-one/ca-root-1.crt /etc/openxpki/ca/ca-two/ca-root-1.crt
    
    ln -s /etc/openxpki/ca/ca-two/ca-signer-1.key /etc/openxpki/ca/ca-two/ca-signer-1.pem
    
    ln -s /etc/openxpki/ca/ca-two/scep-1.key /etc/openxpki/ca/ca-two/scep-1.pem
    
    ln -s /etc/openxpki/ca/ca-two/vault-1.key /etc/openxpki/ca/ca-two/vault-1.pem
  4. Importe el certificado de firmante, el certificado de almacén y el certificado SCEP a la base de datos con los tokens adecuados para ca-two .

    openxpkiadm certificate import --file /etc/certs/openxpki_ca-two/ca-signer-1.crt --realm ca-two –issuer /etc/openxpki/ca/ca-two/ca-one-1.crt --token certsign
    
    openxpkiadm certificate import --file /etc/certs/openxpki_ca-two/scep-1.crt --realm ca-two --token scep
    
    openxpkiadm certificate import --file /etc/certs/openxpki_ca-two/vault-1.crt --realm ca-two --token datasafe
  5. Compruebe si la importación se realiza correctamente utilizando openxpkiadm alias --realm ca-two .

    Salida de ejemplo
    === functional token ===
    scep (scep):
    Alias    : scep-1
    Identifier: YsBNZ7JYTbx89F_-Z4jn_RPFFWo
    NotBefore : 2015-01-30 20:44:40
    NotAfter  : 2016-01-30 20:44:40
    
    vault (datasafe):
    Alias    : vault-1
    Identifier: lZILS1l6Km5aIGS6pA7P7azAJic
    NotBefore : 2015-01-30 20:44:40
    NotAfter  : 2016-01-30 20:44:40
    
    ca-signer (certsign):
    Alias    : ca-signer-1
    Identifier: Sw_IY7AdoGUp28F_cFEdhbtI9pE
    NotBefore : 2015-01-30 20:44:40
    NotAfter  : 2018-01-29 20:44:40
    
    === root ca ===
    current root ca:
    Alias     : root-1
    Identifier: fVrqJAlpotPaisOAsnxa9cglXCc
    NotBefore : 2015-01-30 20:44:39
    NotAfter  : 2020-01-30 20:44:39
    
    upcoming root ca:
      not set
    

    En este caso, la información de la CA raíz es la misma para ca-one y ca-two .

  6. Si ha cambiado la contraseña de la clave de certificado durante la creación del certificado, actualice nano /etc/openxpki/config.d/realm/ca-two/crypto.yaml .

  7. Genere las CRL para este dominio. Para obtener más información, consulte Generación de información de la CRL .

  8. Publique las CRL para este dominio. Para obtener más información, consulte Configuración de la accesibilidad de la CRL .

  9. Reinicie el servicio OpenXPKI mediante openxpkictl restart .

    Salida de ejemplo
    Stopping OpenXPKI
    Stopping gracefully, 3 (sub)processes remaining...
    DONE.
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  10. Realice lo siguiente para acceder al servidor OpenXPKI:

    1. En un navegador web, escriba http://ipaddress/openxpki/ .

    2. Inicie sesión como Operador . La contraseña predeterminada es openxpki .

      Nota:  El inicio de sesión del operador tiene dos cuentas de operador preconfiguradas, raop y raop2 .

Configuración del punto final SCEP para varios dominios

El punto final SCEP del dominio predeterminado es http://<ipaddress>/scep/scep . Si tiene varios dominios, configure un punto final SCEP único (archivo de configuración diferente) para cada dominio. En las siguientes instrucciones, utilizamos dos dominios PKI, ca-one y ca-two .

  1. Copie el archivo de configuración predeterminado en cp /etc/openxpki/scep/default.conf /etc/openxpki/scep/ca-one.conf .

    Nota:  Asigne al archivo el nombre ca-one.conf .
  2. En nano /etc/openxpki/scep/ca-one.conf , cambie el valor de dominio a realm=ca-one .

  3. Cree otro archivo de configuración en cp /etc/openxpki/scep/default.conf /etc/openxpki/scep/ca-two.conf .

    Nota:  Asigne al archivo el nombre ca-two.conf .
  4. En nano /etc/openxpki/scep/ca-two.conf , cambie el valor de dominio a realm=ca-two .

  5. Reinicie el servicio OpenXPKI mediante openxpkictl restart .

Los puntos finales SCEP son los siguientes:

Si desea diferenciar entre credenciales de inicio de sesión y plantillas de certificado predeterminadas para diferentes dominios PKI, puede que necesite una configuración avanzada.

Activación de varios certificados activos con el mismo asunto para que estén presentes a la vez

De forma predeterminada, en OpenXPKI sólo puede estar activo un certificado con el mismo nombre de asunto a la vez. Sin embargo, cuando se aplican varios certificados con nombre, deben estar presentes varios certificados activos con el mismo nombre de asunto a la vez.

  1. En /etc/openxpki/config.d/realm/REALM NAME/scep/generic.yaml , en la sección policy , cambie el valor de max_active_certs de 1 a 0 .

    Notas:

    • REALM NAME es el nombre de dominio. Por ejemplo, ca-one .
    • Revise el espacio y la sangría en el archivo de script.
  2. Reinicie el servicio OpenXPKI mediante openxpkictl restart .

Definición del número de puerto predeterminado para la CA OpenXPKI

De forma predeterminada, Apache escucha en el número de puerto 80. Defina el número de puerto predeterminado para la CA OpenXPKI para evitar conflictos.

  1. En /etc/apache2/ports.conf , agregue o modifique un puerto. Por ejemplo, Listen 8080 .

  2. En /etc/apache2/sites-enabled/000-default.conf , agregue o modifique la sección VirtualHost para asignar un nuevo puerto. Por ejemplo, <VirtualHost *:8080> .

  3. Reinicie el servidor Apache con systemctl restart apache2 .

Para comprobar el estado, ejecute netstat -tlpn| grep apache . La URL SCEP de OpenXPKI es ahora http://ipaddress:8080/Scep/ca-one y la URL web es http://dirección IP:8080/Openxpki. .

Cómo rechazar solicitudes de certificado sin Contraseña de comprobación en la CA OpenXPKI

De forma predeterminada, OpenXPKI acepta solicitudes sin comprobar la contraseña de comprobación. La solicitud de certificado no se rechaza y la CA y el administrador de la CA determinan si se debe aprobar o rechazar la solicitud. Para evitar posibles problemas de seguridad, desactive esta función de modo que se rechacen inmediatamente todas las solicitudes de certificado que contengan contraseñas no válidas. En MVE, la Contraseña de comprobación solo es necesaria cuando se genera el certificado del agente de inscripción.

  1. En etc/openxpki/config.d/realm/REALM NAME/scep/generic.yaml , en la sección policy , cambie el valor de allow_man_authen de 1 a 0 .

    Notas:

    • REALM NAME es el nombre de dominio. Por ejemplo, ca-one .
    • Revise el espacio y la sangría en el archivo de script.
  2. Reinicie el servicio OpenXPKI mediante openxpkictl restart .

Adición de EKU de autenticación de cliente en los certificados

  1. En /etc/openxpki/config.d/realm/REALM NAME/profile/I18N_OPENXPKI_PROFILE_TLS_SERVER.yaml , en la sección extended_key_usage: cambie el valor de client_auth: a 1 .

    Notas:

    • REALM NAME es el nombre de dominio. Por ejemplo, ca-one .
    • Revise el espacio y la sangría en el archivo de script.
  2. Reinicie el servicio OpenXPKI mediante openxpkictl restart .

Obtención del asunto del certificado completo al realizar la solicitud a través de SCEP

De forma predeterminada, OpenXPKI solo lee el CN del asunto del certificado que se solicita. El resto de la información, como el país, la localidad y el DC, están codificados. Por ejemplo, si un asunto de certificado es C=US , ST=KY , L=Lexington , O=Lexmark , OU=ISS , CN=ET0021B7C34AEC.dhcp.dev.lexmark.com , después de firmar el certificado a través de SCEP, el asunto se cambia a DC=Test Deployment , DC= OpenXPKI , CN=ET0021B7C34AEC.dhcp.dev.lexmark.com .

Nota:  REALM NAME es el nombre de dominio. Por ejemplo, ca-one .
  1. En /etc/openxpki/config.d/realm/REALM NAME/profile/I18N_OPENXPKI_PROFILE_TLS_SERVER.yaml , en la sección enroll , cambie el valor de dn a lo siguiente:

    CN=[% CN.0 %][% IF OU %][% FOREACH entry = OU %],OU=[% entry %][% END %][% END %][% IF O %][% FOREACH entry = O %],O=[% entry %][% END %][% END %][% IF L %],L=[% L.0 %][% END %][% IF ST %],ST=[% ST.0 %][% END %][% IF C %],C=[% C.0 %][% END %][% IF DC %][% FOREACH entry = DC %],DC=[% entry %][% END %][% END %][% IF EMAIL %][% FOREACH entry = EMAIL %],EMAIL=[% entry %][% END %][% END %]
  2. Guarde el archivo.

  3. Cree un archivo denominado l.yaml en el directorio /etc/openxpki/config.d/realm/REALM NAME/profile/template .

  4. Agregue lo siguiente:

    id: L
    label: L
    description: I18N_OPENXPKI_UI_PROFILE_L_DESC
    preset: L
    type: freetext
    width: 60
    placeholder: Kolkata
  5. Guarde el archivo.

  6. Cree un archivo denominado st.yaml en el directorio /etc/openxpki/config.d/realm/REALM NAME/profile/template .

  7. Agregue lo siguiente:

    id: ST
    label: ST
    description: I18N_OPENXPKI_UI_PROFILE_ST_DESC
    preset: ST
    type: freetext
    width: 60
    placeholder: WB
  8. Guarde el archivo.

    Nota:  OpenXPKI debe ser propietario de ambos archivos y debe permitir la lectura, la escritura y la ejecución.
  9. Reinicie el servicio OpenXPKI mediante openxpkictl restart .

Revocación de certificados y publicación de CRL

  1. Acceda al servidor OpenXPKI.

    1. En un navegador web, escriba http://ipaddress/openxpki/ .

    2. Inicie sesión como Operador . La contraseña predeterminada es openxpki .

      Nota:  El inicio de sesión del operador tiene dos cuentas de operador preconfiguradas, raop y raop2 .
  2. Haga clic en Búsqueda de flujo de trabajo > Buscar ahora .

  3. Haga clic en el certificado que desee revocar y, a continuación, en el enlace del certificado.

  4. En la sección Acción, haga clic en la solicitud de revocación .

  5. Escriba los valores adecuados y, a continuación, haga clic en Continuar > Enviar solicitud .

  6. En la página siguiente, apruebe la solicitud. La revocación del certificado está esperando la siguiente publicación de la CRL.

  7. En la sección Operación PKI, haga clic en Emitir una lista de revocación de certificados (CRL) .

  8. Haga clic en Aplicar creación de listas de revocación > Continuar .

  9. En la sección Operación PKI, haga clic en Publicar CA/CRL .

  10. Haga clic en Búsqueda de flujo de trabajo > Buscar ahora .

  11. Haga clic en el certificado revocado con el tipo certificate_revocation_request_v2 .

  12. Haga clic en Forzar reactivación .

En la nueva CRL, puede encontrar el número de serie y el motivo de revocación del certificado revocado.