Как построить цепочку сертификатов 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;
Ясно, что нам нужно предоставить ему обе цепочки промежуточных и корневых сертификатов, но я не могу найти никакой документации о том, поддерживается ли он вообще или в каком порядке должны быть эти сертификаты, то есть, должно ли это быть:
- intermediate1
- root1
- intermediate2
- root2
или же
- intermediate1
- intermediate2
- root1
- root2
или, если им нужен общий корень (некоторые сертификаты ECC подписаны с использованием корня RSA):
- intermediate1
- intermediate2
- корень
или просто невозможно ли сделать OCSP с двойными сертификатами в nginx.
Как должен быть построен этот комплект сертификатов?
1 ответ
Я провел быстрое исследование, и, кажется, самый простой ответ на это "ты не строишь это", и он просто сработает:)
Сшивание OSCP может нормально работать без ssl_trusted certificate
пока..
- Ваше хранилище доверенных корневых сертификатов ОС обновлено (подумайте
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
и наличие современных корневых центров сертификации в вашей системе.