wordpress SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Вот странная ошибка, на мой взгляд.

По логике, это должно означать, что wordpress, не смог средствами операционной системы в которой он установлен проверить валидность сертификата, и соединяться не стал. Но нет. Средствами ОС он этого сделать не может, и что бы оставить движек максимально простым в использовании, разработчики пошли на не совсем простой шаг. Встроили проверку сертификата вместе с хранилищем сертификатов в сам wordpress.

Если вы попали сюда из поисковика, в поиске решения этой ошибки, то лечится она легко:

Достаточно в директорию wp-includes/certificates положить файл http://curl.haxx.se/ca/cacert.pem под именем ca-bundle.crt

А теперь, чем меня насторожило такое решение. Дело в том, что движки подобные wordpress легко ломаются, всегда найдется пара не пропатченных багов. А загрузка файлов через SSL не стартует без проверки подлинности, на случай, если нам пытаются подсунуть левый контент посредством атаки Men in middle.

Получается, что проверку подлинности сервера можно легко отключить, путем замены файла ca-bundle.crt на свой, где будет добавлен сфабрикованный корневой сертификат которым будет подписан сертификат узла men in middle.

 

UPD: Как показала практика, не везде можно решить проблему таким образом.

На сайте разработчиков curl нашел вот что: http://osdir.com/ml/web.curl.php/2007-02/msg00008.html

Суть в том, что если у вас установлена версия curl из перечисленных:

>libcurl/7.10.3 OpenSSL/0.9.6g
> libcurl/7.12.1 OpenSSL/0.9.7a
> libcurl/7.11.2 OpenSSL/0.9.7c

То без обновления curl не обойтись.