Gerenciamento de certificados usando a autoridade de certificações da OpenXPKI pelo SCEP

Esta seção fornece instruções sobre como configurar o OpenXPKI CA versão 2.5.x usando o Protocolo de registro de certificado simples (SCEP).

Notas:

Configuração do OpenXPKI CA

Instalação do OpenXPKI CA

  1. Conecte a máquina usando o PuTTY ou outro cliente.

  2. No cliente, execute o comando sudo su - para ir para o usuário raiz.

  3. Insira a senha raiz.

  4. Em nano /etc/apt/sources.list , altere a origem para a instalação de atualizações.

  5. Atualize o arquivo. Por exemplo:

    #
    
    # 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. Salve o arquivo.

  7. Execute os seguintes comandos:

    • apt-get update

    • apt-get upgrade

  8. Atualize as listas de certificados CA no servidor usando apt-get install ca-certificates .

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

  10. Selecione o local en_US.UTF-8 UTF-8 e torne-o o local padrão para o sistema.

    Nota:  Use a tecla Tab e a barra de espaço para selecionar e navegar pelo menu.
  11. Verifique os locais gerados usando locale –a .

    Saída de amostra
    C
    C.UTF-8
    en_IN
    en_IN.utf8
    en_US.utf8
    POSIX
  12. Copie a impressão digital do pacote OpenXPKI usando nano /home/Release.key . Neste exemplo, copie a chave em /home .

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

  14. Execute o seguinte comando:

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

  15. Adicione o pacote usando o comando wget https://packages.openxpki.org/v2/debian/Release.key -O - | apt-key add - .

  16. Adicione o repositório à lista de origem (jessie) usando echo "deb http://packages.openxpki.org/v2/debian/jessie release" > /etc/apt/sources.list.d/openxpki.list e, em seguida, aptitude update .

  17. Instale a ligação MySQL e Perl MySQL usando aptitude install mysql-server libdbd-mysql-perl .

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

  19. Em nano /etc/apt/sources.list , instale o módulo fastcgi para acelerar a interface de usuário.

    Nota:  Recomendamos usar mod_fcgid .
  20. Adicione a linha deb http://http.us.debian.org/debian/jessie main ao arquivo, e salve-o.

  21. Execute os seguintes comandos:

    apt-get update

    aptitude install libapache2-mod-fcgid

  22. Ative o módulo fastcgi usando a2enmod fcgid .

  23. Instale o pacote de núcleo OpenXPKI usando aptitude install libopenxpki-perl openxpki-cgi-session-driver openxpki-i18n .

  24. Reinicie o servidor Apache usando service apache2 restart .

  25. Verifique se a instalação foi bem-sucedida usando openxpkiadm version .

    Nota:  Se a instalação for bem-sucedida, o sistema mostrará a versão do OpenXPKI instalado. Por exemplo, Versão (núcleo): 2.5.5 .
  26. Crie o banco de dados vazio e atribua o usuário do banco de dados usando mysql -u root –p .

    Notas:

    • Esse comando deve ser digitado no cliente. Caso contrário, não será possível inserir a senha.
    • Digite a senha para o MySQL. Nesta instância, root é o usuário MySQL.
    • openxpki é o usuário no qual o OpenXPKI está instalado.
    CREATE DATABASE openxpki CHARSET utf8; 
    CREATE USER 'openxpki'@'localhost' IDENTIFIED BY 'openxpki';
    GRANT ALL ON openxpki.* TO 'openxpki'@'localhost';
    flush privileges;

    Se o serviço MySQL não estiver em execução, execute /etc/init.d/mysql start para iniciar o serviço.

  27. Digite quit para sair do MySQL.

  28. Armazene as credenciais usadas em /etc/openxpki/config.d/system/database.yaml .

    Conteúdo de arquivo de amostra
    debug: 0
    type: MySQL
    name: openxpki
    host: localhost
    port: 3306
    user: openxpki 
    passwd: openxpki
    Nota:  Altere user e passwd para que correspondam ao nome de usuário e à senha do MySQL.
  29. Salve o arquivo.

  30. Para esquema de banco de dados vazio, execute zcat /usr/share/doc/libopenxpki-perl/examples/schema-mysql.sql.gz | \mysql -u root --password --database openxpki no arquivo de esquema fornecido.

  31. Insira a senha do banco de dados.

