Gestion des certificats à l'aide de l'autorité de certification OpenXPKI

Cette section fournit des instructions sur la configuration de l'autorité de certification OpenXPKI version 2.5.x à l'aide du protocole SCEP (Simple Certificate Enrollment Protocol).

Remarques :

Configuration de l'autorité de certification OpenXPKI

Installation de l'autorité de certification OpenXPKI

  1. Connectez la machine à l'aide de PuTTY ou d'un autre client.

  2. A partir du client, exécutez la commande sudo su - pour accéder à l'utilisateur racine.

  3. Saisissez le mot de passe racine.

  4. Dans nano /etc/apt/sources.list, modifiez la source pour l'installation des mises à jour.

  5. Mettez à jour le fichier. Par exemple :

    #
    
    # 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. Enregistrez le fichier.

  7. Exécutez les commandes suivantes :

    • mise à jour apt-get

    • mise à niveau apt-get

  8. Mettez à jour les listes de certificats CA du serveur à l'aide de apt-get install ca-certificates.

  9. Installez le paramètre local en_US.utf8 locale à l'aide des paramètres locaux dpkg-reconfigure locales.

  10. Sélectionnez le paramètre local en_US.UTF-8 UTF-8, puis définissez-le comme paramètre local par défaut pour le système.

    Remarque : Utilisez les touches de tabulation et la barre d'espace pour sélectionner et naviguer dans le menu.
  11. Vérifiez les paramètres locaux que vous avez générés à l'aide de locale –a.

    Exemple d'impression
    C
    C.UTF-8
    en_IN
    en_IN.utf8
    en_US.utf8
    POSIX
  12. Copiez l'empreinte du package OpenXPKI à l'aide de nano /home/Release.key. Dans ce cas, copiez la clé dans /home.

  13. Saisissez 9B156AD0 F0E6A6C7 86FABE7A D8363C4E 1611A2BE 2B251336 01D1CDB4 6C24BEF3 comme valeur.

  14. Exécutez la commande suivante :

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

  15. Ajoutez le package à l'aide de la commande wget https://packages.openxpki.org/v2/debian/Release.key -O - | apt-key add -.

  16. Ajoutez le référentiel à votre liste source (jessie) à l'aide de echo "deb http://packages.openxpki.org/v2/debian/jessie release" > /etc/apt/sources.list.d/openxpki.list, puis aptitude update.

  17. Installez la liaison MySQL et Perl MySQL à l'aide de aptitude install mysql-server libdbd-mysql-perl.

  18. Installez apache2.2-common à l'aide de aptitude install apache2.2-common.

  19. Dans nano /etc/apt/sources.list, installez le module fastcgi pour accélérer l'interface utilisateur.

    Remarque : Nous vous recommandons d'utiliser mod_fcgid.
  20. Ajoutez la ligne deb http://http.us.debian.org/debian/jessie main dans le fichier, puis enregistrez-la.

  21. Exécutez les commandes suivantes :

    mise à jour apt-get

    aptitude install libapache2-mod-fcgid

  22. Activez le module fastcgi à l'aide de a2enmod fcgid.

  23. Installez le package principal OpenXPKI à l'aide de aptitude install libopenxpki-perl openxpki-cgi-session-driver openxpki-i18n.

  24. Redémarrez le serveur Apache en utilisant le service de redémarrage apache2.

  25. Vérifiez si l'installation est réussie à l'aide de openxpkiadm version.

    Remarque : Si l'installation est réussie, le système affiche la version d'OpenXPKI installée. Par exemple, Version (principale) : 2.5.5.
  26. Créez la base de données vide, puis affectez l'utilisateur de la base de données à l'aide de mysql -u root –p.

    Remarques :

    • Cette commande doit être saisie dans le client. Sinon, vous ne pouvez pas saisir le mot de passe.
    • Saisissez le mot de passe pour MySQL. Pour cette instance, root est l'utilisateur MySQL.
    • MySQL est l'utilisateur sur lequel OpenXPKI est installé.
    CREATE DATABASE openxpki CHARSET utf8; 
    CREATE USER 'openxpki'@'localhost' IDENTIFIED BY 'openxpki';
    GRANT ALL ON openxpki.* TO 'openxpki'@'localhost';
    flush privileges;

    Si le service MySQL n'est pas en cours d'exécution, exécutez /etc/init.d/mysql start pour lancer le service.

  27. Saisissez quit pour quitter MySQL.

  28. Stockez les informations d'identification utilisées dans /etc/openxpki/config.d/system/database.yaml.

    Exemple de contenu du fichier
    debug: 0
    type: MySQL
    name: openxpki
    host: localhost
    port: 3306
    user: openxpki 
    passwd: openxpki
    Remarque : Modifiez les champs user et passwd pour qu'ils correspondent au nom d'utilisateur et au mot de passe MySQL.
  29. Enregistrez le fichier.

  30. Pour un schéma de base de données vide, exécutez zcat /usr/share/doc/libopenxpki-perl/examples/schema-mysql.sql.gz | \mysql -u root --password --database openxpki à partir du fichier de schéma fourni.

  31. Saisissez le mot de passe de la base de données.

