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-certificates
в RedHat)ssl_stapling on;
и ssl_stapling_verify on;
В документации nginx ясно, что только ...
Если файл ssl_certificate не содержит промежуточных сертификатов, сертификат поставщика сертификата сервера должен присутствовать в файле ssl_trusted_certificate
Вы можете проверить свои данные в тесте SSL Labs, чтобы подтвердить это - сшивание OSCP отлично работает без ssl_trusted_certificate
.
Таким образом, двойные сертификаты могут иметь работающий OSCP, если вы просто обеспечите передовой опыт размещения как самого сертификата, так и его промежуточного сертификата в файле, определенном в ssl_certificate
и наличие обновленных корневых центров сертификации в вашей системе.