Configuração do OpenXPKI CA usando o script padrão

Nota:  O script padrão configura apenas o realm padrão, ca-one . O CDP e as CRLs não estão configurados.
  1. Descompacte o script de exemplo para instalar o certificado usando gunzip -k /usr/share/doc/libopenxpki-perl/examples/sampleconfig.sh.gz .

  2. Execute o script usando bash /usr/share/doc/libopenxpki-perl/examples/sampleconfig.sh .

  3. Confirme a configuração usando openxpkiadm alias --realm ca-one .

    Saída de amostra
    === 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. Verifique se a instalação foi bem-sucedida usando openxpkictl start .

    Saída de amostra
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  5. Faça o seguinte para acessar o servidor OpenXPKI:

    1. Em um navegador da Web, digite http://ipaddress/openxpki/ .

    2. Faça login como Operador . A senha padrão é openxpki .

      Nota:  O login de Operador tem duas contas de operador pré-configuradas, raop e raop2 .
  6. Crie uma solicitação de certificado e teste-a.

Configuração manual do OpenXPKI CA

Visão geral

Nota:  Antes de começar, certifique-se de ter um conhecimento básico sobre a criação de certificados OpenSSL.

Para configurar o OpenXPKI CA manualmente, crie o seguinte:

  1. Certificado CA raiz. Para mais informações, consulte Criação de certificados CA raiz .

  2. Certificado do signatário da CA, assinado pela CA raiz. Para mais informações, consulte Criação de certificados do signatário .

  3. Certificado do vault de dados, autoassinado. Para mais informações, consulte Criação de certificados de vault .

  4. Certificado SCEP, assinado pelo certificado do signatário.

Notas:

Neste exemplo, estamos usando o diretório /etc/certs/openxpki_ca-one/ para a geração de certificados. No entanto, você pode usar qualquer diretório.

Criação de arquivos de configuração OpenSSL

  1. Execute o seguinte comando:

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

    Nota:  Se seu servidor estiver acessível usando o nome de domínio totalmente qualificado (FQDN), use o DNS do servidor em vez do seu endereço IP.
    Arquivo de exemplo
    # 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. Altere o endereço IP e o nome do certificado CA com suas informações de configuração.

  3. Salve o arquivo.

Criação de arquivos de senha para chaves de certificado

  1. Execute o seguinte comando:

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

  2. Digite a senha.

  3. Salve o arquivo.

Criação de certificados CA raiz

Nota:  Você pode criar um certificado CA raiz autoassinado ou gerar uma solicitação de certificado e, em seguida, fazer com que seja assinado pela CA raiz.

Execute os seguintes comandos:

Nota:  Substitua o comprimento da chave, o algoritmo de assinatura e o nome do certificado pelos valores apropriados.
  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

Criação de certificados do signatário

Nota:  Substitua o comprimento da chave, o algoritmo de assinatura e o nome do certificado pelos valores apropriados.
  1. Execute o seguinte comando:

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

  2. Altere o assunto na solicitação com suas informações CA usando 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. Obtenha o certificado assinado pela CA raiz usando 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 .

Criação de certificados de vault

Notas:

  1. Execute o seguinte comando:

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

  2. Altere o assunto na solicitação com suas informações CA usando 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. Execute o seguinte 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

Criação de certificados SCEP

Nota:  O certificado SCEP é assinado pelo certificado do signatário.

Execute os seguintes comandos:

Nota:  Substitua o comprimento da chave, o algoritmo de assinatura e o nome do certificado pelos valores apropriados.
  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

