Назад | Перейти на главную страницу

Следует ли использовать отдельные корневые центры сертификации для сертификатов внутреннего сервера, сертификатов внешних клиентов и сертификатов HTTPS?

Должен ли я иметь 3 корневых центра сертификации, 1 корневой центр сертификации + 3 промежуточных узла или какую-либо другую установку PKI для следующей ситуации?

У меня три варианта использования:

  1. Предоставить веб-API через HTTPS (сертификаты сервера)
  2. Разрешить клиентам аутентифицироваться с помощью клиентского сертификата вместо имени пользователя / пароля (внешние клиентские сертификаты)
  3. Проверить внутренние серверы как клиенты (внутренние клиентские сертификаты)

Каждая пара ключей будет использоваться ровно для одного из вариантов использования.

Предположим, мне не нужен сторонний центр сертификации, и вместо этого я работаю с настраиваемым PKI в закрытой системе. Я вижу два основных способа поддержать это:

  1. 1 корневой центр сертификации с 3 промежуточными центрами сертификации (по одному на каждый случай)
  2. 3 корневых центра сертификации (по одному на каждый вариант использования)

Я попытался начать №1, но обнаружил, что для того, чтобы openssl s_client проверить сертификаты клиентов на HTTPS-сервере node.js, который мне нужно проверить от промежуточного до корневого, а не только на промежуточном. Это означает, что клиентские сертификаты между вариантом использования 2 и 3 можно менять местами, поскольку корень является якорем доверия. Я осмотрелся, но не могу найти способ сделать промежуточный ЦС якорем доверия для HTTPS-сервера node.js.

Итак, я что-то сильно не понимаю, мне нужно перейти к реализации №2 или к смеси вещей.

Сертификаты X.509 могут обеспечивать конфиденциальность и аутентификацию. То есть их можно использовать для шифрования ссылки и, необязательно, для аутентификации пользователя или сервера.

Они не дают авторизации. Вместо этого это зависит от приложения, чтобы определить, разрешен ли объект, который прошел аутентификацию с помощью сертификата X.509, для доступа к ресурсам.

Это означает, что (1) выше в порядке. Используйте один корень и убедитесь, что авторизация выполняется другим способом.

Однако, если вы настаиваете на том, чтобы сертификаты X.509 также обеспечивали авторизацию, вам необходимо:

  • Положитесь на политики сертификатов, чтобы гарантировать, что приложения доверяют только определенным сертификатам - удачи с этим, поскольку вам, вероятно, придется кодировать свои собственные приложения, которые проверяют политики;
  • Используйте разные корневые сертификаты для каждого приложения; как в (2) выше.