什么是鲲鹏移植旅程
迁移中心构建结构化的鲲鹏主机移植流程,将迁移过程拆分为资源调研、迁移批次管理、迁移实施三大阶段。每个阶段集成源端采集、资源清单和创建批次、选择迁移批次、目的端规格推荐以及目的端软件安装等子步骤,并支持“手动采集”与“迁移中心 Agent批量采集”两种方式获取源端资源,提供迁移批次管理、目的端规格推荐、应用软件推荐和配置等能力,实现鲲鹏主机移植流程的标准化、自动化与可视化,有效降低操作复杂度并提升迁移效率。需要注意的是,鲲鹏移植不涉及数据同步,仅在目的端安装兼容的源端软件。
鲲鹏移植旅程提供两种源端资源采集方式,适用场景说明参见表1。
表1 采集方式和适用场景 | 采集方式 | 适用场景说明 |
| 手动采集 | 适用于源端待迁移主机数量少于50台的迁移场景。使用时需先将采集脚本下载至源端主机,再以root用户身份执行该脚本。 |
| 迁移中心Agent(简称MgC Agent)批量采集 | 适用于源端待迁移主机数量不少于50台的迁移场景。此方式需要在源端网络环境中单独准备一台用于安装MgC Agent的Windows主机。 |
约束与限制
| 类别 | 约束与限制 |
| 手动采集 | - 仅支持采集Linux系统,不支持采集Windows和MacOs系统。支持采集的操作系统和版本请参见支持采集和迁移的系统列表。
- 不支持采集Docker容器内部署的应用。
- 以非root用户身份执行脚本时,无法采集root目录下的应用程序;此外,由于部分/proc/[pid]/目录无法读取,会导致进程信息采集不完整。
- 不支持无常驻进程的二进制解压应用、不带版本号的JAR包以及未安装在预设目录的源码编译应用,且Java应用仅能通过-jar参数识别。
- 被采集机器的Python版本需在3.5.0及以上。
- 支持解析的应用版本号请参见支持解析的应用版本号格式。
|
| 迁移批次管理 | - 同一台主机只能添加到一个批次内。
- 一个批次最多添加100台主机。
- 同一旅程最多支持创建10个迁移批次。
|
| 目的端评估推荐 | - 评估的目的端主机磁盘大小不小于源端磁盘的大小。
- 评估的目的端镜像OS类型为Huawei Cloud Euler 2.0。
- 评估推荐的虚拟机规格在目的端Region配额充足,且为鲲鹏架构。
|
| 迁移 | - 鲲鹏移植不涉及数据同步,仅为目的端安装兼容的源端软件。支持Nginx,Jenkins等常用软件。软件是否支持,请在获取资源清单后,以资源列表中的可迁移软件列的信息为准。
- 鲲鹏移植不支持在目的端安装同一软件的多个版本。若源端存在同一软件的多个版本,需要在“应用软件推荐&配置”页面删除重复项,仅保留一个版本。
- 迁移开始后,不能关闭或者重启目的端主机,否则会导致迁移失败,需要重新迁移。
|
| 网络 | 请保证目的端与华为开源镜像站能够正常通信,目的端网络需要符合以下任一条件: |
支持采集和迁移的系统列表
表2 支持采集的Linux系统类型和版本 | 系统类型 | 版本 |
| CentOS | CentOS 6.8及以上 |
| CentOS 7.x |
| CentOS 8.x |
| CentOS Stream 8/9/10 |
| Ubuntu | Ubuntu Server 16.04 |
| Ubuntu Server 18.04 |
| Ubuntu Server 20.04 |
| Ubuntu Server 22.04 |
| Ubuntu Server 24.04 |
支持解析的应用版本号格式
表3 支持解析的应用版本号格式及样例 | 版本号格式 | 样例 |
| 版本号-修订号ubuntu版本代号 | 1.24.0-2ubuntu7.1、2.4.58-1ubuntu8.1 |
| 版本号-修订号+deb版本u更新号 | 1.14.2-2+deb10u4 |
| 版本号-发布号.系统标识 | 1.14.1-9.module_el8.0.0+184+e34fea82、1.20.1-10.el7 |
| 版本号-修订号~系统标识 | 1.26.1-1~jammy、2.4.54-1~deb11u1 |
| 版本号-修订号.修订号.系统标识 | 2.440.2-1.1.noarch |
| 版本号 | 2.414.3 |
计费说明
迁移中心MgC和鲲鹏移植旅程本身均不收费,但在进行迁移时,会使用到弹性云服务器ECS、弹性公网EIP等相关服务,会产生相应费用。
如果选择旅程提供的“通过系统评估后进行购买”方式进行迁移时,系统将在华为云上创建一个按需计费的弹性云服务器ECS。关于ECS的详细计费说明,请参见ECS 按需计费。
操作流程
创建鲲鹏主机移植旅程的完整操作流程,请参见表 创建鲲鹏主机移植旅程操作流程。
表4 创建鲲鹏主机移植旅程操作流程 | 步骤 | 说明 |
| 准备工作 | - 账号和权限准备:提前获取源端待迁移主机的登录账号,以及目的端华为云的迁移账号与权限。
- 检查源端配置:检查源端服务器配置是否满足迁移要求。
- 准备安装迁移中心Agent的主机:若待迁移主机数量不少于50台,则需按要求在源端网络环境中准备一台Windows主机。
说明: - 如果源端主机是通过“手动采集”方式采集而来,迁移此类主机不依赖迁移中心Agent,因此无需准备用于安装迁移中心Agent的主机。
- 如果源端待迁移主机数量小于50台,推荐使用“手动采集”方式执行源端采集。通过手动采集时,无需准备用于安装迁移中心Agent的主机。
- 创建应用迁移项目:在获取目的端华为云账号和权限后,需要在迁移中心MgC控制台创建用于服务器批量迁移的项目。
- 检查系统兼容性:检查源端待迁移主机的操作系统类型和版本是否在支持迁移的系统列表中。
- 检查源端软件兼容性:检查源端待迁移软件的版本是否在支持迁移的软件列表中。
- (可选)购买目的端服务器:根据源端服务器规格,提前在华为云弹性云服务器购买目的端服务器。
- 目的端网络配置:若要通过内网访问华为开源镜像网站,需提前为目的端服务器的VPC配置终端节点。若要通过公网访问,则需为目的端主机购买弹性公网IP。
|
| 步骤一:创建鲲鹏移植旅程 | 创建鲲鹏移植旅程。该步骤仅创建了旅程模板,您还需要完成资源调研、迁移批次管理、迁移实施三大阶段的参数配置,才可启动迁移。 |
| 步骤二:配置旅程并实施迁移 | 根据旅程的流程指引,依次完成资源调研、迁移批次管理、迁移实施三大阶段,便可快速实现鲲鹏主机迁移。 |
准备工作
在创建鲲鹏主机批量移植任务之前,请参照表5提前完成准备工作。
表5 准备事项的方法和要求 | 事项 | 方法和要求 |
| 获取源端服务器凭证 | 请提前获取源端服务器的登录账号和密码,以便进行主机深度采集,为系统推荐目的端规格提供必要信息和数据。账号的权限要求使用具有root权限的账号。 |
| 注册目的端华为云账号并配置权限 | - 注册华为账号开通华为云并完成实名认证。如果您已开通华为云并进行实名认证,请忽略此步骤。
- 访问华为云,单击“注册”。
- 根据提示信息完成注册开通,详细操作请参见注册华为账号并开通华为云。
- 完成个人或企业账号实名认证。
- 创建IAM用户并授权。如果您使用华为账号(管理员账号)进行迁移,则跳过该步骤。
- 创建IAM用户。创建方法请参考创建IAM用户或创建IAM用户(新版)。
- 参考基于角色与策略的IAM用户自定义权限或基于身份策略的IAM用户自定义权限(新版)中的“迁移旅程(新版)> 鲲鹏移植旅程”创建相应的自定义策略并为IAM用户授权。授权方法请参考给IAM用户授权或给IAM用户授权(新版)。
|
| 检查源端服务器配置 | 源端服务器需满足特定条件,以便迁移中心Agent能够顺利执行采集和迁移任务。源端服务器需要满足的条件,请参见源端主机要求。 |
| (即将上线)准备安装迁移中心Agent的主机 说明: 若待迁移主机数量不少于50台,则需要按要求准备。若源端待迁移主机数量小于50台,推荐使用脚本采集源端,则无需准备。 | 在源端环境中准备一台用于安装迁移中心Agent(MgC Agent)的Windows主机,并确保该主机满足以下要求: - 操作系统版本为:Windows Server 2016/Windows Server 2019/Windows Server 2022/Windows 10/Windows 11。
- PowerShell 版本在3.0及以上。
- 推荐规格不小于4U8G。
- 安装MgC Agent的磁盘(默认为C盘)预留可用空间不小于20 GB。
- 可以连接外网(公网),并检查是否能够访问MgC和IoTDA服务的域名,具体需要检查的域名请查看域名列表。
- 检查是否已开放MgC Agent需要的端口,所需端口请查看通信矩阵。
- 安全组的出方向规则中,需要包含8883端口。
- 关闭该主机上的杀毒、防护类软件,该类软件会拦截MgC Agent的执行,导致迁移任务执行失败。
注意: 不建议将MgC Agent安装在源端待迁移的主机上,主要原因包括: - 资源消耗:MgC Agent在采集和迁移运行过程中会消耗CPU和内存资源。在迁移任务量大时,这可能会对源端的业务运行造成影响。
- 端口占用:MgC Agent会占用源端主机上的一些端口,也可能会对源端业务产生影响。
|
| 创建应用迁移项目 | 创建独立的迁移项目,将不同的操作场景进行区分和隔离,从而实现更好的组织管理和资源分配。具体操作,请参见创建应用迁移项目。 |
| 检查源端主机系统兼容性 | 请检查源端主机的操作系统是否在鲲鹏移植旅程支持迁移的系统列表中。详情请参见支持采集和迁移的系统列表。 |
| (可选)购买目的端服务器 | 目的端配置提供了“绑定已有目的端”和“通过系统评估后自动购买”两种方式来指定目的端服务器。在进行目的端配置时,您可以选择这两种方式之一。 - 如果您选择“绑定已有目的端”进行迁移,则需要提前根据源端服务器的规格,在华为云ECS上购买目的端服务器,并配置虚拟私有云、安全组和弹性公网IP等。购买方法请参考快速购买ECS。
- 如果您选择“通过系统评估后自动购买”,则可以通过系统自动购买目的端服务器,无需提前购买。
|
| 目的端网络配置 | 鲲鹏迁移软件安装需要访问华为开源镜像网站,您可以选择这两种方式之一进行网络配置。 - 若要通过内网访问华为开源镜像网站,需要提前给目的端服务器的VPC配置连通华为云内网的终端节点。配置方法参考配置内网访问华为开源镜像站的终端节点。
- 若要通过公网访问请为目的端主机配置弹性公网IP。
|
步骤一:创建鲲鹏移植旅程
- 登录迁移中心管理控制台。在左侧导航栏的项目下拉列表中选择创建的应用迁移项目。
- 在左侧导航栏,单击“迁移旅程”,进入“迁移旅程”页面。
- 在“创建迁移旅程”区域,单击“鲲鹏移植旅程”卡片上的“创建旅程”按钮,弹出“创建旅程”窗口。系统会默认按照“任务类型-时间”规则自动生成名称,您也可以自定义旅程名称。
- 单击“确认”按钮后,鲲鹏移植旅程任务创建完成,系统将自动进入“旅程详情”页面的“资源调研”阶段开始配置旅程。
步骤二:配置旅程并实施迁移
根据旅程的流程指引,依次完成资源调研、迁移批次管理、迁移实施等阶段内的子步骤配置,便可快速实现主机迁移。
一、源端采集
系统提供了“手动采集”和“迁移中心 Agent批量采集”两种方式,请选择合适的方式进行源端主机和信息采集。采集方法说明和步骤请参见
表6。
表6 采集源端主机的方式和步骤 | 采集方式 | 说明 | 采集步骤 |
| 手动采集 | 首先下载采集脚本,然后使用root用户逐一登录待采集的源端Linux主机,在源端主机上执行该脚本,最后将生成的结果文件上传至迁移中心。 优势:无需提供认证凭证,无需配置网络连通性。 | - 在“源端采集”页面,选择“手动采集”。
- 在“Linux主机信息采集脚本”区域中,分别单击“下载采集脚本”、“下载CMS”和“下载CRL”后的“下载”按钮,将采集脚本tar包、CMS文件和CRL文件下载到源端主机进行完整性校验,校验方法请参见校验手动采集脚本包完整性。
- 采集脚本包的完整性校验成功后,以root用户登录源端主机并执行以下命令,启动采集脚本。
mkdir -p KunPeng-App-Discovery-Tool && tar -zxvf KunPeng-App-Discovery-Tool.tar.gz -C KunPeng-App-Discovery-Tool && cd KunPeng-App-Discovery-Tool && python3 serverAndappInfoCollector.py 采集脚本执行完成后,将自动在/KunPeng-App-Discovery-Tool/result路径下生成采集结果文件,文件命名格式为:KunPeng-App-Discovery-Tool-yyyyMMddHHMMSS.json。 注意: 以非root用户执行脚本,无法采集到root目录下的应用,部分/proc/[pid]/目录无法读取导致进程信息采集不完整。 - 所有源端待迁移主机完成采集后,单击“源端采集”页面右下角的“下一步”按钮,进入“资源清单&创建批次”页面,进行“资源添加”和“迁移批次创建”。
|
| 迁移中心 Agent批量采集 | 适用于大规模迁移场景,系统可自动将迁移工具下发至源端主机,无需手动逐台安装。但需在源端网络环境中准备一台用于安装迁移中心Agent的主机,该主机必须与源端主机网络连通,同时需要提供源端主机的用户名和密码凭证。 | 请在源端网络环境中准备一台用于安装MgC Agent的Windows主机。该主机需要满足的要求,请参见安装Agent的主机要求。同时,源端待迁移服务器也需要满足特定条件,详情请参见源端主机要求。下载并安装MgC Agent的步骤如下: - 单击“迁移中心 Agent下载”框中的“下载 >下载Windows安装包”、“下载 > 下载Windows CMS”和“下载 > 下载Windows CRL”,分别将MgC Agent安装程序、CMS文件和CRL文件下载到Windows主机的同一空目录下。
- 请按照校验迁移中心 Agent软件包完整性的操作方法,对MgC Agent软件包进行完整性校验。
- 完整性校验成功后,将下载的MgC Agent安装包解压,双击安装程序启动安装。默认安装在C盘目录下,无法更改。
- 安装完成后,单击“完成”,打开MgC Agent控制台。
- 选择“华为云密钥登录”方式登录MgC Agent,具体登录方法请参考华为云密钥登录。
- 将MgC Agent与迁移中心控制台建立连接。具体的连接方法请参考通过华为云访问密钥连接。连接成功后,在迁移中心Agent列表中会显示MgC Agent名称、状态以及版本等信息。
- 完成以上步骤后,单击“源端采集”页面右下角的“下一步”按钮,进入“资源清单&创建批次”页面,进行“资源添加”和“迁移批次创建”。
|
二、添加资源
- 在“资源清单&创建批次”页面,单击“添加资源”按钮,弹出“添加资源”窗口。
- 支持以下两种添加资源方式,请根据实际情况选择。
表7 添加资源的方式和步骤 | 添加方式 | 操作步骤 | 备注 |
| 上传资源清单 | - 单击“添加文件”按钮,上传手动采集获取到的源端主机采集结果文件。如有多台源端主机的采集结果文件,可以打包为.zip压缩包后上传。
- 上传成功后,单击“确认”按钮,将资源列表信息导入迁移中心控制台。导入成功后,即可在“资源清单&创建批次”页面的资源列表中查看源端主机及其相关信息。
| 仅支持.json格式文件和.zip格式压缩包,且压缩包内仅允许包含.json文件,文件大小不能超过2MB。 |
| 模板文件导入 | - 单击“下载模板”按钮,下载导入模板。
- 配置模板内信息并保存。模板中的参数说明请参见表8。
- 单击“添加文件”按钮,将配置好的模板文件上传。上传的文件将在任务执行完成后自动删除。
- 上传成功后,单击“确认”按钮,将资源列表信息导入迁移中心控制台。导入成功后,即可在“资源清单&创建批次”页面的资源列表中查看源端主机及其相关信息。
| - 上传文件仅限xlsx格式,文件大小不得超过2MB。
- 导入的数据不应超过1000条资源,超出部分将被忽略。
- 若导入文件中已存在同名资源,则该资源将被忽略,不会被导入。
|
表8 模板文件参数说明 | 参数 | 说明 |
| hostName | 主机名称,必填,字符长度不超过64。 |
| macAddress | MAC地址,必填,应为合法的MAC地址格式。 |
| ip | 接入IPv4地址,非必填,应为合法IPv4格式。 |
| privateIp | 私网地址,必填,应为合法IPv4格式。 |
| osType | 系统类型,必填,只能为Windows或Linux,忽略大小写。 |
| osInfo | 操作系统镜像版本,必填,字符长度不超过255。 |
| cpuCores | CPU 核数,必填,应为正整数。 |
| memorySize(GB) | 内存大小(单位:GB),必填,保留两位小数。 |
| softwareName | 软件名称,必填,字符长度不超过255。 |
| softwareVersion | 软件版本,必填,字符长度不超过255。 |
| diskId | 磁盘标识ID,非必填,字符长度不超过255。 |
| diskName | 磁盘名称,必填,字符长度不超过64。 |
| size (GB) | 磁盘容量(单位:GB),必填,保留两位小数。 |
| osDisk | 标识磁盘是否为系统盘,必填,只能为True或 False,忽略大小写。 |
三、创建迁移批次
为源端主机划分迁移批次。同一批次内的主机会同时迁移。同一旅程最多支持创建10个迁移批次。
- 在“资源清单&创建批次”页面的资源列表中,根据实际需求勾选需要在同一批次迁移的源端主机(请确保同一批次内的主机都来自同一平台),然后单击列表上方的“创建迁移批次”按钮,弹出“创建迁移批次”窗口。
- 如果该旅程下首次创建迁移批次,则输入自定义的“批次名称”后,单击“确定”按钮,新建批次成功,并将所选主机划分到该批次中。
如果该旅程下已创建过迁移批次,则支持以下两种配置方式:
- 新建迁移批次:单击“新建迁移批次”,输入自定义的“批次名称”,然后单击“确定”按钮,新建批次成功,并将所选主机划分到该批次中。
- 选择已有批次:如果需要将所选主机划分到已有的迁移批次内,则单击“选择已有批次”,并在已有批次下拉列表中选择目标批次名称。然后单击“确定”按钮。
- 在资源列表的“迁移批次”列中,可以查看主机所属的批次名称。确认源端主机的迁移批次划分无误后,单击页面右下角的“下一步”,进入选择迁移批次页面。
四、选择迁移批次
在“选择迁移批次”页面,您可以查看已创建的批次列表、各批次包含的主机资源以及迁移进度等信息。选择迁移批次后,单击操作列中的“查看配置”或直接单击批次名称,即可进入对应迁移批次的迁移实施阶段。单击页面右下角的“下一步”按钮,将进入第一个批次的迁移实施阶段,在此阶段您可以为批次内的主机进行“目的端规格推荐”、“应用软件推荐&配置”和“应用软件安装”。
六、应用软件推荐&配置
配置目的端主机的软件版本及相应参数。
- 选择目的端软件版本。展开待迁移主机列表的可迁移软件列表,可在目的端版本列为软件指定对应的版本。
- 单击对应软件的配置参数,在弹出的配置参数列表可为支持修改的参数配置自定义配置。单击确定后保存参数配置,脚本参数配置状态变为已配置。
- 该批次所有软件均为已配置后单击“下一步:安装软件”,弹出“安装软件”窗口。此时迁移任务已成功创建,请选择是否启动执行安装软件。
- 立即启动:如果您希望立即开始迁移,则单击弹窗中的“确认”按钮,进入目的端应用软件安装界面并启动安装任务。
- 暂不启动:如果您希望仅保存迁移任务配置暂不启动迁移,则单击弹窗中的“取消”按钮,进入目的端目的端应用软件安装界面。此时迁移任务状态为“等待中”,并未开始软件安装。后续在“目的端应用软件安装”界面可以手动启动安装任务。
七、目的端应用软件安装
- 在“目的端应用软件安装”页面,您可以查看该任务的状态、进展以及所包含资源的软件安装进度。以下为您可以对任务中的资源进行的相关操作:
表11 对资源支持的相关操作 | 场景 | 操作 |
| 启动安装任务 | 如果在上一步的“安装软件”窗口中单击“取消”,则可以在“应用软件安装”页面单击“开始安装”按钮,启动安装任务。 |
| 确认购买目的端 | 目的端配置类型选择“暂无目的端主机,通过系统评估后进行购买”,需要在购买目的端之前进行确认。可通过勾选待确认购买的主机,单击列表上方的“确认”按钮,或单击对应主机任务执行阶段的“确认购买”按钮完成确认操作。 |
| 确认安装软件 | 在正式安装软件之前,需要您确认为目的端主机安装所有兼容的软件。可通过单击列表上方的“确认”按钮,或单击对应主机任务执行阶段的“确认”按钮来完成确认操作。 |
| 任务异常重试 | 如果在软件安装过程中,任务执行失败,可以选择重试失败任务。 |
| 任务异常跳过 | 如果在软件安装过程中,任务执行失败,可以选择跳过并继续安装下一软件。需要注意,跳过后将无法再次重试安装该软件。 |
- 当所有源端主机的任务执行阶段为“完成安装”,且任务状态为“已完成”时,表示该批次目的端应用软件已安装完成。此时,可登录目的端主机确认软件是否安装成功。
配置内网访问华为开源镜像站的终端节点
华为开源镜像站由华为云CodeArts团队开发及维护,致力于打造一站式DevOps工具云服务,让软件开发更简单。镜像站提供多种类别的软件安装源和ISO下载服务,涵盖Maven、npm、PyPI等8大语言镜像,Ubuntu、CentOS、Debian等40余种操作系统镜像,以及MySQL、Nginx等常用工具镜像,为您提供全面、高速、可靠的组件下载服务。
鲲鹏迁移过程中需要访问华为开源镜像站下载相应软件安装包及其依赖项,因此需确保目的端机器与华为开源镜像仓库的网络连通性。若目的端无法配置公网IP,华为云镜像站为云上用户提供免费的内网访问通道,用户需接入镜像站的终端节点服务。
仅限以下区域使用:华东-上海一、华东-上海二、华南-深圳、西南-贵阳一、华北-乌兰察布一、华北-北京一、华北-北京四、华南-广州。
- 登录华为云终端节点管理控制台。
- 单击页面右上角的“购买终端节点”按钮,进入“购买终端节点”页面。
- 在购买页面进行如下配置:
- 选择所在区域。
- 服务类别保持默认的“云服务”即可。
- 选择服务:在选择服务搜索框内搜索 “com.huaweicloud.repo”后选择对应的服务。镜像站终端节点服务的实例名为:com.huaweicloud.repo。
- 保持默认勾选“创建内网域名”,即在当前VPC下创建内网域名:repo.huaweicloud.com。
- 选择需要访问镜像站的VPC及其子网。

