У меня есть действующий сертификат, установленный на сервере, и при использовании параметра -CApath с OpenSSL цепочка сертификатов действительна. Однако, если я не предоставлю параметр -CApath, я получаю следующее:
19:self signed certificate in certificate chain
Когда я пробую HTTPS-порт Google без -CApath, OpenSSL возвращает:
20:unable to get local issuer certificate
В чем разница между ними?
Это очень похожие ошибки. Оба они указывают на то, что цепочка доверия не заканчивается на доверенном сертификате. Разница в том, что первая ошибка возникает, когда цепочка заканчивается на промежуточном сертификате, а вторая возникает, когда цепочка заканчивается на корневом сертификате.
20 - ожидаемая ошибка, если корневой сертификат неизвестен. Цепочка доверия заканчивается промежуточным сертификатом, и вы не можете получить сертификат эмитента.
19 произойдет, если сервер по какой-то причине отправит самоподписанный корневой сертификат в цепочке. Клиент не будет использовать корневой сертификат, если он ему не доверяет, а если он ему доверяет, он у него уже есть, поэтому нет смысла его отправлять. Но и никакого вреда. Он просто меняет сообщение об ошибке.
Итак, я бы сделал вывод, что на вашем сервере у вас есть корневой сертификат, настроенный как сертификат цепочки. Итак, ваш сервер обслуживает этот корневой сертификат клиентам. В этом нет необходимости, но, насколько я знаю, безвредно.