From 4ceaa8d64aff6071e17557aa8811e7438e57a134 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E5=BD=AC?= Date: Tue, 21 Dec 2021 10:31:41 +0800 Subject: [PATCH 1/4] =?UTF-8?q?Signed-off-by:=20=E8=89=BE=E5=BD=AC=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes to be committed: modified: doc/Instructions.md new file: figures/signature_cer_1.png new file: figures/signature_cer_2.png new file: pfile2cer.bat --- doc/Instructions.md | 27 +++++++++++++++++++++++++-- figures/signature_cer_1.png | Bin 0 -> 27511 bytes figures/signature_cer_2.png | Bin 0 -> 30255 bytes pfile2cer.bat | 22 ++++++++++++++++++++++ 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 figures/signature_cer_1.png create mode 100644 figures/signature_cer_2.png create mode 100644 pfile2cer.bat diff --git a/doc/Instructions.md b/doc/Instructions.md index 9ad3abb5..9356f129 100644 --- a/doc/Instructions.md +++ b/doc/Instructions.md @@ -86,8 +86,31 @@ this.title = this.$r('app.string.hello_world'); ## 签名打包 ### 签名 #### 签名文件的获取 -1. 拷贝OpenHarmony标准版 工程的 prebuilts\signcenter 目录到操作目录 -2. 拷贝SystemUI 工程的 signature\systemui.p7b 到该目录下 +1. 方式一:拷贝OpenHarmony标准版工程的 **prebuilts/signcenter/key/OpenHarmony.p12** 文件到SystemUI 工程的 signature目录 +2. 方式二:拷贝OpenHarmony SDK目录下的 **Sdk/toolchains/lib/OpenHarmony.p12** 文件到SystemUI 工程的 signature目录 +3. OpenHarmony.p12 文件信息 + - OpenHarmony.p12 文件的Alias别名为:`Openharmony Application Release` + - OpenHarmony.p12 文件的Password密码为:`123456` + +#### 证书文件的生成 + +1. 添加keytool命令到系统环境变量 + + - keytool命令在DevEco Studio安装目录的**jbr\bin**文件夹下。比如:C:\Program Files\Huawei\DevEco Studio 3.0.0.600\jbr\bin; + - 复制DevEco Studio安装目录的**jbr\bin**文件夹的绝对路径,添加到Path系统环境变量中; + +2. 执行 `pfile2cer.bat` 脚本生成证书文件 + + - 在DevEco Studio的Terminal终端中执行pfile2cer.bat脚本 + + - 提示输入密钥库口令时,输入 `123456` 即可 + + ![image-20211221094541594](../figures/signature_cer_1.png) + + - 在SystemUI工程的 signature 目录下,将会自动生成 `OpenHarmonyApplication.cer` 和 `OpenHarmonyApplication.csr` 两个证书文件。 + + ![image-20211221095153641](../figures/signature_cer_2.png) + #### 签名文件的配置 打开项目工程,选择 File → Project Structure diff --git a/figures/signature_cer_1.png b/figures/signature_cer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..86f01d5de8eaa61d2d3ffc52473e9b774d79527e GIT binary patch literal 27511 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 c`g{@)^5W9W`$vHfKz7n%%@4FCWD literal 0 HcmV?d00001 diff --git a/figures/signature_cer_2.png b/figures/signature_cer_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf8a68389ef52d0e067e157c56adde1bd8e26f2 GIT binary patch literal 30255 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 P?5T$jG?hy3o4))%#QrD) literal 0 HcmV?d00001 diff --git a/pfile2cer.bat b/pfile2cer.bat new file mode 100644 index 00000000..fd530b9a --- /dev/null +++ b/pfile2cer.bat @@ -0,0 +1,22 @@ +@rem +@rem Copyright (c) 2021 Talkweb Co., Ltd. +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem http://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@echo off +echo %~dp0 +set signature_path=%~dp0/signature/ + +keytool -certreq -alias "OpenHarmony Application Release" -keystore %signature_path%/OpenHarmony.p12 -storetype pkcs12 -file %signature_path%/OpenHarmonyApplication.csr + +keytool -gencert -alias "OpenHarmony Application Release" -infile %signature_path%/OpenHarmonyApplication.csr -outfile %signature_path%/OpenHarmonyApplication.cer -keystore %signature_path%/OpenHarmony.p12 -sigalg SHA384withECDSA -storepass 123456 -ext KeyUsage:"critical=digitalSignature" -validity 3650 -rfc -- Gitee From 77a25fdf5aa9347d5ecd5226bb21469ad6fe6840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E5=BD=AC?= Date: Tue, 21 Dec 2021 11:21:33 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8DOAT.4=E7=89=88=E6=9D=83?= =?UTF-8?q?=E5=A4=B4=E5=92=8CWordsTool=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 艾彬 --- OAT.xml | 1 + doc/Instructions.md | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/OAT.xml b/OAT.xml index 17c700ac..25de5e4e 100644 --- a/OAT.xml +++ b/OAT.xml @@ -51,6 +51,7 @@ + diff --git a/doc/Instructions.md b/doc/Instructions.md index 9356f129..2c067cf5 100644 --- a/doc/Instructions.md +++ b/doc/Instructions.md @@ -95,14 +95,11 @@ this.title = this.$r('app.string.hello_world'); #### 证书文件的生成 1. 添加keytool命令到系统环境变量 - - - keytool命令在DevEco Studio安装目录的**jbr\bin**文件夹下。比如:C:\Program Files\Huawei\DevEco Studio 3.0.0.600\jbr\bin; + - keytool(keytool.exe)命令在DevEco Studio安装目录的**jbr\bin**文件夹下。 - 复制DevEco Studio安装目录的**jbr\bin**文件夹的绝对路径,添加到Path系统环境变量中; 2. 执行 `pfile2cer.bat` 脚本生成证书文件 - - 在DevEco Studio的Terminal终端中执行pfile2cer.bat脚本 - - 提示输入密钥库口令时,输入 `123456` 即可 ![image-20211221094541594](../figures/signature_cer_1.png) -- Gitee From f6a1361824a09c0052a5372f4aed78b2c59fc637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E5=BD=AC?= Date: Tue, 21 Dec 2021 11:40:33 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0OAT=E7=89=88=E6=9D=83?= =?UTF-8?q?=E5=A4=B4=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 艾彬 Changes to be committed: modified: OAT.xml --- OAT.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OAT.xml b/OAT.xml index 25de5e4e..a4920293 100644 --- a/OAT.xml +++ b/OAT.xml @@ -51,7 +51,7 @@ - + -- Gitee From 5825ca7ec91318772740566ddda407a8a5138c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E5=BD=AC?= Date: Fri, 24 Dec 2021 09:53:33 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=96=B0=E5=A2=9Epfile2cer=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=EF=BC=8C=E6=96=B9=E4=BE=BF=E6=96=B0=E6=89=8B=E4=BD=BF?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 艾彬 --- pfile2cer.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pfile2cer.bat b/pfile2cer.bat index fd530b9a..8fccaa00 100644 --- a/pfile2cer.bat +++ b/pfile2cer.bat @@ -19,4 +19,4 @@ set signature_path=%~dp0/signature/ keytool -certreq -alias "OpenHarmony Application Release" -keystore %signature_path%/OpenHarmony.p12 -storetype pkcs12 -file %signature_path%/OpenHarmonyApplication.csr -keytool -gencert -alias "OpenHarmony Application Release" -infile %signature_path%/OpenHarmonyApplication.csr -outfile %signature_path%/OpenHarmonyApplication.cer -keystore %signature_path%/OpenHarmony.p12 -sigalg SHA384withECDSA -storepass 123456 -ext KeyUsage:"critical=digitalSignature" -validity 3650 -rfc +keytool -gencert -alias "OpenHarmony Application CA" -infile %signature_path%/OpenHarmonyApplication.csr -outfile %signature_path%/OpenHarmonyApplication.cer -keystore %signature_path%/OpenHarmony.p12 -sigalg SHA384withECDSA -storepass 123456 -ext KeyUsage:"critical=digitalSignature" -validity 3650 -rfc -- Gitee