使用 OpenXPKI 证书颁发机构管理证书

本节提供有关如何使用简单证书注册协议 (SCEP) 配置OpenXPKI CA 2.5.x 版本的说明。

注意:

配置 OpenXPKI CA

安装 OpenXPKI CA

  1. 使用 PuTTY 或另一个客户端连接机器。

  2. 从客户端,运行 sudo su - 命令以转到根用户。

  3. 输入根密码。

  4. nano /etc/apt/sources.list 中,更改安装更新的源。

  5. 更新文件。例如:

    #
    
    # 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. 保存文件。

  7. 运行以下命令:

    • apt-get update

    • apt-get upgrade

  8. 使用 apt-get install ca-certificates 更新服务器中的 CA 证书列表。

  9. 使用 dpkg-reconfigure locales 安装 en_US.utf8 locale

  10. 选择 en_US.UTF-8 UTF-8 区域设置,然后使其成为系统的默认区域设置。

    注意: 使用 Tab 和空格键选择和导览菜单。
  11. 检查您已经使用 locale -a 生成的区域设置。

    Sample output
    C
    C.UTF-8
    en_IN
    en_IN.utf8
    en_US.utf8
    POSIX
  12. 使用 nano /home/Release.key 复制 OpenXPKI 软件包的指纹。对于此实例,复制 /home 中的密钥。

  13. 键入 9B156AD0 F0E6A6C7 86FABE7A D8363C4E 1611A2BE 2B251336 01D1CDB4 6C24BEF3 作为值。

  14. 运行以下命令:

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

  15. 使用 wget https://packages.openxpki.org/v2/debian/Release.key -O - | apt-key add - 命令添加软件包。

  16. 使用 echo "deb http://packages.openxpki.org/v2/debian/jessie release" > /etc/apt/sources.list.d/openxpki.list,然后使用 aptitude update,将存储库添加到源列表 (jessie) 中。

  17. 使用 aptitude install mysql-server libdbd-mysql-perl 安装 MySQL 和 Perl MySQL 绑定。

  18. 使用 aptitude install apache2.2-common 安装 apache2.2-common。

  19. nano /etc/apt/sources.list 中,安装 fastcgi 模块以加速用户界面。

    注意: 我们建议使用 mod_fcgid
  20. 在文件中添加 deb http://http.us.debian.org/debian/jessie main 行,然后保存。

  21. 运行以下命令:

    apt-get update

    aptitude install libapache2-mod-fcgid

  22. 使用 a2enmod fcgid 启用 fastcgi 模块。

  23. 使用 aptitude install libopenxpki-perl openxpki-cgi-session-driver openxpki-i18n 安装 OpenXPKI 内核软件包。

  24. 使用 service apache2 restart 重新启动 Apache 服务器。

  25. 使用 openxpkiadm version 检查安装是否成功。

    注意: 如果安装成功,则系统会显示已安装的 OpenXPKI 版本。例如:版本(内核):2.5.5
  26. 创建空数据库,然后使用 mysql -u root -p 分配数据库用户。

    注意:

    • 此命令必须在客户端中键入。否则,您无法输入密码。
    • 键入 MySQL 的密码。对于此实例,root 是 MySQL 用户。
    • openxpki 是安装 OpenXPKI 的用户。
    CREATE DATABASE openxpki CHARSET utf8; 
    CREATE USER 'openxpki'@'localhost' IDENTIFIED BY 'openxpki';
    GRANT ALL ON openxpki.* TO 'openxpki'@'localhost';
    flush privileges;

    如果 MySQL 服务没有运行,则运行 /etc/init.d/mysql start 来启动服务。

  27. 键入 quit 以退出 MySQL。

  28. 将使用的凭证存储在 /etc/openxpki/config.d/system/database.yaml 中。

    Sample file content
    debug: 0
    type: MySQL
    name: openxpki
    host: localhost
    port: 3306
    user: openxpki 
    passwd: openxpki
    注意: 更改 userpasswd 以匹配 MySQL 用户名和密码。
  29. 保存文件。

  30. 对于空数据库架构,请从提供的架构文件运行 zcat /usr/share/doc/libopenxpki-perl/examples/schema-mysql.sql.gz | \mysql -u root --password --database openxpki

  31. 输入数据库的密码。

使用默认脚本配置 OpenXPKI CA

