Это поведение здесь зависит от версии openssl и curl.
Традиционно openssl требовал проверки всей цепочки, т.е. вплоть до самоподписанного и локально доверенного сертификата root. В openssl 1.0.2 был добавлен флаг X509_V_FLAG_PARTIAL_CHAIN , что позволило завершить проверку цепочки произвольным доверенным сертификатом, независимо от того, является ли он самоподписанным root или нет. Но это поведение по умолчанию отключено.
С curl 7.68.0 этот флаг в curl включен по умолчанию, поэтому с более новыми версиями curl и openssl должна быть возможность иметь сертификат цепочки в --cacert
вместо самоподписанного сертификата root. Не имеет значения, отправит ли сервер дополнительные сертификаты цепочки, необходимые для проверки цепочки, поскольку curl / openssl будет просто использовать сертификаты, которые действительно необходимы. Проверено с помощью curl 7.68.0 с openssl 1.1.1 в Ubuntu 20.04.