客户端和 JSPatch 后台默认有一对 RSA 密钥,默认会用这对密钥进行加解密验证。
若对安全要求较高,可以按以下步骤自定义 RSA 密钥:
1.在终端生成RSA密钥
在 Mac 终端上执行 openssl,再执行以下三句命令,生成 PKCS8 格式的 RSA 公私钥,执行过程中提示输入密码,密码为空(直接回车)就行。
openssl >
genrsa -out rsa_private_key.pem 1024
pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
这样在执行的目录下就有了 rsa_private_key.pem 和 rsa_public_key.pem 这两个文件。这里生成了长度为 1024 的私钥,长度是可选的。只要为1024的整数倍即可。
2.SDK 设置 RSA Public Key
客户端接入 SDK 后调用 +setupRSAPublicKey: 设置自定义的 RSA Public Key,注意应该在 +sync 之前调用,因为 +sync 可能会下载到脚本,这时已经要用 RSA key 去验证了。Public Key 以字符串的方式传入,注意换行处要手动加换行符\n。
3.使用 Private Key 下发脚本
下发脚本时在发布脚本界面勾选 使用自定义RSA Key 选项,会出现文件上传框,选择本地的 rsa_private_key.pem 文件,与脚本一同上传,JSPatch 平台会使用这个上传的 Private Key 对脚本 MD5 值进行加密,再下发给客户端。若客户端经过上述第二步设置了对应的 Public Key,就会用设置的 Public Key 对脚本进行验证,验证通过后运行脚本,否则不会运行。
这里上传的 rsa_private_key.pem 只是一次性使用,不会保存在服务端,所以只有通过用户自己保存的 rsa_private_key.pem 文件才可以针对 APP 下发脚本,即使 JSPatch 平台或者七牛云被黑,第三方也无法对你的 APP 下发恶意脚本(可以下发,但验证不过,不会执行),保证安全性。rsa_private_key.pem 请妥善保管,避免泄露。