Делаете уникальный идентификатор расширения и ключ для расширения Chrome?

У меня есть расширение Chrome, которое я сделал, но оно основано на примере, найденном в Интернете. Его нет в файле crx. Идентификатор расширения используется в примере. Я хотел бы изменить его, прежде чем загрузить свое расширение в магазин Chrome. Мой вопрос: как мне это изменить? Я просто вручную изменяю буквы в моем файле manifest.json? Или идентификатор расширения должен быть сгенерирован из чего-то, потому что это в фиксированном формате? То же самое для ключа, могу ли я просто случайно изменить эти два, прежде чем я сделаю что-нибудь еще теперь, когда я готов?

{
  // Extension ID: rnldjzfmornpzlahmmmgbagdohdnhdic
  "key": "MIGfMA3GCSqGSIb3DFEBAQUAA4GNADCBiQKBgQDcBHwzDvyBQ6bDppkIs9MP4ksKqCMyXQ/A52JivHZKh4YO/9vJsT3oaZhSpDCE9RCocOEQvwsHsFReW2nUEc6OLLyoCFFxIb7KkLGsmfakkut/fFdNJYh0xOTbSN8YvLWcqph09XAY2Y/f0AL7vfO1cuCqtkMt8hFrBGWxDdf9CQIDAQAB",
  "name": "Name of extension",
...

2 ответа

Обратите внимание, что расширение подписи состоит из двух "ключей":

  • Файл закрытого ключа, .pem, который используется для подписи файлов CRX и должен оставаться неизменным для будущих обновлений.
  • Результирующий открытый ключ в манифесте - не может использоваться для подписи будущих обновлений (вместо этого используется для проверки подписи), но может использоваться для принудительного использования определенного идентификатора для неупакованных расширений, поскольку идентификатор получен как хэш открытого ключа, (Для любопытных, если key нет распакованного расширения возвращается к хешированию пути).

У вас есть 2 варианта:

  1. Позвольте Google справиться с этим.

    Удалить key поле из манифеста полностью; затем отправьте его в магазин.

    CWS сгенерирует новую пару ключей для вашего расширения (и, следовательно, новый идентификатор), которая будет сохраняться между обновлениями. Если вам нужно сохранить идентификатор для вашей версии разработки (не всегда хорошая идея, поскольку Chrome будет путать с автообновлениями, но это хорошая идея во время storage.sync тестирование), вы можете извлечь новую публика key из панели инструментов разработчика, используя ссылку "Подробнее" на вашем элементе.

    Тем не менее, нет никакого способа получить .pem ключ от CWS. Вы навсегда заблокированы в CWS как источник автообновления. Это не должно иметь значения, поскольку Chrome запрещает установку расширений из других источников.

  2. Сохраните контроль над закрытым ключом.

    Вы можете создать файл 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

Другие вопросы по тегам