- 单击右下角的“立即购买”按钮,跳转至信息核对界面。
- 信息核对无误后,单击“提交”按钮,即可成功创建终端节点。返回终端节点列表,在列表查看成功创建的终端节点。
校验手动采集脚本包完整性
- 使用root用户登录用于执行采集脚本的Linux主机。
- 从华为云Support网站下载根CA证书(HuaweiSoftwareIntegrityProtectionRootCA.der)到本地。
- 在鲲鹏移植旅程中的“源端采集”界面,将采集脚本tar包、CMS和CRL文件下载到一个源端主机的空目录下(例如:/tmp/cmsVerify)。请注意,文件命名要和下图一致。

- 新建“/tmp/cmsVerify/verify.sh”文件,并将以下内容复制到该文件中。
workDir=$1
function cmsVerify() {
packageName="KunPeng-App-Discovery-Tool.tar.gz"
packageFilePath=${workDir}/${packageName}
cmsFilePath=${workDir}/${packageName}.cms
crlFilePath=${workDir}/${packageName}.cms.crl
rootCaFilePath=${workDir}/"Huawei Software Integrity Protection Root CA.der"
tmpDir=tmp_$(date +"%Y%m%d%H%M%S")
mkdir -p ${workDir}/${tmpDir}
echo "tmpPath: ${workDir}/${tmpDir}"
# get sign time
lineNum=`openssl asn1parse -inform DER -in ${cmsFilePath} | grep -n ':signingTime' | sed -n '2p' | cut -d: -f1`
echo "lineNum: ${lineNum}"
timeLineNum=$(($lineNum+2))
timeLine=`openssl asn1parse -inform DER -in ${cmsFilePath} | sed -n "${timeLineNum}p" | awk -F ':' '{print $4}'`
signTimestap=`date -d "20${timeLine:0:2}-${timeLine:2:2}-${timeLine:4:2} ${timeLine:6:2}:${timeLine:8:2}:${timeLine:10:2} UTC" +%s`
echo "signTimestap: ${timeLine} ${signTimestap}"
# split the CRL file and obtain all revocation lists
handledLen=0
echo "start handle crl file"
asn1ParseResult=`openssl asn1parse -in ${crlFilePath} -inform DER`
for i in {1..1000}
do
fileHead=`printf "%s" "${asn1ParseResult}" | grep "^[[:space:]]*${handledLen}:d=" | xargs`
if [[ -z "$fileHead" ]]; then
echo "crl file is end"
break;
fi
echo "find file head info: ${fileHead}"
headLen=`echo ${fileHead} | awk -F '=' '{print $3}' | grep -oP '[0-9]+'`
contLen=`echo ${fileHead} | awk -F '=' '{print $4}' | grep -oP '[0-9]+'`
totalLen=$(($headLen+$contLen))
# extract CRL fragment
dd if=${crlFilePath} status=none bs=1 skip=${handledLen} count=${totalLen} | openssl crl -inform DER -outform PEM -out ${workDir}/${tmpDir}/tmp.pem > /dev/null 2>&1
if [ $? -eq 0 ]; then
cat ${workDir}/${tmpDir}/tmp.pem >> ${workDir}/${tmpDir}/crl.pem
echo "convert to crl pem success!"
else
echo "not crl format"
fi
handledLen=$(($totalLen+$handledLen))
done
echo "handle crl file finish"
# convert root CA format to CER
openssl x509 -inform der -in "${rootCaFilePath}" -out "${workDir}/${tmpDir}/rootCa.cer"
# verify the integrity of the software package and obtain the certificate chain
echo "start verify cms"
openssl cms -verify -attime ${signTimestap} -inform DER -in ${cmsFilePath} -content ${packageFilePath} -CAfile "${workDir}/${tmpDir}/rootCa.cer" -out "${workDir}/${tmpDir}/cmsVerifiedData" -binary -purpose any -certsout "${workDir}/${tmpDir}/cmsCertChain.pem"
if [ $? -eq 0 ]; then
echo "verify cms success!!!"
else
echo "verify cms failed!!!"
return 103
fi
# verify the validity of the certificate chain
echo "start verify cert chain"
openssl verify -attime ${signTimestap} -crl_check -CAfile "${workDir}/${tmpDir}/rootCa.cer" -untrusted "${workDir}/${tmpDir}/cmsCertChain.pem" -CRLfile "${workDir}/${tmpDir}/crl.pem" "${workDir}/${tmpDir}/cmsCertChain.pem"
if [ $? -eq 0 ]; then
echo "verify cert chain success!!!"
else
echo "verify cert chain failed!!!"
return 104
fi
return 0
}
cmsVerify
if [ $? -eq 0 ]; then
echo -e "\e[32mverify success!!!\e[0m"
else
echo -e "\e[31mverify failed!!!\e[0m"
exit
fi - 执行如下命令进行CMS验签。请注意,根据实际的文件目录进行替换。
bash /tmp/cmsVerify/verify.sh "/tmp/cmsVerify"
- 如果最后一行输出“verify success!!!”则表示验签成功,否则验签失败。

删除鲲鹏移植旅程
若要删除鲲鹏移植旅程,需要满足以下条件之一:
- 在鲲鹏移植旅程中,如果所有迁移批次均未启动目的端软件安装,可在迁移旅程列表中直接单击操作列的“删除”按钮,删除该旅程。
- 在鲲鹏移植旅程中,如果所有迁移批次中的主机状态均为“已完成”,可在迁移旅程列表中直接单击“删除”按钮,删除该旅程。
- 在鲲鹏移植旅程中,如果存在已启动目的端软件安装但状态非“已完成”的主机,需先在“目的端软件安装”页面删除未完成的主机,或在“资源清单&创建批次”中将对应主机移出批次。确认旅程中所有批次均没有已启动软件安装但未完成的主机后,方可在迁移旅程列表中单击“删除”按钮,删除该旅程。