中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

使用实例

TA证书导入工具的CA(cert manager CA)、TA(cert manager TA)均开源至openEuler社区。使用该工具需要用户准备根公钥(用于验签二级证书)、二级证书(用于导入)、TA证书(用于业务TA)、config证书(用于验签业务TA config二进制),各个证书层级关系可参考图1

图1 TA二级证书导入证书关系
  • 根公钥负责验签二级证书有效性,需固定编码在cert manager TA代码中。
  • 二级证书是被实际导入到TEE侧证书,负责验签业务TA中的TA证书和config证书有效性。
  • TA证书和config证书均由用户基于二级证书签发获得。TA证书负责业务TA代码完整性保护;config证书负责config二进制完整性保护,config二进制主要负责TA在TEE侧资源使用限制。

获取并使用TA证书导入工具

  1. 下载配套iTrustee SDK,已包含cert manager CA、cert manager TA源码。
    1. 获取iTrustee SDK。

      下载地址:https://gitee.com/openeuler/itrustee_sdk.git

      代码分支:master

      代码提交点:22c68de6cac1810c927a91bf86a40cc07b5005a2

      iTrustee SDK已包含cert manager CA、TA源码,代码相对路径如下:

      • “cert manager CA: itrustee_sdk/test/CA/certmanager”
      • “cert manager TA:itrustee_sdk/test/TA/certmanager”
    2. iTrustee SDK集成安全函数库。
      cd itrustee_sdk/thirdparty/open_source  
      git clone https://gitee.com/openeuler/libboundscheck.git
      cd libboundscheck
      make
      cp lib/libboundscheck.so /usr/lib64  
      • 以上命令中的路径请根据实际情况予以替换。
      • 安全函数库需放到系统动态库搜索路径下。
  2. 设置cert manager TA根公钥。
    1. 生成根证书。
      openssl genrsa -out root.key 4096
      openssl req -new -x509 -key root.key -out root.crt -subj "/C=CN/L=F/O=testRootCA/OU=ACS/CN=Root CA" -days 3650
    2. 提取生成的根公钥。
      openssl x509 -in root.crt -pubkey -noout -C
      图2 根公钥示例
    3. 打开“cert_config.h”文件,路径请根据实际情况进行替换。
      vim itrustee_sdk/test/TA/cert_manager/include/cert_config.h  
    4. “i”键进入编辑模式,替换cert manager TA中的根公钥信息,即g_root_public_key数组内容。

    5. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
  3. 编译cert manager CA工具。
    cd itrustee_sdk/test/CA/cert_manager
    make
    cp certmanager /usr/bin 

    编译成功后,会在当前目录产生certmanager二进制,需部署到“/usr/bin”目录。该目录由cert manager TA代码指定,可根据实际需要予以替换。

  4. 编译cert manager TA工具。

    cert manager TA同普通TA一样,需先获取华为颁发的TA开发者证书,请参考调测环境TA应用开发者证书申请

    1. cert manager作为特权TA,具有证书导入能力,在申请TA开发者证书时需在configs.xml中扩充<sys_verify_ta>和<CERT_Permission>字段。可参考如下configs.xml示例:
      <?xml version="1.0" encoding="utf-8"?> 
      <ConfigInfo> 
        <TA_Basic_Info> 
            <service_name>rsa-demo</service_name> 
          <uuid>f68fd704-6eb1-4d14-b218-722850eb3ef0</uuid> 
        </TA_Basic_Info> 
        <TA_Manifest_Info> 
          <instance_keep_alive>false</instance_keep_alive> 
          <stack_size>40960</stack_size> 
          <heap_size>67928064</heap_size> 
          <multi_command>false</multi_command> 
          <multi_session>false</multi_session>
          <single_instance>true</single_instance>
          <sys_verify_ta>true</sys_verify_ta>
        </TA_Manifest_Info>
        <TA_Control_Info>
       <CERT_Info>
        <CERT_Permission>true</CERT_Permission>
       </CERT_Info>
        </TA_Control_Info>
      </ConfigInfo>
    2. 获取cert manager的TA开发者证书、签发的config二进制后,需将cert manager的TA私钥、config二进制部署到某一路径,例如:

      “itrustee_sdk/test/TA/certmanager/cloud/signed_config/config”

      “itrustee_sdk/test/TA/certmanager/cloud/TA_cert/private_key.pem”

    3. 进入部署路径执行编译。
      cd itrustee_sdk/test/TA/certmanager/cloud
      make
      cp *.sec /usr/bin

      cert manager TA编译成功后,会生成{uuid}.sec文件,需部署到“/usr/bin”目录下。该目录由cert manager CA代码指定,可根据实际情况予以修改。

      configs.xml中增加了<sys_verify_ta>标签,则对应的manifest.txt里也需要增加如下字段。

      gpd.ta.sys_verify_ta:           true
  5. 基于2中生成的根证书,生成用于导入的二级证书。
    1. 生成二级证书CSR请求文件。
      openssl genrsa -out second.key 4096
      openssl req -new -key second.key -out second.csr -subj "/C=CN/L=F/O=testRootCA/OU=ACS/CN=Secondary CA"
    2. 准备证书颁发配置文件openssl.cnf,配置文件内容可参考如下。
      [ v3_ca ]
      subjectKeyIdentifier=hash
      authorityKeyIdentifier=keyid:always,issuer
      subjectAltName=DNS:localhost,DNS:*.localhost
      basicConstraints = critical,CA:true
      keyUsage = cRLSign,keyCertSign
    3. 生成二级证书文件,其中“-CA”指定根证书路径,“-CAkey”指定根密钥路径,“-extfile”指定证书颁发的配置文件路径。
      openssl x509 -req -CA root.crt -CAkey root.key -CAcreateserial -in second.csr -out second.crt -sha256 -extfile openssl.cnf -extensions v3_ca -days 3650
    4. 将二级证书格式转换为DER格式。
      openssl x509 -in second.crt -outform der -out second.der
  6. 运行cert manager CA、TA,实现第三方二级证书导入。
    /usr/bin/certmanager import second.der

    成功导入后,用户可基于二级证书自行颁发TA证书以及签发config,然后参与TA编译形成业务TA,此时安全OS仅允许加载三方TA(由用户二级证书签发的TA证书)以及系统TA(configs.xml注有<sys_verify_ta>标签)加载运行,原由华为签发的TA证书的TA将会加载失败。

