Типы расширений сертификатов, которые необходимо применять для ограничения: ... Использование ключа и / или Расширенное использование ключа расширения.Для любого вида цифровой подписи вам потребуется как минимум Key Usage , называемое ... digitalSignature , как указано в RFC 5280 .Стандартные (расширенные) расширения использования ключей все указаны в § 4.2.1.3 и 4.2.1.12 RFC .
. Для простоты всегда можно избежать сертификатов, поддерживая хранилище доверенных сертификатов.(статический список) открытых ключей (или отпечатков пальцев, если вы хотите оптимизировать использование памяти / диска) на стороне верификатора JWT.Но это имеет некоторые ограничения , такие как:
- Вы должны знать заранее все открытые ключи, потенциально используемые для подписи JWT.Это не всегда так.(Например, в некоторых случаях все, что вы хотите знать в качестве верификатора, это то, что ключ принадлежит сущности какой-либо доверенной организации и что ему разрешено подписывать.)
- Если список открытых ключей равен / становится слишком большой, трудно управляемый.
- Если ключи меняются слишком часто (помните, что ключи следует регулярно обновлять), это вряд ли поддается управлению.
Следовательно, если такие ограничения влияют на вас, сертификаты X.509 предлагают более масштабируемое и гибкое решение , но, конечно, с дополнительным уровнем сложности.С сертификатами это работает следующим образом:
- Каждый издатель JWT имеет сертификат, выданный одним или несколькими центрами сертификации (CA).
- JWT-верификаторы должны доверять этим CA (список доверенных CA.), вместо того, чтобы доверять каждому сертификату издателя JWT.
- JWT включает сертификат подписавшего (или цепочку сертификатов, если вы используете под-CA) в
x5c
параметр заголовка заголовка JWS согласно RFC 7515 (цепочка сертификатов X.509) , чтобы верификатор мог связать сертификат (цепочку) с одним из доверенных ЦС.