注意: 默认脚本只配置默认领域,ca-one。不配置 CDP 和 CRL。
  1. 使用 gunzip -k /usr/share/doc/libopenxpki-perl/examples/sampleconfig.sh.gz 解压缩安装证书的示例脚本。

  2. 使用 bash /usr/share/doc/libopenxpki-perl/examples/sampleconfig.sh 运行脚本。

  3. 使用 openxpkiadm alias --realm ca-one 确认设置。

    Sample output
    === 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. 使用 openxpkictl start检查安装是否成功。

    Sample output
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  5. 执行以下操作以访问 OpenXPKI 服务器:

    1. 从 Web 浏览器,键入 http://ipaddress/openxpki/

    2. 操作员身份登录。默认密码是 openxpki

      注意: “操作员”登录有两个预配置的操作员帐户,raopraop2
  6. 创建一个证书请求,然后进行测试。

手动配置 OpenXPKI CA

概述

注意: 在开始之前,请确保您具有创建 OpenSSL 证书的基本知识。

要手动配置 OpenXPKI CA,请创建以下内容:

  1. 根 CA 证书。如需更多信息,请参阅创建根 CA 证书

  2. CA 签名者证书,由根 CA 签名。如需更多信息,请参阅创建签名者证书

  3. 数据保管库证书,自签名。如需更多信息,请参阅创建保管库证书

  4. SCEP 证书,由签名者证书签名。

注意:

对于此实例,我们使用 /etc/certs/openxpki_ca-one/ 目录生成证书。但是,您可以使用任何目录。

创建 OpenSSL 配置文件

  1. 运行以下命令:

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

    注意: 如果您的服务器可以使用完全合格域名 (FQDN) 进行访问,则使用服务器的 DNS 而不是其 IP 地址。
    Sample file
    # 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. 使用您的设置信息更改 IP 地址和 CA 证书名称。

  3. 保存文件。

为证书密钥创建密码文件

  1. 运行以下命令:

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

  2. 键入您的密码。

  3. 保存文件。

创建根 CA 证书

注意: 您可以创建自签名的根 CA 证书或生成证书请求,然后使它由根 CA 签名。

运行以下命令:

注意: 用适当的值替换密钥长度、签名算法和证书名称。
  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

创建签名者证书

注意: 用适当的值替换密钥长度、签名算法和证书名称。
  1. 运行以下命令:

    openssl genrsa -out /etc/certs/openxpki_ca-one/ca-signer-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_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,用 CA 信息更改请求中的主题。

  3. 使用 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 获取由根 CA 签名的证书。

创建保管库证书

注意:

  1. 运行以下命令:

    openssl genrsa -out /etc/certs/openxpki_ca-one/vault-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_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,用 CA 信息更改请求中的主题。

  3. 运行以下命令:

    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

创建 SCEP 证书

注意: SCEP 证书由签名者证书签名。

运行以下命令:

注意: 用适当的值替换密钥长度、签名算法和证书名称。
  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

复制密钥文件并创建符号链接

  1. 将密钥文件复制到 /etc/openxpki/ca/ca-one/

    注意: 密钥文件必须由 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. 创建符号链接。

    注意: 符号链接是默认配置使用的别名。
    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

导入证书

使用适当的令牌将根证书、签名者证书、保管库证书和 SCEP 证书导入数据库中。

运行以下命令:

  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. 使用 openxpkiadm alias --realm ca-one 检查导入是否成功。

    Sample output
    === 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
    

启动 OpenXPKI

  1. 运行 openxpkictl start 命令。

    Sample output
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  2. 执行以下操作以访问 OpenXPKI 服务器:

    1. 从 Web 浏览器,键入 http://ipaddress/openxpki/

      注意: 您还可以使用服务器的 FQDN,而不是 ipaddress
    2. 操作员身份登录。默认密码是 openxpki

      注意: “操作员”登录有两个预配置的操作员帐户,raopraop2
  3. 创建一个证书请求,然后进行测试。

生成 CRL 信息

