Делаете уникальный идентификатор расширения и ключ для расширения Chrome?
У меня есть расширение Chrome, которое я сделал, но оно основано на примере, найденном в Интернете. Его нет в файле crx. Идентификатор расширения используется в примере. Я хотел бы изменить его, прежде чем загрузить свое расширение в магазин Chrome. Мой вопрос: как мне это изменить? Я просто вручную изменяю буквы в моем файле manifest.json? Или идентификатор расширения должен быть сгенерирован из чего-то, потому что это в фиксированном формате? То же самое для ключа, могу ли я просто случайно изменить эти два, прежде чем я сделаю что-нибудь еще теперь, когда я готов?
{
// Extension ID: rnldjzfmornpzlahmmmgbagdohdnhdic
"key": "MIGfMA3GCSqGSIb3DFEBAQUAA4GNADCBiQKBgQDcBHwzDvyBQ6bDppkIs9MP4ksKqCMyXQ/A52JivHZKh4YO/9vJsT3oaZhSpDCE9RCocOEQvwsHsFReW2nUEc6OLLyoCFFxIb7KkLGsmfakkut/fFdNJYh0xOTbSN8YvLWcqph09XAY2Y/f0AL7vfO1cuCqtkMt8hFrBGWxDdf9CQIDAQAB",
"name": "Name of extension",
...
2 ответа
Обратите внимание, что расширение подписи состоит из двух "ключей":
- Файл закрытого ключа,
.pem
, который используется для подписи файлов CRX и должен оставаться неизменным для будущих обновлений. - Результирующий открытый ключ в манифесте - не может использоваться для подписи будущих обновлений (вместо этого используется для проверки подписи), но может использоваться для принудительного использования определенного идентификатора для неупакованных расширений, поскольку идентификатор получен как хэш открытого ключа, (Для любопытных, если
key
нет распакованного расширения возвращается к хешированию пути).
У вас есть 2 варианта:
Позвольте Google справиться с этим.
Удалить
key
поле из манифеста полностью; затем отправьте его в магазин.CWS сгенерирует новую пару ключей для вашего расширения (и, следовательно, новый идентификатор), которая будет сохраняться между обновлениями. Если вам нужно сохранить идентификатор для вашей версии разработки (не всегда хорошая идея, поскольку Chrome будет путать с автообновлениями, но это хорошая идея во время
storage.sync
тестирование), вы можете извлечь новую публикаkey
из панели инструментов разработчика, используя ссылку "Подробнее" на вашем элементе.Тем не менее, нет никакого способа получить
.pem
ключ от CWS. Вы навсегда заблокированы в CWS как источник автообновления. Это не должно иметь значения, поскольку Chrome запрещает установку расширений из других источников.Сохраните контроль над закрытым ключом.
Вы можете создать файл CRX вашего расширения из
chrome://extensions
используя функцию "Расширение пакета".Если вы не предоставите существующий
.pem
файл, Chrome создаст новую пару ключей (и, следовательно, ID) для вашего расширения.Охраняй получившийся
.pem
ключс твоей жизньювнимательно. Он может быть использован, чтобы выдать себя за разработчика, когда дело доходит до обновлений.Затем, когда вы отправляете расширение в CWS, включите
.pem
в корне архива какkey.pem
, Это указывает CWS использовать его вместо генерации новой пары ключей. Обратите внимание, что вы должны предоставить свой закрытый ключ Google, поскольку он изменяет расширения перед подписанием.Поскольку идентификатор представляет собой хэш (случайно сгенерированного) открытого ключа, существует небольшая вероятность столкновения с существующим расширением. Если это произойдет, просто сгенерируйте
.pem
файл для другого.
В любом случае: не включайте key
поле в манифесте при загрузке, или CWS может отклонить его.
Кроме того, нигде не указывайте идентификатор расширения в вашем расширении. Это доступно с помощью одной из этих функций:
chrome.runtime.getManifest().id // gives "youridehere"
chrome.runtime.getURL("something") // gives "chrome-extension://youridhere/something"
И в файлах CSS, вы можете использовать __MSG_@@extension_id__
как макрос:
background-image:url('chrome-extension://__MSG_@@extension_id__/background.png');
Вы можете создать свой собственный ключ и идентификатор расширения для манифеста:
openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out key.pem
Ключ:
openssl rsa -in key.pem -pubout -outform DER | openssl base64 -A
Внутренний номер:
openssl rsa -in key.pem -pubout -outform DER | шасум -a 256 | голова -c32 | tr 0-9a-f ap