Cópia de arquivos de chaves e criação de symlinks

  1. Copie os arquivos de chave para /etc/openxpki/ca/ca-one/ .

    Nota:  Os arquivos de chave devem ser legíveis pelo 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. Crie o symlink.

    Nota:  Symlinks são aliases usados pela configuração padrão.
    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

Importação de certificados

Importe o certificado raiz, o certificado do signatário, o certificado do vault e o certificado SCEP para o banco de dados com os tokens apropriados.

Execute os seguintes 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. Verifique se a importação foi bem-sucedida usando openxpkiadm alias --realm ca-one .

    Saída de amostra
    === 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
    

Inicialização do OpenXPKI

  1. Execute o comando openxpkictl start .

    Saída de amostra
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  2. Faça o seguinte para acessar o servidor OpenXPKI:

    1. Em um navegador da Web, digite http://ipaddress/openxpki/ .

      Nota:  Em vez de ipaddress , você também pode usar o FQDN do servidor.
    2. Faça login como Operador . A senha padrão é openxpki .

      Nota:  O login de Operador tem duas contas de operador pré-configuradas, raop e raop2 .
  3. Crie uma solicitação de certificado e teste-a.

Geração de informações do CRL

Nota:  Se o seu servidor estiver acessível usando FQDN, use o DNS do servidor em vez de seu endereço IP.
  1. Pare o serviço OpenXPKI usando Openxpkictl stop .

  2. Em nano /etc/openxpki/config.d/realm/ca-one/publishing.yaml , atualize a seção conectores: cdp para o seguinte:

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

      • crl_distribution_points: seção

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

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

      Altere o endereço IP e o nome do certificado CA de acordo com o servidor CA.

    2. Em nano /etc/openxpki/config.d/realm/ca-one/crl/default.yaml , faça o seguinte:

      • Se necessário, atualize nextupdate e renewal .

      • Adicione ca_issuers à seguinte seção:

        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/
        

        Altere o endereço IP e o nome do certificado CA de acordo com o servidor CA.

  3. Inicie o serviço OpenXPKI usando Openxpkictl start .

Configuração da acessibilidade da CRL

  1. Interrompa o serviço Apache usando service apache2 stop .

  2. Crie um diretório CertEnroll para a CRL no diretório /var/www/openxpki/ .

  3. Defina openxpki como o proprietário do diretório e configure as permissões para permitir que o Apache leia e execute, enquanto outros serviços sejam somente leitura.

    chown openxpki /var/www/openxpki/CertEnroll

    chmod 755 /var/www/openxpki/CertEnroll

  4. Adicione uma referência ao arquivo Apache alias.conf usando nano /etc/apache2/mods-enabled/alias.conf .

  5. Após a seção <Directory "/usr/share/apache2/icons"> , adicione o seguinte:

            	Alias /CertEnroll/ "/var/www/openxpki/CertEnroll/"
             	<Directory "/var/www/openxpki/CertEnroll">
                   Options FollowSymlinks
                   AllowOverride None
                   Require all granted
             	</Directory>
  6. Adicione uma referência no arquivo apache2.conf usando nano /etc/apache2/apache2.conf .

  7. Adicione o seguinte na seção servidor Apache2 HTTPD :

             	<Directory /var/www/openxpki/CertEnroll>
                   Options FollowSymlinks
                   AllowOverride None
                   Allow from all
             	</Directory>
  8. Inicie o serviço Apache usando service apache2 start .

Ativação do serviço SCEP

  1. Pare o serviço OpenXPKI usando openxpkictl stop .

  2. Instale o pacote openca-tools usando aptitude install openca-tools .

  3. Inicie o serviço OpenXPKI usando openxpkictl start .

Teste o serviço usando qualquer cliente, como certnanny com SSCEP.

Nota:  SSCEP é um cliente de linha de comando para SCEP. Você pode fazer download do SSCEP em https://github.com/certnanny/sscep .

Ativação do certificado Signatário em nome de (agente de inscrição)