注意: 如果您的服务器可以使用 FQDN 进行访问,则使用服务器的 DNS 而不是其 IP 地址。
  1. 使用 Openxpkictl stop 停止 OpenXPKI 服务。

  2. nano /etc/openxpki/config.d/realm/ca-one/publishing.yaml 中,将 connectors: cdp 部分更新为以下内容:

    class: Connector::Builtin::File::Path
    LOCATION: /var/www/openxpki/CertEnroll/
    file: "[% ARGS.0 %].crl"
    content: "[% pem %]"
    1. nano /etc/openxpki/config.d/realm/ca-one/profile/default.yaml 中,更新以下内容:

      • crl_distribution_points: 部分

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

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

      根据您的 CA 服务器更改 IP 地址和 CA 证书名称。

    2. nano /etc/openxpki/config.d/realm/ca-one/crl/default.yaml 中,执行以下操作:

      • 如果需要,请更新 nextupdaterenewal

      • ca_issuers 添加到以下部分:

        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/
        

        根据您的 CA 服务器更改 IP 地址和 CA 证书名称。

  3. 使用 Openxpkictl start启动 OpenXPKI 服务。

配置 CRL 可访问性

  1. 使用 service apache2 stop 停止 Apache 服务。

  2. /var/www/openxpki/ 目录中为 crl 创建 CertEnroll 目录。

  3. openxpki 设置为此目录的所有者,然后配置权限以允许 Apache 读取和执行,并且其他服务为只读。

    chown openxpki /var/www/openxpki/CertEnroll

    chmod 755 /var/www/openxpki/CertEnroll

  4. 使用 nano /etc/apache2/mods-enabled/alias.conf 添加对 Apache alias.conf 文件的引用。

  5. <Directory "/usr/share/apache2/icons"> 部分之后,添加以下内容:

            	Alias /CertEnroll/ "/var/www/openxpki/CertEnroll/"
             	<Directory "/var/www/openxpki/CertEnroll">
                   Options FollowSymlinks
                   AllowOverride None
                   Require all granted
             	</Directory>
  6. 使用 nano /etc/apache2/apache2.conf 在 apache2.conf 文件中添加引用。

  7. Apache2 HTTPD server 部分中添加以下内容:

             	<Directory /var/www/openxpki/CertEnroll>
                   Options FollowSymlinks
                   AllowOverride None
                   Allow from all
             	</Directory>
  8. 使用 service apache2 start 启动 Apache 服务。

启用 SCEP 服务

  1. 使用 openxpkictl stop 停止 OpenXPKI 服务。

  2. 使用 aptitude install openca-tools 安装 openca-tools 软件包。

  3. 使用 openxpkictl start 启动 OpenXPKI 服务。

使用任何客户端(如带有 SSCEP 的 certnanny)测试服务。

注意: SSCEP 是 SCEP 的命令行客户端。您可以从 https://github.com/certnanny/sscep 下载 SSCEP。

启用签名者代表(注册代理)证书

对于自动证书请求,我们使用 OpenXPKI 的“签名者代表”证书特性。

  1. 使用 openxpkictl stop 停止 OpenXPKI 服务。

  2. nano /etc/openxpki/config.d/realm/ca-one/scep/generic.yaml 中,从 authorized_signer: 部分,为签名者证书的主题名称添加规则。

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

    注意:

    • 在此规则中,任何以 Markvision_ 开头的证书 CN 是“签名者代表”证书。
    • 在 MVE 中设置主题名称以生成“签名者代表”证书。
    • 检查脚本文件中的空格和缩进。
    • 如果在 MVE 中更改了 CN,则在 OpenXPKI 中添加更新的 CN。
    • 您只能指定一个证书为“签名者代表”,然后指定完整的 CN。
  3. 保存文件。

  4. 使用 openxpkictl start 启动 OpenXPKI 服务。

在 OpenXPKI CA 中启用证书请求的自动批准

  1. 使用 openxpkictl stop 停止 OpenXPKI 服务。

  2. nano /etc/openxpki/config.d/realm/ca-one/scep/generic.yaml 中,更新 eligible: 部分:

    Old content

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

    New content

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

    注意:

    • 检查脚本文件中的空格和缩进。
    • 要手动批准证书,请注释 value: 1,然后取消以前注释的其他行的注释。
  3. 保存文件。

  4. 使用 openxpkictl start 启动 OpenXPKI 服务。

创建第二个领域

在 OpenXPKI 中,您可以在同一系统中配置多个 PKI 结构。以下主题说明如何为 MVE 创建另一个名为 ca-two 的领域。

复制并设置目录

  1. /etc/openxpki/config.d/realm/ca-one 示例目录树复制到领域目录内的新目录 (cp -avr /etc/openxpki/config.d/realm/ca-one /etc/openxpki/config.d/realm/ca-two) 中。

  2. /etc/openxpki/config.d/system/realms.yaml 中,更新以下部分:

    Old content
    # 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/
    New content
    # 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. 保存文件。

