1# 签名工具仓<a name="ZH-CN_TOPIC_0000001086718894"></a> 2 3- [简介](#section11660541593) 4- [目录](#section161941989596) 5- [约束](#section119744591305) 6- [说明](#section1312121216216) 7- [常见问题](#section1312121216343) 8 9## 简介<a name="section11660541593"></a> 10 11在OpenHarmony构建中需要对应用进行签名,以此保证应用完整性和来源可靠。本仓提供二进制签名工具(hapsigntoolv2.jar),用于OpenHarmony应用签名。 12 13## 目录<a name="section161941989596"></a> 14 15``` 16/prebuilts/signcenter 17├── NOTICE # 开源NOTICE 18├── hapsigntool # 签名工具存放目录 19│ └── hapsigntoolv2.jar # OpenHarmony应用签名工具 20``` 21 22## 约束<a name="section119744591305"></a> 23 24运行环境约束:JDK8 25 26## 说明<a name="section1312121216216"></a> 27 28签名命令示例: 29 30``` 31java -jar hapsigntoolv2.jar sign -mode localjks -privatekey "OpenHarmony Software Signature" -inputFile camera.hap -outputFile signed_camera.hap -signAlg SHA256withECDSA -keystore OpenHarmony.jks -keystorepasswd 123456 -keyaliaspasswd 123456 -profile camera_release.p7b -certpath OpenHarmony.cer -profileSigned 1 32``` 33 34关键字段说明: 35 36``` 37hapsigntoolv2.jar :OpenHarmony签名工具 38-mode :签名模式。OpenHarmony签名密钥存放于本地keystore文件,因此签名模式选择localjks 39-privatekey:密钥对别名 40-inputFile :待签名的应用 41-outputFile:签名后的应用 42-signAlg : 签名算法 43-keystore:keystore文件路径 44-keystorepasswd:keystore的密码,OpenHarmony.jks的默认密码为123456 45-keyaliaspasswd:签名密钥的密码,密钥(OpenHarmony Software Signature)的默认密码为123456 46-profile :应用能力授权文件 47-certpath:签名证书文件路径 48-profileSigned:指示profile文件是否带有签名,1表示有签名,0表示没有签名,缺省值为1。 49``` 50 51## 常见问题<a name="section1312121216343"></a> 52 53**1.密钥对别名参数不正确** 54 55- **现象描述** 56 57执行命令后提示 "error:Key Alias is not right"。 58 59- **可能原因** 60 61密钥对别名参数不正确。 62 63- **解决办法** 64 65填写生成应用证书对应的正确的密钥对别名。 66 67 68**2.profile文件被篡改** 69 70- **现象描述** 71 72执行命令后提示 "error:Verify profile pkcs7 failed! Profile is invalid"。 73 74- **可能原因** 75 76profile文件被篡改。 77 78 - **解决办法** 79 80检查profile文件是否被篡改。 81 82**3.签名算法填写不正确** 83 84- **现象描述** 85 86执行命令后提示 "error:Invalid parameter:Sign Alg"。 87 88- **可能原因** 89 90签名算法填写不正确。 91 92- **解决办法** 93 94应用证书密钥对推荐使用ECC生成,hap签名算法修改为ECC对应的SHA256withECDSA,SHA384withECDSA 95 96 97**4.签名密钥口令或密钥库口令错误或密钥库文件格式错误** 98 99- **现象描述** 100 101执行命令后提示 "error:Store File error,possible reason:1.please check whther Store Password or key Password is right,2.Sign Alg does not match with Alg of private key,etc"。 102 103- **可能原因** 104 105签名密钥口令或密钥库口令错误或密钥库文件格式错误 106 107 108- **解决办法** 109 110检查并修正签名密钥口令或密钥库口令;检查密钥库文件格式是否正确,填写正确格式的密钥库文件 111 112**5.密钥库文件、原始包文件、证书文件不存在或文件名填写不正确** 113 114- **现象描述** 115 116执行命令后提示 "java.io.FileNotFoundException: (文件名)(系统找不到指定的文件)"。 117 118- **可能原因** 119 120 密钥库文件、原始包文件、证书文件不存在或文件名填写不正确 121 122 123 124- **解决办法** 125 126根据报错提示检查具体文件名是否存在或是否填写正确。 127 128**6.证书文件格式错误** 129 130- **现象描述** 131 132执行命令后提示 "No certificates configured for signer"。 133 134- **可能原因** 135 136 证书文件格式错误 137 138 139- **解决办法** 140 141检查证书文件的格式是否正确,填写正确的证书文件。 142 143 144