Para solicitações automáticas de certificado, estamos usando o recurso de certificado Signatário em nome de OpenXPKI.

  1. Pare o serviço OpenXPKI usando openxpkictl stop .

  2. Em nano /etc/openxpki/config.d/realm/ca-one/scep/generic.yaml , na seção authorized_signer: adicione uma regra para o nome do assunto do certificado do signatário.

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

    Notas:

    • Nessa regra, qualquer CN de certificado iniciado com Markvision_ é o certificado Signatário em nome de.
    • O nome do assunto é definido no MVE para gerar o certificado Signatário em nome de.
    • Revise o espaço e o recuo no arquivo de script.
    • Se o CN for alterado no MVE, adicione o CN atualizado em OpenXPKI.
    • Você pode especificar apenas um certificado como Signatário em nome de e, em seguida, especificar o CN completo.
  3. Salve o arquivo.

  4. Inicie o serviço OpenXPKI usando openxpkictl start .

Ativação da aprovação automática de solicitações de certificado no OpenXPKI CA

  1. Pare o serviço OpenXPKI usando openxpkictl stop .

  2. Em nano /etc/openxpki/config.d/realm/ca-one/scep/generic.yaml , atualize elegível: seção:

    Conteúdo antigo

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

    Novo conteúdo

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

    Notas:

    • Revise o espaço e o recuo no arquivo de script.
    • Para aprovar certificados manualmente, comente o valor: 1 e, em seguida, remova o comentário das outras linhas que foram comentadas anteriormente.
  3. Salve o arquivo.

  4. Inicie o serviço OpenXPKI usando openxpkictl start .

Criação de um segundo realm

No OpenXPKI, várias estruturas PKI podem ser configuradas no mesmo sistema. Os tópicos a seguir mostram como criar outro realm para MVE chamado ca-two .

Cópia e configuração de diretórios

  1. Copie a árvore de diretórios de exemplo /etc/openxpki/config.d/realm/ca-one para um novo diretório ( cp -avr /etc/openxpki/config.d/realm/ca-one /etc/openxpki/config.d/realm/ca-two ) dentro do diretório do realm.

  2. Em /etc/openxpki/config.d/system/realms.yaml , atualize a seguinte seção:

    Conteúdo antigo
    # 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/
    Novo conteúdo
    # 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. Salve o arquivo.

Criação de certificados

As instruções a seguir mostram como gerar o certificado do signatário, o certificado do vault e o certificado SCEP. A CA raiz assina o certificado do signatário e, em seguida, o certificado do signatário assina o certificado SCEP. O certificado do vault é autoassinado.

  1. Gere e assine os certificados. Para mais informações, consulte Configuração manual do OpenXPKI CA .

    Nota:  Altere o nome comum do certificado para que o usuário possa distinguir facilmente entre diferentes certificados para diferentes realms. Você pode alterar DC=CA-ONE para DC=CA-TWO . Os arquivos de certificado são criados no diretório /etc/certs/openxpki_ca-two/ .
  2. Copie os arquivos de chave para /etc/openxpki/ca/ca-two/ .

    Nota:  Os arquivos de chave devem ser legíveis pelo 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. Crie o symlink. Além disso, crie um symlink para o certificado CA raiz.

    Nota:  Symlinks são aliases usados pela configuração padrão.
    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 o certificado do signatário, o certificado do vault e o certificado SCEP para o banco de dados com os tokens apropriados 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. Verifique se a importação foi bem-sucedida usando openxpkiadm alias --realm ca-two .

    Saída de amostra
    === 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
    

    Nesse caso, as informações da CA raiz são as mesmas para ca-one e ca-two .

  6. Se tiver alterado a senha da chave de certificado durante a criação do certificado, atualize nano /etc/openxpki/config.d/realm/ca-two/crypto.yaml .

  7. Gere as CRLs para o realm. Para mais informações, consulte Geração de informações do CRL .

  8. Publique as CRLs para o realm. Para mais informações, consulte Configuração da acessibilidade da CRL .

  9. Reinicie o serviço OpenXPKI usando openxpkictl restart .

    Saída de amostra
    Stopping OpenXPKI
    Stopping gracefully, 3 (sub)processes remaining...
    DONE.
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  10. Faça o seguinte para acessar o servidor OpenXPKI:

    1. Em um navegador da Web, digite http://ipaddress/openxpki/ .

    2. Faça login como Operador . A senha padrão é openxpki .

      Nota:  O login de Operador tem duas contas de operador pré-configuradas, raop e raop2 .