创建证书

以下说明显示如何生成签名者证书、保管库证书和 SCEP 证书。根 CA 签署签名者证书,然后签名者证书签署 SCEP 证书。保管库证书是自签名的。

  1. 生成,然后签署证书。如需更多信息,请参阅手动配置 OpenXPKI CA

    注意: 更改证书常用名,以便用户可以轻松分辨用于不同领域的不同证书。您可以将 DC=CA-ONE 更改为 DC=CA-TWO。证书文件被创建在 /etc/certs/openxpki_ca-two/ 目录中。
  2. 将密钥文件复制到 /etc/openxpki/ca/ca-two/

    注意: 密钥文件必须由 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. 创建符号链接。另外,创建根 CA 证书的符号链接。

    注意: 符号链接是默认配置使用的别名。
    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. 使用 ca-two 的适当令牌将签名者证书、保管库证书和 SCEP 证书导入数据库中。

    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. 使用 openxpkiadm alias --realm ca-two 检查导入是否成功。

    Sample output
    === 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
    

    在此实例中,ca-oneca-two 的根 CA 信息相同。

  6. 如果您在证书创建期间更改了证书密钥密码,请更新 nano /etc/openxpki/config.d/realm/ca-two/crypto.yaml

  7. 生成此领域的 CRL。如需更多信息,请参阅生成 CRL 信息

  8. 发布此领域的 CRL。如需更多信息,请参阅配置 CRL 可访问性

  9. 使用 openxpkictl restart 重新启动 OpenXPKI 服务。

    Sample output
    Stopping OpenXPKI
    Stopping gracefully, 3 (sub)processes remaining...
    DONE.
    Starting OpenXPKI...
    OpenXPKI Server is running and accepting requests.
    DONE.
  10. 执行以下操作以访问 OpenXPKI 服务器:

    1. 从 Web 浏览器,键入 http://ipaddress/openxpki/

    2. 操作员身份登录。默认密码是 openxpki

      注意: “操作员”登录有两个预配置的操作员帐户,raopraop2

为多个领域配置 SCEP 端点

默认的领域 SCEP 端点是 http://<ipaddress>/scep/scep。如果您有多个领域,则为每一个领域配置唯一的 SCEP 端点(不同的配置文件)。在下面的说明中,我们使用两个 PKI 领域,ca-oneca-two

  1. 复制 cp /etc/openxpki/scep/default.conf /etc/openxpki/scep/ca-one.conf 中的默认配置文件。

    注意: 将文件命名为 ca-one.conf
  2. nano /etc/openxpki/scep/ca-one.conf 中,将领域值更改为 realm=ca-one

  3. cp /etc/openxpki/scep/default.conf /etc/openxpki/scep/ca-two.conf 中创建另一个配置文件。

    注意: 将文件命名为 ca-two.conf
  4. nano /etc/openxpki/scep/ca-two.conf 中,将领域值更改为 realm=ca-two

  5. 使用 openxpkictl restart 重新启动 OpenXPKI 服务。

SCEP 端点是以下内容:

如果您要区分不同 PKI 领域的登录凭证和默认证书模板,您可能需要高级配置。

允许同时存在具有相同主题的多个活动证书

默认情况下,在 OpenXPKI 中一次只能激活一个具有相同主题名称的证书。但是,当强制执行多个命名证书时,必须同时存在具有相同主题名称的多个活动证书。

  1. /etc/openxpki/config.d/realm/REALM NAME/scep/generic.yaml 中,从 policy 部分,将 max_active_certs 的值从 1 更改为 0

    注意:

    • REALM NAME 是领域的名称。例如:ca-one
    • 检查脚本文件中的空格和缩进。
  2. 使用 openxpkictl restart 重新启动 OpenXPKI 服务。

为 OpenXPKI CA 设置默认端口号

默认情况下,Apache 侦听端口号 80。为 OpenXPKI CA 设置默认端口号以避免冲突。

  1. /etc/apache2/ports.conf 中,添加或修改端口。例如:Listen 8080

  2. /etc/apache2/sites-enabled/000-default.conf 中,添加或修改 VirtualHost 部分以映射新端口。例如:<VirtualHost *:8080>

  3. 使用 systemctl restart apache2 重新启动 Apache 服务器。

