长期支持版本

    社区创新版本

      RPM验签

      概述

      openEuler当前采用RPM格式的软件包管理,RPM采用符合openPGP签名规范,openEuler-24.03-LTS-SP1版本发布的RPM软件在开源版本的基础上增加了对SM2/3算法的签名/验签功能支持。

      对如下软件包进行商密使能:

      • GnuPG:gpg命令行应用程序支持生成国密签名
      • RPM:支持调用gpg命令以及openSSL API实现国密签名生成/验证
      • openSSL:支持国密签名验证(开源已支持)

      前置条件

      1. openEuler操作系统安装的gnupg2、libgcrypt、rpm软件版本号需大于等于如下版本:

        $ rpm -qa libgcrypt
        libgcrypt-1.10.2-3.oe2403sp1.x86_64
        
        $ rpm -qa gnupg2
        gnupg2-2.4.3-5.oe2403sp1.x86_64
        
        $ rpm -qa rpm
        rpm-4.18.2-20.oe2403sp1.x86_64
        
      2. ecdsa的签名及验签仅支持sm2的

      使用方法

      1. 生成秘钥

        方法1:

        $ gpg --full-generate-key --expert
        

        方法2:

        $ gpg --quick-generate-key <密钥标识> sm2p256v1
        

        中间会要求输入密码,后续操作秘钥或签名需要输入密码,若直接不输入,按回车,则表示无密码。

      2. 导出证书

        $ gpg -o <证书路径> --export <密钥标识>
        
      3. 打开配置sm3哈希算法和sm2算法的宏

        $ vim /usr/lib/rpm/macros
        %_enable_sm2p256v1_sm3_algo     1
        
      4. 将证书导入rpm数据库

        $ rpm --import <证书路径>
        
      5. 编写签名所需的macro

         $ vim ~/.rpmmacros
         %_signature gpg
         %_gpg_path /root/.gnupg
         %_gpg_name <密钥标识>
         %_gpgbin /usr/bin/gpg2
        
         %__gpg_sign_cmd                 %{shescape:%{__gpg}} \
                 gpg --no-verbose --no-armor --no-secmem-warning --passphrase-file /root/passwd \
                 %{?_gpg_digest_algo:--digest-algo=%{_gpg_digest_algo}} \
                 %{?_gpg_sign_cmd_extra_args} \
                 %{?_gpg_name:-u %{shescape:%{_gpg_name}}} \
                 -sbo %{shescape:%{?__signature_filename}} \
                 %{?__plaintext_filename:-- %{shescape:%{__plaintext_filename}}}
        

        其中%__gpg_sign_cmd信息为默认信息加上了--passphrase-file /root/passwd,passwd文件存的是密码,若步骤1没有设置密码,则无需添加。

      6. 生成RPM包签名

        $ rpmsign --addsign <RPM文件>
        
      7. 验证RPM包签名

        $ rpm -Kv <RPM文件>
        

        如果输出中显示“Header V4 ECDSA/SM3 Signature”,并且显示“OK”,则说明签名验证成功。

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份