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

Как построить цепочку сертификатов OCSP для сертификатов RSA + ECC с двойным стеком

Nginx позволяет нам использовать несколько сертификатов, поэтому мы можем использовать как сертификаты ECC, так и сертификаты RSA.

ssl_certificate /etc/ssl/example.com.combined.crt;
ssl_certificate_key /etc/ssl/example.com.key;
ssl_certificate /etc/ssl/example.com-ecc.combined.crt;
ssl_certificate_key /etc/ssl/example.com-ecc.key;

Однако он позволяет нам указать только один доверенный сертификат, который будет использоваться для сшивания OCSP:

ssl_trusted_certificate /etc/ssl/ocsp-bundle-rsa-ecc.crt;

Очевидно, нам нужно предоставить ему обе цепочки промежуточных и корневых сертификатов, но я не могу найти никакой документации о том, поддерживается ли он вообще или в каком порядке должны быть эти сертификаты, то есть должно ли это быть:

или

или, если им нужно поделиться корнем (некоторые сертификаты ECC подписаны с использованием корня RSA):

или просто невозможно сделать OCSP с сертификатами двойного формата в nginx.

Как должен быть построен этот комплект сертификатов?

Я провел небольшое исследование, и мне кажется, что это самый простой ответ на вопрос «вы не строите его», и он просто сработает :)

Сшивание OSCP может работать нормально без ssl_trusted certificate так долго как..

  • В вашем доверенном корневом хранилище CA установлена ​​последняя версия (подумайте, ca-certificates в RedHat)
  • У тебя есть ssl_stapling on; и ssl_stapling_verify on;
  • Каждый ваш сертификат (на основе ECC и RSA) включает полную цепочку, за исключением корневого CA

В документации nginx ясно, что только ...

Если файл ssl_certificate не содержит промежуточных сертификатов, сертификат поставщика сертификата сервера должен присутствовать в файле ssl_trusted_certificate

Вы можете проверить свои данные в тесте SSL Labs, чтобы подтвердить это - сшивание OSCP отлично работает без ssl_trusted_certificate.

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