configuration de l'autorité de certification OpenXPKI à l'aide du script par défaut

Remarque : Le script par défaut configure uniquement le domaine par défaut, ca-one. Les CDP et CRL ne sont pas configurés.
  1. Décompressez l'exemple de script pour installer le certificat à l'aide de gunzip -k /usr/share/doc/libopenxpki-perl/examples/sampleconfig.sh.gz.

  2. Exécutez le script à l'aide de bash /usr/share/doc/libopenxpki-perl/examples/sampleconfig.sh.

  3. Confirmez la configuration à l'aide de openxpkiadm alias --realm ca-one.

    Exemple d'impression
    === 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. Vérifiez si l'installation est réussie à l'aide de openxpkictl start.

    Exemple d'impression
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  5. Pour accéder au serveur OpenXPKI, procédez comme suit :

    1. Depuis un navigateur Web, saisissez http://ipaddress/openxpki/.

    2. Connectez-vous en tant qu'opérateur. Le mot de passe par défaut est openxpki.

      Remarque : La connexion Opérateur a deux comptes opérateur préconfigurés, raop et raop2.
  6. Créez une demande de certificat, puis testez-la.

Configuration manuelle de l'autorité de certification OpenXPKI

Aperçu

Remarque : Avant de commencer, assurez-vous de disposer de connaissances de base sur la création de certificats OpenSSL.

Pour configurer l'autorité de certification OpenXPKI manuellement, créez les éléments suivants :

  1. Certificat CA racine. Pour plus d'informations, reportez-vous à la section Création d'un certificat CA racine.

  2. Certificat du signataire de l'autorité de certification, signé par l'autorité de certification racine. Pour plus d'informations, reportez-vous à la section Création d'un certificat de signataire.

  3. Certificat du coffre de données, auto-signé. Pour plus d'informations, reportez-vous à la section Création d'un certificat de coffre.

  4. Certificat SCEP, signé par le certificat du signataire.

Remarques :

Pour cette instance, nous utilisons le répertoire /etc/certs/openxpki_ca-one/ pour la génération de certificats. Cependant, vous pouvez utiliser n'importe quel répertoire.

Création d'un fichier de configuration OpenSSL

  1. Exécutez la commande suivante :

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

    Remarque : Si votre serveur est accessible à l'aide du nom de domaine complet (FQDN), utilisez le DNS du serveur au lieu de son adresse IP.
    Exemple de fichier
    # 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.dhcp.indiadev.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. Modifiez l'adresse IP et le nom du certificat CA avec vos informations de configuration.

  3. Enregistrez le fichier.

Création d'un fichier de mots de passe pour les clés de certificat

  1. Exécutez la commande suivante :

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

  2. Saisissez votre mot de passe.

  3. Enregistrez le fichier.

Création d'un certificat CA racine

Remarque : Vous pouvez créer un certificat CA racine auto-signé ou générer une demande de certificat, puis le faire signer par l'autorité de certification racine.

Exécutez les commandes suivantes :

Remarque : Remplacez la longueur de clé, l'algorithme de signature et le nom du certificat par les valeurs appropriées.
  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

Création d'un certificat de signataire

Remarque : Remplacez la longueur de clé, l'algorithme de signature et le nom du certificat par les valeurs appropriées.
  1. Exécutez la commande suivante :

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

  2. Remplacez l'objet de la demande par vos informations d'autorité de certification en utilisant 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. Faites signer le certificat par l'autorité de certification racine à l'aide de 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.

Création d'un certificat de coffre

Remarques :

  1. Exécutez la commande suivante :

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

  2. Remplacez l'objet de la demande par vos informations d'autorité de certification en utilisant 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. Exécutez la commande suivante :

    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

Création d'un certificat SCEP