Configuração do endpoint SCEP para vários realms

O endpoint SCEP do realm padrão é http://<ipaddress>/scep/scep . Se você tiver vários realms, configure um endpoint SCEP exclusivo (arquivo de configuração diferente) para cada realm. Nas instruções a seguir, usamos dois realms PKI, ca-one e ca-two .

  1. Copie o arquivo de configuração padrão em cp /etc/openxpki/scep/default.conf /etc/openxpki/scep/ca-one.conf .

    Nota:  Nomeie o arquivo como ca-one.conf .
  2. Em nano /etc/openxpki/scep/ca-one.conf , altere o valor do realm para realm=ca-one .

  3. Crie outro arquivo de configuração em cp /etc/openxpki/scep/default.conf /etc/openxpki/scep/ca-two.conf .

    Nota:  Nomeie o arquivo como ca-two.conf .
  4. Em nano /etc/openxpki/scep/ca-two.conf , altere o valor do realm para realm=ca-two .

  5. Reinicie o serviço OpenXPKI usando openxpkictl restart .

Os endpoints SCEP são os seguintes:

Se quiser diferenciar entre credenciais de login e modelos de certificado padrão para diferentes realms PKI, talvez uma configuração avançada seja necessária.

Ativando vários certificados ativos com a mesma entidade a estar presente por vez

Por padrão, no OpenXPKI, somente um certificado com o mesmo nome de entidade pode estar ativo por vez. Mas, quando você está impondo vários certificados nomeados, vários certificados ativos com o mesmo nome de entidade precisam estar presentes de cada vez.

  1. Em /etc/openxpki/config.d/realm/REALM NAME/scep/generic.yaml , na seção política , altere o valor de max_active_certs de 1 para 0 .

    Notas:

    • REALM NAME é o nome do realm. Por exemplo, ca-one .
    • Revise o espaço e o recuo no arquivo de script.
  2. Reinicie o serviço OpenXPKI usando openxpkictl restart .

Configuração do número de portas padrão para OpenXPKI CA

Por padrão, o Apache escuta na porta número 80. Configure o número de porta padrão para OpenXPKI CA, para evitar conflitos.

  1. Em /etc/apache2/ports.conf , adicione ou modifique uma porta. Por exemplo, Escutar 8080 .

  2. Em /etc/apache2/sites-enabled/000-default.conf , adicione ou modifique a seção VirtualHost para mapear a nova porta. Por exemplo, <VirtualHost *:8080> .

  3. Reinicie o servidor Apache usando systemctl restart apache2 .

Para verificar o status, execute netstat -tlpn| grep apache . O URL de OpenXPKI SCEP agora é http://ipaddress:8080/scep/ca-one , e o URL da Web é http://ip address:8080/openxpki .

Rejeitando solicitações de certificado sem Senha de desafio na AC do OpenXPKI

Por padrão, o OpenXPKI aceita solicitações sem verificar a senha de desafio. A solicitação de certificado não é rejeitada, e a CA e o administrador da CA determinam se a solicitação deve ser aprovada ou rejeitada. Para evitar possíveis problemas de segurança, desative esse recurso para que todas as solicitações de certificados que contenham senhas inválidas sejam rejeitadas imediatamente. No MVE, a Senha de desafio é necessária somente ao gerar o certificado do agente de inscrição.

  1. Em etc/openxpki/config.d/realm/REALM NAME/scep/generic.yaml , na seção política , altere o valor de allow_man_authen de 1 para 0 .

    Notas:

    • REALM NAME é o nome do realm. Por exemplo, ca-one .
    • Revise o espaço e o recuo no arquivo de script.
  2. Reinicie o serviço OpenXPKI usando openxpkictl restart .

