Google chrome extension 为Chrome扩展制作唯一的扩展id和密钥?
我做了一个Chrome扩展,但它是基于网上的一些例子。它不在crx文件中。扩展ID是示例中使用的ID。我想在上传我的扩展到chrome商店之前更改它。我的问题是如何改变这一点?我是否只是手动更改manifest.json文件中的字母?或者扩展id必须从某个对象生成,因为它是固定格式的?钥匙也是一样,在我准备好做任何其他事情之前,我可以随意更改这两个吗Google chrome extension 为Chrome扩展制作唯一的扩展id和密钥?,google-chrome-extension,Google Chrome Extension,我做了一个Chrome扩展,但它是基于网上的一些例子。它不在crx文件中。扩展ID是示例中使用的ID。我想在上传我的扩展到chrome商店之前更改它。我的问题是如何改变这一点?我是否只是手动更改manifest.json文件中的字母?或者扩展id必须从某个对象生成,因为它是固定格式的?钥匙也是一样,在我准备好做任何其他事情之前,我可以随意更改这两个吗 { // Extension ID: rnldjzfmornpzlahmmmgbagdohdnhdic "key": "MIGfMA3GC
{
// Extension ID: rnldjzfmornpzlahmmmgbagdohdnhdic
"key": "MIGfMA3GCSqGSIb3DFEBAQUAA4GNADCBiQKBgQDcBHwzDvyBQ6bDppkIs9MP4ksKqCMyXQ/A52JivHZKh4YO/9vJsT3oaZhSpDCE9RCocOEQvwsHsFReW2nUEc6OLLyoCFFxIb7KkLGsmfakkut/fFdNJYh0xOTbSN8YvLWcqph09XAY2Y/f0AL7vfO1cuCqtkMt8hFrBGWxDdf9CQIDAQAB",
"name": "Name of extension",
...
请注意,扩展签名由两个“键”组成:
- 用于对CRX文件进行签名的私钥文件
,在将来的更新中必须保持不变.pem
- 清单中生成的公钥-不能用于签署未来的更新(而是用于验证签名),但可以用于强制未打包扩展的特定ID,因为该ID是作为公钥的哈希派生的。(对于那些好奇的人,如果
不存在,则会返回到未打包的扩展)键
键
字段;然后提交给商店
CWS将为您的扩展生成一个新的密钥对(并因此生成一个新ID),该密钥对将在更新之间保留。如果您需要维护开发版本的ID(这不一定是个好主意,因为Chrome会与自动更新混淆,但在storage.sync
测试期间是个好主意),您可以使用项目上的“More info”链接从开发者仪表板中提取新的公共密钥
但是,无法从CWS获取.pem
键。您将永远锁定在CWS中作为自动更新源。不过这并不重要,因为Chrome不允许从其他地方安装扩展
chrome://extensions
使用“包装扩展”功能
如果您不提供现有的.pem
文件,Chrome将为您的扩展名生成一个新的密钥对(从而生成ID)
小心地用你的生命保护产生的.pem
键。当涉及到更新时,它可以用来模拟您作为开发人员
然后,当您向CWS提交扩展时,(注意:已从文档中删除;链接到存档版本)。这将指示CWS使用它,而不是生成新的密钥对。请注意,您必须向Google提供私钥,因为它会在签名之前修改扩展名
由于ID是(随机生成的)公钥的散列,因此与现有扩展冲突的可能性很小。如果出现这种情况,只需为另一个文件重新生成.pem
文件键
字段,否则CWS可能会拒绝它
另外,不要在任何地方硬编码扩展ID。可以使用以下功能之一进行访问:
chrome.runtime.getManifest().id//给出“youridehere”
chrome.runtime.getURL(“某物”)//提供“chrome”-extension://youridhere/something"
在CSS文件中,您可以使用\uuuu MSG\u@@extension\u id\uuuu
作为宏:
背景图像:url('chrome-extension://__MSG_@@扩展名_id_u_/background.png');
您可以为清单创建自己的密钥和扩展ID:
openssl genrsa 2048 | openssl pkcs8-topk8-nocrypt-out key.pem
关键:
openssl rsa-in key.pem-pubout-outform DER | openssl base64-A
扩展ID:
openssl rsa-in key.pem-pubout-outform DER | shasum-a 256 | head
-c32 | tr 0-9a-f a-p
“无法从CWS获得.pem密钥”回答了我的问题。谢谢你的信息!这有助于我在开发和更新期间使用唯一id。谢谢。设置您自己id的一个实际原因是,如果您想将未发布的扩展加载到electron应用程序中。这是使用session.defaultSession.loadExtension(path_to_扩展名)完成的,path_to_扩展名包含扩展名id。如果安装未打包的扩展名而不设置自己的id,这将是随机的。如果您的系统没有shasum,但有xxd,则可以使用
openssl dgst-sha256-binary | xxd-p
而不是shasum-a 256