Remarque : Le certificat SCEP est signé par le certificat du signataire.

Exécutez les commandes suivantes :

Remarque : Remplacez la longueur de clé, l'algorithme de signature et le nom du certificat par les valeurs appropriées.
  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

Copie du fichier de clés et création d'un lien symbolique

  1. Copiez les fichiers de clés dans /etc/openxpki/ca/ca-one/.

    Remarque : Les fichiers de clés doivent être lisibles par 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. Créez le lien symbolique.

    Remarque : Les liens symboliques sont des alias utilisés par la configuration par défaut.
    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

Importation des certificats

Importez le certificat racine, le certificat du signataire, le certificat du coffre et le certificat SCEP dans la base de données avec les jetons appropriés.

Exécutez les commandes suivantes :

  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. Vérifiez si l'importation est réussie à l'aide de openxpkiadm alias --realm ca-one.

    Exemple d'impression
    === 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
    

Démarrage d'OpenXPKI

  1. Exécutez la commande openxpkictl start.

    Exemple d'impression
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  2. Pour accéder au serveur OpenXPKI, procédez comme suit :

    1. Depuis un navigateur Web, saisissez http://ipaddress/openxpki/.

      Remarque : Vous pouvez également utiliser le FQDN du serveur à la place d'ipaddress.
    2. Connectez-vous en tant qu'opérateur. Le mot de passe par défaut est openxpki.

      Remarque : La connexion Opérateur a deux comptes opérateur préconfigurés, raop et raop2.
  3. Créez une demande de certificat, puis testez-la.

Génération des informations CRL

Remarque : Si votre serveur est accessible à l'aide du FQDN, utilisez le DNS du serveur au lieu de son adresse IP.
  1. Arrêtez le service OpenXPKI à l'aide de Openxpkictl stop.

  2. Dans nano /etc/openxpki/config.d/realm/ca-one/publishing.yaml, mettez à jour les éléments suivants de la section connecteurs : cdp :

    class: Connector::Builtin::File::Path
    LOCATION: /var/www/openxpki/CertEnroll/
    file: "[% ARGS.0 %].crl"
    content: "[% pem %]"
    1. Dans nano /etc/openxpki/config.d/realm/ca-one/profile/default.yaml, mettez à jour les éléments suivants :

      • crl_distribution_points : Section

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

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

      Modifiez l'adresse IP et le nom du certificat CA en fonction de votre serveur CA.

    2. Dans nano /etc/openxpki/config.d/realm/ca-one/crl/default.yaml, procédez comme suit :

      • Si nécessaire, mettez à jour nextupdate et renewal.

      • Ajoutez ca_issuers à la section suivante :

        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/
        

        Modifiez l'adresse IP et le nom du certificat CA en fonction de votre serveur CA.

  3. Démarrez le service OpenXPKI à l'aide de Openxpkictl start.

Configuration de l'accessibilité CRL

  1. Arrêtez le service Apache à l'aide de service apache2 stop.

  2. Créez un répertoire CertEnroll pour crl dans le répertoire /var/www/openxpki/.

  3. Définissez openxpki comme propriétaire de ce répertoire, puis configurez les autorisations pour permettre à Apache de lire et d'exécuter, et aux autres services de lire uniquement.

    chown openxpki /var/www/openxpki/CertEnroll

    chmod 755 /var/www/openxpki/CertEnroll

  4. Ajoutez une référence au fichier de configuration alias.conf à l'aide de nano /etc/apache2/mods-enabled/alias.conf.

  5. Après la section <Directory "/usr/share/apache2/icons">, ajoutez ce qui suit :

            	Alias /CertEnroll/ "/var/www/openxpki/CertEnroll/"
             	<Directory "/var/www/openxpki/CertEnroll">
                   Options FollowSymlinks
                   AllowOverride None
                   Require all granted
             	</Directory>
  6. Ajoutez une référence dans le fichier apache2.conf à l'aide de nano /etc/apache2/apache2.conf.

  7. Ajoutez ce qui suit dans la section Serveur HTTPD Apache2 :

             	<Directory /var/www/openxpki/CertEnroll>
                   Options FollowSymlinks
                   AllowOverride None
                   Allow from all
             	</Directory>
  8. Démarrez le service Apache à l'aide de service apache2 start.

Activation du service SCEP

  1. Arrêtez le service OpenXPKI à l'aide de openxpkictl stop.

  2. Installez le package openca-tools à l'aide de aptitude install openca-tools.

  3. Démarrez le service OpenXPKI à l'aide de openxpkictl start.