Adição de EKU de autenticação de cliente em certificados

  1. Em /etc/openxpki/config.d/realm/REALM NAME/profile/I18N_OPENXPKI_PROFILE_TLS_SERVER.yaml , na seção extended_key_usage: altere o valor de client_auth: para 1 .

    Notas:

    • REALM NAME é o nome do realm. Por exemplo, ca-one .
    • Revise o espaço e o recuo no arquivo de script.
  2. Reinicie o serviço OpenXPKI usando openxpkictl restart .

Obtenção de entidades de certificado completo ao solicitar pelo SCEP

Por padrão, o OpenXPKI lê apenas o CN do assunto do certificado solicitante. As demais informações, como país, localidade e DC, são codificadas. Por exemplo, se o assunto de um certificado é C=US , ST=KY , L=Lexington , O=Lexmark , OU=ISS , CN=ET0021B7C34AEC.dhcp.dev.lexmark.com , após assinar o certificado pelo SCEP, o assunto é alterado para DC=Teste de implantação , DC= OpenXPKI , CN=ET0021B7C34AEC.dhcp.dev.lexmark.com .

Nota:  REALM NAME é o nome do realm. Por exemplo, ca-one .
  1. Em /etc/openxpki/config.d/realm/REALM NAME/profile/I18N_OPENXPKI_PROFILE_TLS_SERVER.yaml , na seção inscrever , altere o valor de dn para:

    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. Salve o arquivo.

  3. Crie um arquivo chamado l.yaml no diretório /etc/openxpki/config.d/realm/REALM NAME/profile/template .

  4. Adicione o seguinte:

    id: L
    label: L
    description: I18N_OPENXPKI_UI_PROFILE_L_DESC
    preset: L
    type: freetext
    width: 60
    placeholder: Kolkata
  5. Salve o arquivo.

  6. Crie um arquivo chamado st.yaml no diretório /etc/openxpki/config.d/realm/REALM NAME/profile/template .

  7. Adicione o seguinte:

    id: ST
    label: ST
    description: I18N_OPENXPKI_UI_PROFILE_ST_DESC
    preset: ST
    type: freetext
    width: 60
    placeholder: WB
  8. Salve o arquivo.

    Nota:  OpenXPKI deve possuir ambos os arquivos e deve ser legível, gravável e executável.
  9. Reinicie o serviço OpenXPKI usando openxpkictl restart .

Revogando certificados e publicando o CRL

  1. Acesse o servidor OpenXPKI.

    1. Em um navegador da Web, digite http://ipaddress/openxpki/ .

    2. Faça login como Operador . A senha padrão é openxpki .

      Nota:  O login de Operador tem duas contas de operador pré-configuradas, raop e raop2 .
  2. Clique em Pesquisa de fluxo de trabalho > Pesquisar agora .

  3. Clique em um certificado para revogar e, em seguida, clique no link do certificado.

  4. Na seção Ação, clique em solicitação de revogação .

  5. Digite os valores apropriados e clique em Continuar > Enviar solicitação .

  6. Na próxima página, aprove a solicitação. A revogação de certificado está aguardando a próxima publicação da CRL.

  7. Na seção Operação de PKI, clique em Emitir uma CRL (Certificate Revocation List, lista de revogação de certificados) .

  8. Clique em Aplicar criação de listas de revogação > Continuar .

  9. Na seção Operação de PKI, clique em Publicar CA/CRL .

  10. Clique em Pesquisa de fluxo de trabalho > Pesquisar agora .

  11. Clique no certificado revogado com um tipo certificate_revogation_request_v2 .

  12. Clique em Forçar ativação .

Na nova CRL, você pode encontrar o número de série e o motivo da revogação do certificado revogado.