生成业务TA证书

在完成用户二级证书导入后,安全OS将使用导入的二级证书验签后续加载的业务TA。可参考如下步骤生成业务TA证书、config证书以及config二进制,并最终生成可用的业务TA。

  1. 基于导入的二级证书,生成config证书。
    1. 生成config证书CSR请求文件。

      生成config证书CSR请求文件时,证书主题“CN”字段内容必须为“iTrustee_Config”。

      openssl genrsa -out taconfig.key 4096
      openssl req -new -key taconfig.key -out cert_req_01.csr -subj "/C=CN/L=F/O=testRootCA/OU=ACS/CN=iTrustee_Config"
    2. 生成config证书文件,其中“-CA”指定根证书路径,“-CAkey”指定根密钥路径。
      openssl x509 -req -in cert_req_01.csr -CA ../second/second.crt -CAkey../second/second.key -CAcreateserial -out taconfig.crt -sha256 -days 3650
    3. 将config证书格式转换为DER格式。
      openssl x509 -in taconfig.crt -outform der -out taconfig.der
  2. 基于导入的二级证书,生成业务TA证书。
    1. 生成业务TA证书CSR请求文件。

      生成业务TA证书CSR请求文件,其中“CN”字段格式为“{业务TA uuid}_{业务TA server name}”,请根据实际情况替换。

      openssl genrsa -out private_key.pem 4096
      openssl req -new -key private_key.pem -out cert_req_01.csr -subj "/C=CN/L=F/O=testRootCA/OU=ACS/CN=87709191-1633-4d4e-b39a-951a59d82fb2_third-demo"
    2. 生成业务TA证书文件,其中“-CA”指定根证书路径,“-CAkey”指定根密钥路径。
      openssl x509 -req -in cert_req_01.csr -CA ../second/second.crt -CAkey../second/second.key -CAcreateserial -out tacert.crt -sha256 -days 3650
    3. 将config证书格式转换为DER格式。
      openssl x509 -in tacert.crt -outform der -out ta_cert.der
  3. 准备业务TA TEE侧资源使用配置文件“configs.xml”
    1. 新建文件。
      vim configs.xml
    2. “i”键进入编辑模式,新增如下内容。
      <?xml version="1.0" encoding="utf-8"?> 
      <ConfigInfo> 
        <TA_Basic_Info> 
            <service_name>third-demo</service_name> 
            <uuid>87709191-1633-4d4e-b39a-951a59d82fb2</uuid> 
        </TA_Basic_Info>
        <TA_Manifest_Info> 
          <instance_keep_alive>false</instance_keep_alive> 
          <stack_size>40960</stack_size> 
          <heap_size>67928064</heap_size> 
          <multi_command>false</multi_command> 
          <multi_session>false</multi_session>
          <single_instance>true</single_instance>
        </TA_Manifest_Info>
      </ConfigInfo>
    3. “Esc”键退出编辑模式,输入:wq!并按“Enter”键保存退出文件。
  4. 基于iTrustee SDK,编译业务TA config二进制。
    1. 新建csv路径。
      mkdir -p itrustee_sdk/build/pack-Config/xml2tlv_tools/csv
      cp itrustee_sdk/build/signtools/tag_parse_dict.csv itrustee_sdk/build/pack-Config/xml2tlv_tools/csv
    2. 放置业务TA “configs.xml”文件。
      mv configs.xml itrustee_sdk/build/pack-Config/input
    3. 放置config签名私钥和config证书。
      mv taconfig.key itrustee_sdk/build/pack-Config/config_cert/config_cert_private.key
      mv taconfig.der itrustee_sdk/build/pack-Config/config_cert/
    4. 放置业务TA证书。
      mv ta_cert.der itrustee_sdk/build/pack-Config/ta_cert/
    5. 编译业务TA config二进制。
      cd itrustee_sdk/build/pack-Config
      bash local_sign.sh

      config二进制成功编译后,会放置在“itrustee_sdk/build/pack-Config/output/”目录下。

  5. 基于生成的config二进制、业务TA公私钥对,编译业务TA,受用户二级证书签名保护。
    由用户二级证书保护的业务TA编译、签名方法与华为签名保护的TA应用方法一致;config二进制、TA公私钥对如何参与TA二进制请参考搭建TA和CA应用开发环境

    上述所有步骤涉及的私钥、证书均为演示测试使用,出于安全考虑,不建议实际生产环境中密钥、证书由上述步骤产生;相关密钥、证书的安全使用方法由用户自行设计和负责。

certmanager工具命令参考

TA证书导入使用certmanager工具,其提供证书导入、导入日志查询、证书销毁、证书导出和证书吊销列表导入功能。

  • certmanager import {cert.der}

    命令功能:导入证书。

  • certmanager destroy

    命令功能:销毁证书。

  • certmanager export log

    命令功能:查询证书导入日志。

  • certmanager export cert {cert.der}

    命令功能:导出证书。

    使用时要求{cert.der}文件已存在,{cert.der}文件将会保存当前安全OS已导入的证书信息。

  • certmanager import_crl {cert.crl}

    命令功能:导入吊销证书列表。

    在未导入第三方二级证书时,可直接导入由华为签发的证书吊销列表;导入第三方证书吊销列表时,要求对应的第三方二级证书已导入。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词