Testez le service à l'aide de n'importe quel client, tel que certnanny avec SSCEP.

Remarque : SSCEP est un client de ligne de commande pour SCEP. Vous pouvez télécharger SSCEP depuis https://github.com/certnanny/sscep.

Activation du certificat du signataire pour le compte de (agent d'inscription)

Pour les demandes de certificat automatiques, nous utilisons la fonction du certificat du signataire pour le compte de d'OpenXPKI.

  1. Arrêtez le service OpenXPKI à l'aide de openxpkictl stop.

  2. Dans nano /etc/openxpki/config.d/realm/ca-one/scep/generic.yaml, depuis la section authorized_signer:, ajoutez une règle pour le nom d'objet du certificat du signataire.

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

    Remarques :

    • Dans cette règle, tout certificat CN commençant par MarkVision_ est le certificat du signataire pour le compte de.
    • Le nom de l'objet est défini dans MVE pour la génération du certificat du signataire pour le compte de.
    • Vérifiez l'espace et l'indentation dans le fichier de script.
    • Si le CN est modifié dans MVE, ajoutez le CN mis à jour dans OpenXPKI.
    • Vous ne pouvez spécifier qu'un seul certificat en tant que signataire pour le compte de, puis spécifiez le CN complet.
  3. Enregistrez le fichier.

  4. Démarrez le service OpenXPKI à l'aide de openxpkictl start.

Activation de l'approbation automatique des demandes de certificat dans l'autorité de certification OpenXPKI

  1. Arrêtez le service OpenXPKI à l'aide de openxpkictl stop.

  2. Dans nano /etc/openxpki/config.d/realm/ca-one/scep/generic.yaml, mettez à jour les éléments éligibles : section :

    Ancien contenu

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

    Nouveau contenu

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

    Remarques :

    • Vérifiez l'espace et l'indentation dans le fichier de script.
    • Pour approuver les certificats manuellement, commentez la ligne valeur : 1, puis supprimez les commentaires des autres lignes commentées précédemment.
  3. Enregistrez le fichier.

  4. Démarrez le service OpenXPKI à l'aide de openxpkictl start.

Création d'un deuxième domaine

Dans OpenXPKI, vous pouvez configurer plusieurs structures PKI dans le même système. Les rubriques suivantes expliquent comment créer un autre domaine pour MVE nommé ca-two.

Copie et définition du répertoire

  1. Copiez l'exemple d'arborescence /etc/openxpki/config.d/realm/ca-one dans un nouveau répertoire (cp -avr /etc/openxpki/config.d/realm/ca-one /etc/openxpki/config.d/realm/ca-two) dans le répertoire de domaine.

  2. Dans etc/openxpki/config.d/system/realms.yaml, mettez à jour la section suivante :

    Ancien contenu
    # 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/
    Nouveau contenu
    # 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. Enregistrez le fichier.

Création de certificats

Les instructions suivantes indiquent comment générer le certificat du signataire, le certificat du coffre et le certificat SCEP. L'autorité de certification racine signe le certificat du signataire, puis le certificat du signataire signe le certificat SCEP. Le certificat du coffre est auto-signé.

  1. Générez, puis signez les certificats. Pour plus d'informations, reportez-vous à la section Configuration manuelle de l'autorité de certification OpenXPKI.

    Remarque : Modifiez le nom commun du certificat afin que l'utilisateur puisse facilement distinguer les différents certificats des différents domaines. Vous pouvez remplacer DC=CA-ONE par DC=CA-TWO. Les fichiers de certificat sont créés dans le répertoire /etc/certs/openxpki_ca-two/.
  2. Copiez les fichiers de clés dans /etc/openxpki/ca/ca-two/.

    Remarque : Les fichiers de clés doivent être lisibles par 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. Créez le lien symbolique. Créez également un lien symbolique pour le certificat CA racine.

    Remarque : Les liens symboliques sont des alias utilisés par la configuration par défaut.
    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. Importez le certificat du signataire, le certificat du coffre et le certificat SCEP dans la base de données avec les jetons appropriés pour 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. Vérifiez si l'importation est réussie à l'aide de openxpkiadm alias --realm ca-two.

    Exemple d'impression
    === 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
    

    Dans ce cas, les informations de l'autorité de certification racine sont les mêmes pour ca-one et ca-two.

  6. Si vous avez modifié le mot de passe de la clé de certificat lors de la création du certificat, alors mettez à jour nano /etc/openxpki/config.d/realm/ca-two/crypto.yaml.

  7. Générez les CRL pour ce domaine. Pour plus d'informations, reportez-vous à la section Génération des informations CRL.

  8. Publier les CRL pour ce domaine. Pour plus d'informations, reportez-vous à la section Configuration de l'accessibilité CRL.

  9. Redémarrez le service OpenXPKI à l'aide de openxpkictl restart.

    Exemple d'impression
    Stopping OpenXPKI
    Stopping gracefully, 3 (sub)processes remaining...
    DONE.
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  10. Pour accéder au serveur OpenXPKI, procédez comme suit :

    1. Depuis un navigateur Web, saisissez http://ipaddress/openxpki/.

    2. Connectez-vous en tant qu'opérateur. Le mot de passe par défaut est openxpki.

      Remarque : La connexion Opérateur a deux comptes opérateur préconfigurés, raop et raop2.

Configuration du point de terminaison SCEP pour plusieurs domaines

Le point de terminaison SCEP du domaine par défaut est http://<ipaddress>/scep/scep. Si vous disposez de plusieurs domaines, configurez un point de terminaison SCEP unique (fichier de configuration différent) pour chaque domaine. Dans les instructions suivantes, nous utilisons deux domaines PKI, ca-one et ca-two.

  1. Copiez le fichier de configuration par défaut dans cp /etc/openxpki/scep/default.conf /etc/openxpki/scep/ca-one.conf.

    Remarque : Nommez le fichier ca-one.conf.
  2. Dans penxpki/scep/ca-one.conf, définissez la valeur du domaine sur realm=ca-one.

  3. Créez un autre fichier de configuration dans cp /etc/openxpki/scep/default.conf /etc/openxpki/scep/ca-two.conf.

    Remarque : Nommez le fichier ca-two.conf.
  4. Dans nano /etc/openxpki/scep/ca-two.conf, définissez la valeur du domaine sur realm=ca-two.

  5. Redémarrez le service OpenXPKI à l'aide de openxpkictl restart.

Les points de terminaison SCEP sont les suivants :

Si vous souhaitez faire la différence entre les informations d'identification de connexion et les modèles de certificat par défaut pour différents domaines PKI, vous aurez peut-être besoin d'une configuration avancée.

Autorisation de la présence de plusieurs certificats actifs à la fois ayant le même sujet

Par défaut, dans OpenXPKI, un seul certificat avec le même nom d'objet peut être actif à la fois. Cependant, lorsque vous appliquez plusieurs Certificats nommés, plusieurs certificats actifs portant le même nom d'objet doivent être présents à la fois.

  1. Dans /etc/openxpki/config.d/realm/REALM NAME/scep/generic.yaml, dans la section Politique, remplacez la valeur 1 de max_active_certs par 0.

    Remarques :

    • REALM NAME est le nom du domaine. Par exemple, ca-one.
    • Vérifiez l'espace et l'indentation dans le fichier de script.
  2. Redémarrez le service OpenXPKI à l'aide de openxpkictl restart.

Définition du numéro de port par défaut pour l'autorité de certification OpenXPKI

Par défaut, Apache écoute dans le numéro de port 80. Définissez le numéro de port par défaut de l'autorité de certification OpenXPKI pour éviter les conflits.

  1. Dans /etc/apache2/ports.conf, ajoutez ou modifiez un port. Par exemple, Ecouter 8080.

  2. Dans /etc/apache2/sites-enabled/000-default.conf, ajoutez ou modifiez la section VirtualHost pour mapper le nouveau port. Par exemple, <VirtualHost *:8080>.

  3. Redémarrez le serveur Apache à l'aide de systemctl restart apache2.

Pour vérifier l'état, exécutez netstat -tlpn| grep apache. L'URL SCEP OpenXPKI est désormais http://ipaddress:8080/scep/ca-one, et l'URL Web est http://ip address:8080/openxpki.

Rejet des demandes de certificat sans Mot de passe de challenge dans la CA OpenXPKI

Par défaut, OpenXPKI accepte les demandes sans vérifier le mot de passe de challenge. La demande de certificat n'est pas rejetée et l'administrateur de l'autorité de certification et l'autorité de certification déterminent s'il faut approuver ou rejeter la demande. Pour éviter tout problème de sécurité potentiel, désactivez cette fonction afin que toute demande de certificat contenant des mots de passe non valides soit immédiatement rejetée. Dans MVE, Mot de passe de challenge est requis uniquement lors de la génération du certificat d'agent d'inscription.

  1. Dans etc/openxpki/config.d/realm/REALM NAME/scep/generic.yaml, à partir de la section Politique, remplacez la valeur 1 de allow_man_authen par 0.

    Remarques :

    • REALM NAME est le nom du domaine. Par exemple, ca-one.
    • Vérifiez l'espace et l'indentation dans le fichier de script.
  2. Redémarrez le service OpenXPKI à l'aide de openxpkictl restart.

Ajout de l'EKU d'authentification client dans les certificats

  1. Dans /etc/openxpki/config.d/realm/REALM NAME/profile/I18N_OPENXPKI_PROFILE_TLS_SERVER.yaml, depuis la section extended_key_usage: remplacez la valeur client_auth: par 1.

    Remarques :

    • REALM NAME est le nom du domaine. Par exemple, ca-one.
    • Vérifiez l'espace et l'indentation dans le fichier de script.
  2. Redémarrez le service OpenXPKI à l'aide de openxpkictl restart.

obtention de l'objet de certificat complet lors d'une demande via SCEP

Par défaut, OpenXPKI lit uniquement le CN de l'objet du certificat demandeur. Les autres informations, telles que le pays, la localité et DC, sont codées en dur. Par exemple, si un objet de certificat est C=US, ST=KY, L=Lexington, O=Lexmark, OU=ISS, CN=ET0021B7C34AEC.dhcp.dev.lexmark.com, alors après avoir signé le certificat via SCEP, le sujet est remplacé par DC=Test Deployment, DC= OpenXPKI, CN=ET0021B7C34AEC.dhcp.dev.lexmark.com.

Remarque : REALM NAME est le nom du domaine. Par exemple, ca-one.
  1. Dans /etc/openxpki/config.d/realm/REALM NAME/profile/I18N_OPENXPKI_PROFILE_TLS_SERVER.yaml, dans la section Inscrire, modifiez la valeur dn comme suit :

    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. Enregistrez le fichier.

  3. Créez un fichier intitulé l.yaml dans le répertoire /etc/openxpki/config.d/realm/REALM NAME/profile/template.

  4. Ajoutez ce qui suit :

    id: L
    label: L
    description: I18N_OPENXPKI_UI_PROFILE_L_DESC
    preset: L
    type: freetext
    width: 60
    placeholder: Kolkata
  5. Enregistrez le fichier.

  6. Créez un fichier intitulé st.yaml dans le répertoire /etc/openxpki/config.d/realm/REALM NAME/profile/template.

  7. Ajoutez ce qui suit :

    id: ST
    label: ST
    description: I18N_OPENXPKI_UI_PROFILE_ST_DESC
    preset: ST
    type: freetext
    width: 60
    placeholder: WB
  8. Enregistrez le fichier.

    Remarque : OpenXPKI doit posséder les deux fichiers et être lisible, inscriptible et exécutable.
  9. Redémarrez le service OpenXPKI à l'aide de openxpkictl restart.

Révocation des certificats et publication de CRL

  1. Accédez au serveur OpenXPKI.

    1. Depuis un navigateur Web, saisissez http://ipaddress/openxpki/.

    2. Connectez-vous en tant qu'opérateur. Le mot de passe par défaut est openxpki.

      Remarque : La connexion Opérateur a deux comptes opérateur préconfigurés, raop et raop2.
  2. Cliquez sur Recherche de flux > Rechercher maintenant.

  3. Cliquez sur un certificat à révoquer, puis cliquez sur le lien du certificat.

  4. Dans la section Action, cliquez sur demande de révocation.

  5. Saisissez les valeurs appropriées, puis cliquez sur Continuer > Envoyer la demande.

  6. Sur la page suivante, approuvez la demande. La révocation du certificat attend la prochaine publication de CRL.

  7. Dans la section Fonctionnement PKI, cliquez sur Emettre une liste de révocation de certificat (CRL).

  8. Cliquez sur Appliquer la création de listes de révocation > Continuer.

  9. Dans la section Fonctionnement PKI, cliquez sur Publier CA/CRL.

  10. Cliquez sur Recherche de flux > Rechercher maintenant.

  11. Cliquez sur le certificat révoqué de type certificate_revocation_request_v2.

  12. Cliquez sur Forcer la réactivation.

Dans le nouveau CRL, vous trouverez le numéro de série et le motif de révocation du certificat révoqué.