要检查状态,请运行 netstat -tlpn| grep apache。OpenXPKI SCEP URL 现在是 http://ipaddress:8080/scep/ca-one,并且 Web URL 是 http://ip address:8080/openxpki

在 OpenXPKI CA 中拒绝不带质询密码的证书请求

默认情况下,OpenXPKI 接收请求而不检查质询密码。证书请求不会被拒绝,并且 CA 和 CA 管理员决定是否批准或拒绝请求。为避免潜在的安全隐患,请禁用此特性,以便立即拒绝所有包含无效密码的证书请求。在 MVE 中,仅当生成注册代理证书时才需要质询密码。

  1. etc/openxpki/config.d/realm/REALM NAME/scep/generic.yaml 中,从 policy 部分,将 allow_man_authen 的值从 1 更改为 0

    注意:

    • REALM NAME 是领域的名称。例如:ca-one
    • 检查脚本文件中的空格和缩进。
  2. 使用 openxpkictl restart 重新启动 OpenXPKI 服务。

在证书中添加客户端身份验证 EKU

  1. /etc/openxpki/config.d/realm/REALM NAME/profile/I18N_OPENXPKI_PROFILE_TLS_SERVER.yaml 中,从 extended_key_usage: 部分,将 client_auth: 的值更改为 1

    注意:

    • REALM NAME 是领域的名称。例如:ca-one
    • 检查脚本文件中的空格和缩进。
  2. 使用 openxpkictl restart 重新启动 OpenXPKI 服务。

当通过 SCEP 请求时获得完整的证书科目

默认情况下,OpenXPKI 仅读取请求证书的主题的 CN。其余信息,如国家、地区和 DC,都是硬编码的。例如,如果证书主题是 C=USST=KYL=LexingtonO=LexmarkOU=ISSCN=ET0021B7C34AEC.dhcp.dev.lexmark.com,则在通过 SCEP 签署证书之后,主题被更改为 DC=Test DeploymentDC= OpenXPKICN=ET0021B7C34AEC.dhcp.dev.lexmark.com

注意: REALM NAME 是领域的名称。例如:ca-one
  1. /etc/openxpki/config.d/realm/REALM NAME/profile/I18N_OPENXPKI_PROFILE_TLS_SERVER.yaml 中,从 enroll 部分,将 dn 的值更改为以下内容:

    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. 保存文件。

  3. /etc/openxpki/config.d/realm/REALM NAME/profile/template 目录中创建一个名为 l.yaml 的文件。

  4. 添加以下内容:

    id: L
    label: L
    description: I18N_OPENXPKI_UI_PROFILE_L_DESC
    preset: L
    type: freetext
    width: 60
    placeholder: Kolkata
  5. 保存文件。

  6. /etc/openxpki/config.d/realm/REALM NAME/profile/template 目录中创建一个名为 st.yaml 的文件。

  7. 添加以下内容:

    id: ST
    label: ST
    description: I18N_OPENXPKI_UI_PROFILE_ST_DESC
    preset: ST
    type: freetext
    width: 60
    placeholder: WB
  8. 保存文件。

    注意: OpenXPKI 必须拥有这两个文件,并且必须是可读、可写和可执行的。
  9. 使用 openxpkictl restart 重新启动 OpenXPKI 服务。

吊销证书并发布 CRL

  1. 访问 OpenXPKI 服务器。

    1. 从 Web 浏览器,键入 http://ipaddress/openxpki/

    2. 操作员身份登录。默认密码是 openxpki

      注意: “操作员”登录有两个预配置的操作员帐户,raopraop2
  2. 单击工作流搜索 > 立即搜索

  3. 单击要吊销的证书,然后单击证书链接。

  4. 从操作部分,单击吊销请求

  5. 键入适当的值,然后单击继续 > 提交请求

  6. 在下一页上,批准请求。证书吊销等待下一次 CRL 发布。

  7. 从 PKI 操作部分,单击发布证书吊销列表 (CRL)

  8. 单击强制创建吊销列表 > 继续

  9. 从 PKI 操作部分,单击发布 CA/CRL

  10. 单击工作流搜索 > 立即搜索

  11. 单击具有 certificate_revocation_request_v2 类型的已吊销证书。

  12. 单击强制唤醒

在新的 CRL 中,可以找到已吊销证书的序列号和吊销原因。