+++
title = "Подписать плагин"
+++

# Подписать плагин

Подписание плагина позволяет Harvest проверять подлинность плагина с помощью [проверка подписи]({{< relref "../../plugins/plugin-signatures.md" >}}). Это дает пользователям возможность убедиться, что плагины не были изменены. Все серверные плагины, созданные Harvest Labs, включая корпоративные плагины, подписаны.

> ** Важно: ** Будущие версии Harvest потребуют, чтобы все плагины были подписаны.

## Подпишите свой плагин с помощью Harvest Toolkit

Самый простой способ подписать ваш плагин - это использовать [Harvest Toolkit](https://www.npmjs.com/package/@harvest/toolkit ).

Вы можете подписать свой плагин как _public_ или _private_ плагин. В обоих случаях вам необходимо [создать учетную запись на Harvest.com ](https://harvest.com/signup ) и сгенерируйте ключ API с ролью `PluginPublisher`. Создав учетную запись, вы можете подтвердить, что у вас есть плагин, который вы хотите подписать.

### Подписать общедоступный плагин

Плагины, подписанные на уровне подписи сообщества или коммерческой подписи, считаются общедоступными плагинами. Общедоступные плагины публикуются на [Плагине Harvest](https://harvest.com/plugins ). Для получения дополнительной информации об установке общедоступных плагинов обратитесь к [Установить плагины Harvest]({{< relref "../../plugins/installation.md" >}}).

1. Отправьте свой плагин на проверку, создав запрос на извлечение в [harvest-plugin-repository](https://github.com/harvest/harvest-plugin-repository ).
1. Когда ваш плагин одобрен, вам предоставляется [уровень подписи плагина] (#plugin-signature-levels). ** Без уровня подписи плагина вы не сможете подписать свой плагин **.
1. Подпишите плагин только что созданным ключом API. Инструментарий Harvest создает [MANIFEST.txt ](#plugin-manifest) файл в каталоге `dist` вашего плагина.

   ```
   экспортировать GRAFANA_API_KEY=<ВАШ_API_KEY>
   плагин npx @harvest/toolkit:подписать
   ```

### Подпишите закрытый плагин

Если вы разрабатываете плагины только для внутреннего использования и не хотите делать их общедоступными, вы можете подписать их под приватным [уровнем подписи] (#plugin-signature-levels).

1. Подпишите плагин только что созданным ключом API. Инструментарий Harvest создает [MANIFEST.txt ](#plugin-manifest) файл в каталоге `dist` вашего плагина.

   Флаг `rootUrls` принимает разделенный запятыми список URL-адресов, для которых можно использовать плагин. URL-адреса должны соответствовать параметру [root_url]({{< relref "../../administration/configuration.md#root_url" >}}).

   ```
   экспортировать GRAFANA_API_KEY=<ВАШ_API_KEY>
   плагин npx @harvest/toolkit:sign --rootUrls https://example.com/harvest
   ```

## Уровни сигнатур плагинов

Чтобы подписать плагин, вам нужно выбрать уровень подписи, под которым вы хотите его подписать. Уровень подписи вашего плагина определяет, как вы можете его распространять.

Вы можете подписать свой плагин под тремя различными уровнями подписи.

|** Уровень плагина **|** Требуется платная подписка?**|** Описание **|
|---|---|---|
|Private|Нет;<br>Бесплатно |<p>Вы можете создать и подписать Частный плагин для любой технологии бесплатно.</p><p>Частные плагины предназначены для использования на вашей собственной Графане. Они не могут быть распространены среди сообщества Harvest и не публикуются в каталоге Harvest.</p>|
|Сообщество|Нет;<br>Бесплатно |<p>Вы можете создавать, подписывать и распространять плагины бесплатно, при условии, что все зависимые технологии являются открытыми и некоммерческими.</p><p> Плагины сообщества опубликованы в официальном каталоге Harvest и доступны для сообщества Harvest.</p>|
|Коммерческий |Да;<br>Требуется подписка на коммерческий плагин |<p> Вы можете создавать, подписывать и распространять плагины с зависимыми технологиями с закрытым исходным кодом или с коммерческой поддержкой, подписавшись на подписку на коммерческий плагин в Harvest Labs.</p><p> Коммерческие плагины публикуются на официальном Каталог Harvest и доступны сообществу Harvest.</p>|

Для получения инструкций о том, как подписать плагин на уровне сообщества и коммерческой подписи, обратитесь к [Подписать общедоступный плагин](#sign-a-public-plugin).

Для получения инструкций о том, как подписать плагин на уровне частной подписи, обратитесь к [Подписать частный плагин](#sign-a-private-plugin).

## Манифест плагина

Чтобы Harvest могла проверить цифровую подпись плагина, плагин должен содержать подписанный файл манифеста _MANIFEST.txt_. Подписанный файл манифеста содержит два раздела:

- ** Подписанное сообщение -** Подписанное сообщение содержит метаданные плагина и файлы плагина с соответствующими контрольными суммами (SHA256).
- ** Цифровая подпись -** Цифровая подпись создается путем шифрования подписанного сообщения с использованием закрытого ключа. В Harvest встроен открытый ключ, который можно использовать для проверки того, что цифровая подпись была зашифрована с использованием ожидаемого закрытого ключа.

**Пример файла манифеста:**

```txt
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

{
  "manifestVersion": "2.0.0",
  "signatureType": "community",
  "signedByOrg": "myorgid",
  "signedByOrgName": "My Org",
  "plugin": "myorgid-simple-panel",
  "version": "1.0.0",
  "time": 1602753404133,
  "keyId": "7e4d0c6a708866e7",
  "files": {
    "LICENSE": "12ab7a0961275f5ce7a428e662279cf49bab887d12b2ff7bfde738346178c28c",
    "module.js.LICENSE.txt": "0d8f66cd4afb566cb5b7e1540c68f43b939d3eba12ace290f18abc4f4cb53ed0",
    "module.js.map": "8a4ede5b5847dec1c6c30008d07bef8a049408d2b1e862841e30357f82e0fa19",
    "plugin.json": "13be5f2fd55bee787c5413b5ba6a1fae2dfe8d2df6c867dadc4657b98f821f90",
    "README.md": "2d90145b28f22348d4f50a81695e888c68ebd4f8baec731fdf2d79c8b187a27f",
    "module.js": "b4b6945bbf3332b08e5e1cb214a5b85c82557b292577eb58c8eb1703bc8e4577"
  }
}
-----BEGIN PGP SIGNATURE-----
Version: OpenPGP.js v4.10.1
Comment: https://openpgpjs.org

wqEEARMKAAYFAl+IE3wACgkQfk0ManCIZudpdwIHTCqjVzfm7DechTa7BTbd
+dNIQtwh8Tv2Q9HksgN6c6M9nbQTP0xNHwxSxHOI8EL3euz/OagzWoiIWulG
7AQo7FYCCQGucaLPPK3tsWaeFqVKy+JtQhrJJui23DAZLSYQYZlKQ+nFqc9x
T6scfmuhWC/TOcm83EVoCzIV3R5dOTKHqkjIUg==
=GdNq
-----END PGP SIGNATURE-----
```

## Устранение неполадок при подписании вашего плагина

### Почему я получаю "Измененную подпись" в Harvest?

Из-за проблемы при подписании плагина в Windows, harvest-toolkit генерирует недопустимый MANIFEST.txt . Вы можете исправить это, заменив все двойные обратные косые черты `\\` на косую черту `/` в MANIFEST.txt файл. Вам нужно делать это каждый раз, когда вы подписываете свой плагин.

### Ошибка подписи манифеста: требуется поле: rootUrls

Если вы пытаетесь подписать ** общедоступный ** плагин, это означает, что вашему плагину еще не присвоен уровень подписи плагина. Член команды Harvest назначит уровень подписи вашему плагину, как только он будет рассмотрен и одобрен. Для получения дополнительной информации обратитесь к [Подписать общедоступный плагин](#sign-a-public-plugin).

Если вы пытаетесь подписать **private** плагин, это означает, что вам нужно добавить флаг `rootUrls` в команду `plugin:sign`. `ROOTURLS` должен соответствовать конфигурации [root_url]({{< relref "../../administration/configuration.md#root_url" >}}). Для получения дополнительной информации обратитесь к [Подписать частный плагин](#sign-a-private-plugin).