Меня смущает значение флага проверки OpenSSL PKCS7_NOCHAIN. По определению сказано:
Если установлен PKCS7_NOCHAIN, сертификаты, содержащиеся в сообщении, не используются в качестве ненадежных центров сертификации. Это означает, что вся цепочка проверки (кроме сертификата подписавшего) должна содержаться в доверенном хранилище.
"сертификаты, содержащиеся в сообщении, не используются в качестве ненадежных центров сертификации" и "вся цепочка проверки должна содержаться в доверенном хранилище"
Обычно проверка проходит по цепочке, проверяя сертификаты эмитента / корневого центра сертификации. Что меняется с флагом PKCS7_NOCHAIN?
Основываясь на документе, здесь кажется, что он указывает OpenSSL доверять издателю сертификата, а не проверять эмитент, идущий по цепочке. https://www.php.net/manual/en/openssl.pkcs7.flags.php