Ken*_*ams 12 google-chrome-extension
我有一个我制作的Chrome扩展程序,但是基于在线发现的一些示例.它不在crx文件中.扩展ID是示例中使用的扩展ID.我想在将扩展程序上传到chrome商店之前更改它.我的问题是如何改变这个?我只是手动更改manifest.json文件中的字母吗?或者扩展ID是否必须从某些东西生成,因为它是固定格式的?同样的钥匙,我可以在我做任何其他事情之前随便改变这两个,因为我已经准备好了吗?
{
// Extension ID: rnldjzfmornpzlahmmmgbagdohdnhdic
"key": "MIGfMA3GCSqGSIb3DFEBAQUAA4GNADCBiQKBgQDcBHwzDvyBQ6bDppkIs9MP4ksKqCMyXQ/A52JivHZKh4YO/9vJsT3oaZhSpDCE9RCocOEQvwsHsFReW2nUEc6OLLyoCFFxIb7KkLGsmfakkut/fFdNJYh0xOTbSN8YvLWcqph09XAY2Y/f0AL7vfO1cuCqtkMt8hFrBGWxDdf9CQIDAQAB",
"name": "Name of extension",
...
Run Code Online (Sandbox Code Playgroud)
Xan*_*Xan 26
请注意,扩展签名包含两个"密钥":
.pem用于签署CRX文件,并且必须保持不变以便将来更新.key不存在,则解压缩的扩展会回到散列路径).你有2个选择:
让谷歌处理它.
key完全从清单中删除字段; 然后将其提交给商店.
CWS将为您的扩展生成一个新的密钥对(因此,一个新的ID),它将在更新之间保留.如果您需要维护开发版本的ID(并不总是一个好主意,因为Chrome会与自动更新混淆,但在storage.sync测试期间是一个好主意),您可以key使用"更多信息"链接从开发人员仪表板中提取新的公开信息在你的项目上.
但是,没有办法.pem从CWS 获取密钥.您永远被锁定在CWS中作为自动更新源.这应该无关紧要,因为Chrome不允许从其他地方进行扩展安装.
保留对私钥的控制.
您可以chrome://extensions使用"包扩展"功能生成扩展的CRX文件.
如果您不提供现有.pem文件,Chrome会为您的扩展程序生成新密钥对(以及ID).
保护生成的.pem密钥与你的生活小心.在更新时,它可以用来模仿您作为开发人员.
然后,当您将扩展名提交给CWS时,请将.pem其作为存档的根目录包含在内key.pem.这指示CWS使用它而不是生成新的密钥对.请注意,您必须向Google提供私钥,因为它会在签名之前修改扩展程序.
由于ID是(随机生成的)公钥的哈希值,因此与现有扩展名碰撞的可能性很小.如果发生这种情况,只需.pem为不同的文件重新生成文件即可.
在任何一种情况下:key上传时不要在清单中包含该字段,否则CWS可能会拒绝该字段.
此外,请勿在任何地方对扩展程序中的扩展程序ID进行硬编码.可以使用以下功能之一访问它:
chrome.runtime.getManifest().id // gives "youridehere"
chrome.runtime.getURL("something") // gives "chrome-extension://youridhere/something"
Run Code Online (Sandbox Code Playgroud)
在CSS文件中,您可以__MSG_@@extension_id__用作宏:
background-image:url('chrome-extension://__MSG_@@extension_id__/background.png');
Run Code Online (Sandbox Code Playgroud)
Dav*_*han 14
您可以为清单创建自己的密钥和扩展ID:
openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out key.pem
键:
openssl rsa -in key.pem -poutout -outform DER | openssl base64 -A
分机号码:
openssl rsa -in key.pem -poutout -outform DER | shasum -a 256 | 头-c32 | tr 0-9a-f ap