Wp http error ssl certificate problem

Перестали работать запросы в WordPress: cURL error 60: SSL certificate has expired

C 30 сентября 2021 года на сайтах WordPress, для которых был установлен сертификат Let’s Encrypt, могут перестать работать HTTP API запросы.

Например такой запрос будет выдавать ошибку:

cURL error 60: SSL certificate problem: certificate has expired

Такую ошибку можно будет увидеть где угодно, например:

  • в админке при проверке обновлений WordPress
  • при проверке обновлений плагинов
  • при обращении к апи любого сервиса. Например, перестанет работать плагин TinyPNG — JPEG, PNG & WebP image compression и куча других, которые используют какие бы то ни было запросы.

Почему мы видим ошибку certificate has expired?

Почему так происходит подробно расписано на хабре.

Если коротко, то в ядре WP есть файл корневых сертификатов /wp-includes/certificates/ca-bundle.crt который используется для проверки SSL всех запросов созданных через HTTP API. В этом файле просрочен один из корневых сертификатов на основе которого был создан сертификат для вашего сайта. Поэтому запрос не может пройти проверку и выдается такая ошибка.

С очередными обновлениями WP эта ошибка должна пропасть, но вот что делать если решение нужно уже сегодня, или если вы не планируете обновлять WordPress, а рабочие HTTP запросы нужны.

Решение ошибки: cURL error 60: SSL certificate has expired

Вариант 1

Нужно обновить контент файла /wp-includes/certificates/ca-bundle.crt изменить его на контент этого файла https://curl.haxx.se/ca/cacert.pem.

Изменять в данном случае файл ядра допустимо, потому что при следующем обновлении WP проблема исчезнет. См. соответствующий коммит на GitHub.

Это можно сделать вручную:

  1. Скачайте файл по ссылке https://curl.haxx.se/ca/cacert.pem.
  2. Обновите контент /wp-includes/certificates/ca-bundle.crt контентом из скаченного файла.

Или используйте следующий код

Использовать код удобно, когда у вас есть возможность запустить код из админки или как-то еще, например через плагин Code Snippets.

Добавьте следующий код куда угодно и перейдите на страницу http://ВАШСАЙТ.com/?update-wp-ca-bundle .

После использования, код нужно удалить.

Вариант 2

Решить проблему можно через хук http_request_args. Этот хук нужно использовать в MU плагине.

Создайте файл loader.php в папке wp-content/mu-plugins (если такой папки у вас нет, создайте её).

Добавьте следующий код в этот файл:

Создайте папку wp-content/mu-plugins/fix-wp-ca-bundle .

Создайте файлы: main.php и ca-bundle.crt в папке fix-wp-ca-bundle .

Добавьте следующий код в эти файлы.

Код файла main.php :

Контент файла ca-bundle.crt :

Должна получится такая структура:

Готово! Теперь все должно работать как и прежде.


How to Fix the WordPress Error 60: SSL certificate problem: certificate has expired

From September 30, 2021, HTTP API requests may stop working on WordPress sites that have a Let’s Encrypt certificate installed.

For example, a request like this will result in an error:

cURL error 60: SSL certificate problem: certificate has expired

Such an error can be seen anywhere, for example:

  • In the admin panel when checking for WordPress updates.
  • When checking for plugin updates.
  • When accessing the api of any service. For example, will stop working plugin TinyPNG — JPEG, PNG & WebP image compression and a bunch of others that use any kind of requests.

Why do we see the error certificate has expired?

In brief, WP core has a file of root certificates /wp-includes/certificates/ca-bundle.crt which is used to check SSL of all requests created through HTTP API. In this file one of the root certificates has expired which was used to create a certificate for your site. Therefore, the request can not pass verification and generates this error.

More detailed explanation:

Without going into too much detail, a couple of words for non-specialists as to why the expiration of a DST Root CA X3 certificate will affect certificates issued by Let’s Encrypt. Each system that validates a certificate has its own repository of trusted root certificates. The system will trust certificates that are signed using the private key of one of these root certificates during validation. Root certificates themselves normally have long expiration dates, are seldom changed and are not used when generating end subject certificates (in this case domain name certificates), instead a public key infrastructure implies using chains of trust — root certificates are used to sign intermediate certificates and already using them to sign end subject certificates (domain certificates). Furthermore, in order for a system to trust an end subject certificate, it must be able to trace the full chain from this certificate to one of the root certificates it trusts.

When Let’s Encrypt appeared, its ISRG Root X1 root certificate (like any new root certificate) could not quickly find its way into the trusted certificate stores of a significant number of systems. At the same time, for the successful functioning of the project the issued certificates from the very beginning had to be trusted by the maximum number of systems «out of the box» (without any additional actions from the users of these systems). In this regard, for certificates Let’s Encrypt began to use the chain of trust leading to the root certificate DST Root CA X3 , which is recognized by most systems.

With the next WP update this error disappear, but here’s what to do if you need the solution today, or if you do not plan to update WordPress, but need working HTTP requests.

Читайте также:  Error lnk2001 неразрешенный внешний символ sprintf

Solution: cURL error 60: SSL certificate has expired

You need to update the content of /wp-includes/certificates/ca-bundle.crt file. You need to change it to the content of the https://curl.se/ca/cacert.pem file.

Changing the core file in this case is acceptable, because the next time you update WP, the problem will go away. See corresponding commit on GitHub.

It can be done manually

Update content of /wp-includes/certificates/ca-bundle.crt with content from the downloaded file.

  • DONE! Everything should now work as before.
  • Or use the following code to perform this operation programmatically

    Using the code is handy when you have the ability to run the code from the admin panel, for example using Code Snippets plugin.

    Add the following code into the themes functions.php file (or in Code Snippets plugin):

    After use, delete this code.

    Visit http://YOURSITE.com/?update-wp-ca-bundle the page.

    Replace YOURSITE.com to your domain.

    The amazing solution you are given in your blog post.


    Failed to request via WordPress: cURL error 60: SSL certificate problem

    Recently, I’m getting the following error messages when running the cron for Page Optimization manually (generate UCSS and WebP)

    Failed to request via WordPress: cURL error 60: SSL certificate problem: certificate has expired [server] https://api.quic.cloud [service] d/usage

    Failed to request via WordPress: cURL error 60: SSL certificate problem: certificate has expired [server] https://api.quic.cloud [service] d/nodes

    When I tried to refresh the Domain Key it shows: Cloud Error: cURL error 60: SSL certificate problem: certificate has expired

    My domain name is covered with a valid SSL certificate (please check the link below)

    Report number: RSTHWWJY

    Please advise, thanks!

    The page I need help with: [log in to see the link]

    please create a php file at same dir as your wp-config.php with code

    then access it by browser, see what it returns

    Hi, thanks for your reply.

    This is what it returns:

    How do I fix this?

    the issue is happened because of Let’s Encrypt CA cert has expired at end of Sept , 2021

    so many sites (specially the ones who serve API that unlike the real browser does ) that using Let’s Encrypt cert has been affected

    only way to fix is to ask your hosting provider to update the CA cert on their servers.

    yum update ca-certificates for CentOS 7

    Hello, Thanks for your reply.

    Please find below the response from my hosting provider:

    “The server is running with updated root certificates and the domains are not using Let’s Encrypt to begin with.

    I have double-checked and the SSL certificate on the account is issued through a different authority (Comodo).

    Our web servers are using Litespeed Web Server and LSCache but not QUIC.

    QUIC https://quic.cloud/ requires additional configuration and licensing which we do not advertise and/or support.

    This can be set up on a dedicated server but not through our shared/reseller plans I am afraid.”`

    The strange thing is that other domains in my shared reseller hosting plan are working fine with Litespeed’s Page Optimization (generating WebP and minify CSS etc.)


    Ошибка на странице сайта

    Здравствуйте! Буквально вчера появилась ошибка на сайте :»Ошибка RSS: WP HTTP Error: SSL certificate problem: certificate has expired», хотя в сведениях о странице говорится о том, что сертификат действительный. Что это значит? Что надо сделать, чтобы этой ошибки не было? С уважением, Людмила Горяева
    Прошу не оставить без внимания. Надеюсь получить ответ и помощь.

    вчера появилась ошибка на сайте

    На каком сайте? Если вышеозначенный сайт не относится к официальным ресурсам WordPress, вопрос будет перенесен в другой раздел.

    Форум «Обратная связь»
    Идеи, отзывы и предложения по WordPress, форуму и другим официальным ресурсам.

    Здравствуйте, Юрий! Сайт WordPress Pcholka11.ru

    То, что сайт работает на движке wordpress, не делает его официальным ресурсом. Вопрос будет перенесен в другой раздел.

    у вас все в порядке с сертификатом

    в дальнейшем, если подобные вещи будут повторяться — обращайтесь в поддержку вашего хостинга (TimeWeb), это они управляют сертификатами SSL для вашего сайта

    Ошибка RSS: WP HTTP Error: SSL certificate problem: certificate has expired»

    Возможно, проблемы с сертификатом у сайта, с которого импортируется RSS. На Вашем сайте я не вижу этой ошибки, поэтому ничего конкретного сказать не могу.

    я еще с утра немного не проснулась, но…

    Людмила, вы с какого сайта получаете ленту RSS на ваш сайт? Можете дать ссылку?

    Возможно проблема у них, но есть возможность (небольшая, таймвеб вроде считают себя приличным хостингом), что и на стороне вашего хостинга (версия OpenSSL

    RSS комменты:opera://news/?preview_title=Комментарии+для+ПОТРЕБИТЕЛЬСКИЙ+КООПЕРАТИВ+»ПЧЁЛКА»&preview_url=https%3A%2F%2Fpcholka11.ru%2Fcomments%2Ffeed%2F
    RSS контент: opera://news/?preview_title=ПОТРЕБИТЕЛЬСКИЙ+КООПЕРАТИВ+»ПЧЁЛКА»&preview_url=https%3A%2F%2Fpcholka11.ru%2Ffeed%2F
    Юрий, Вы не увидели сообщение об ошибке внизу справа перед Яндекс — новостями, после значка RSS. Если смотрели на смартфоне, она там отсутствует.
    Судя по ссылке ошибку выставила Опера?

    внизу справа перед Яндекс — новостями, после значка RSS.

    Это в Опере если что. И rss комментариев открывается.

    В какой операционной системе Вы смотрели? В Андроиде этой ошибки не видно, а вот в Опере:
    Хочу Вам отправить скриншот, ничего не получается. Я почистила историю, вызвала Пчелку, ошибка есть. А RSS и то, и другое открывается нормально. Может быть можно зайти в админ панель и убрать это сообщение?
    А как можно отправить Вам фото?

    Читайте также:  Nexus error the factory content is incomplete

    » С очередными обновлениями WP эта ошибка должна пропасть, но вот что делать если решение нужно уже сегодня, или если вы не планируете обновлять WordPress, а рабочие HTTP запросы нужны.» Это я прочитала вот здесь:https://wp-kama.ru/note/perestali-rabotat-curl-zaprosy-v-wordpress-chto-delat
    Но дело в том, что WordPress 4.0 никогда не обновляется. А можно сделать как-то так, чтобы он обновлялся?

    WordPress 4.0 обновляется по ветке
    последняя версия — 4.0.33 , вышла в мае этого года, содержит исправления безопасности.

    WP вам нужно обновлять до более актуальной версии,
    сделать бэкап, сохранить его у себя (файлы и дамп базы данных) и пытаться обновить до более современной версии.

    В качестве хотфикса проблемы curl (которая кстати появилась не вчера, а около месяца назад)
    могу предложить скачать вот этот файл
    и заменить им файл ca-bundle.crt в папке /wp-includes/certificates/
    на вашем сайте (используя ФТП или файловый менеджер хостинга)

    в приципе по вашей ссылке на том сайте предлагают примерно то же самое, только файл предлагают скачать другой. Для WordPress я дала более правильную ссылку на файл сертификатов

    • Ответ изменён 1 год, 2 месяца назад пользователем Yui .

    Здравствуйте, Все! Спасибо всем за участие в этой проблеме. На Таймвебе сертификат этот, наверное, удалили. Ошибка теперь не высвечивается. Идея обновить WP меня волнует давно. Но в админ панели все время пишут, что это самая новейшая версия WP, и обновление не происходит. Для обновления вручную у меня не хватает знаний. Хорошо было бы поставить версию, которую можно было бы обновлять автоматически. Может быть вы сможете мне помочь обновить WP до 4.0.33?

    впрочем, можете просто заглянуть в wp-config.php
    если там есть константы


    то строки с ними можно удалить (это сбросит эти константы на значение по умолчанию)

    Если будете обновлять вручную — архивы выпусков для всех веток тут —

    А Вы можете помочь обновить версию? Я просто боюсь браться за это дело, поскольку у меня не хватает знаний и опыта.

    на форуме принято помогать только советами,
    если вам нужен исполнитель, то вы можете поискать его на соответствующих сайтах фрилансеров или в этом разделе форума


    How to Fix Common SSL Issues in WordPress (Beginner’s Guide)

    Last updated on November 21st, 2022 by Editorial Staff | Reader Disclosure Disclosure: Our content is reader-supported. This means if you click on some of our links, then we may earn a commission. See how WPBeginner is funded, why it matters, and how you can support us.

    Moving a WordPress site to SSL can sometime result in unexpected issues. If you’re adding SSL to an existing WordPress site and are running into errors, then you’re in luck.

    In this article, we will show you how to fix the most common SSL issues in WordPress.

    What Is SSL/HTTPS and Why You Should Start Using It Right Away?

    SSL is an abbreviation used for Secure Sockets Layers, an encryption technology that secures the connection between the user’s browser and your WordPress hosting server.

    Once you enable SSL, your website will use HTTPS instead of HTTP, and you will also see a padlock sign next to your website address in the browser to show that it is secure.

    SSL/HTTPS makes it harder for hackers to eavesdrop on the connection. Each SSL/HTTPS-enabled site is issued a unique SSL certificate for identification purposes.

    If a server is only pretending to be on HTTPS and its certificate doesn’t match, then most modern browsers will warn the user from connecting to the website.

    Google encourages all website owners to use SSL/HTTPS in order to improve overall web security. That’s why Chrome marks all websites without an SSL certificate as “Not secure”.

    The ‘Not secure’ label in the browser’s address bar gives a bad impression to your customers about your business. Aside from that, you also need SSL/HTTPS enabled if you want to make an online store or use payment services like PayPal, Stripe, Authorize.net.

    Considering the pros and cons, all websites need to switch to SSL/HTTPS.

    If you haven’t already done that, then head over to our guide on how to properly move WordPress from HTTP to HTTPS for step-by-step instructions.

    Recommended: Check out our guide on how to get a free SSL certificate or buy an SSL certificate at a discount from Domain.com.

    That being said, let’s take a look at some of the common issues with SSL/HTTPS in WordPress and how to fix them:

    1. Fixing the NET::ERR_CERT_INVALID Error

    This error message appears in Google Chrome. Other browsers display a slightly different message, but it basically warns users that their connection to your website is insecure.

    This error message indicates that the user’s browser didn’t accept the certificate presented by the website. This could happen due to a number of reasons:

    • The SSL certificate is issued to a different domain name or subdomain
    • The certificate has expired
    • Your browser doesn’t recognize the certificate issuing authority

    If you purchased an SSL certificate and asked your WordPress hosting provider to install it for you, then you can contact them to fix it for you.

    Читайте также:  Error 0x800f0954 windows 10

    If you manually installed the SSL certificate, then try reinstalling it or contact your SSL certificate provider for support.

    2. Fixing Mixed Content Errors After Moving to SSL/HTTPS

    Mixed content errors are caused by sources that are still loading using the insecure HTTP protocol in the URLs. This can include resources such as images, scripts, or stylesheets.

    If that is the case, then you will not be able to see a secure padlock icon in your website’s address bar.

    There are two ways to fix SSL/HTTPS mixed content errors in WordPress. We will show you both of them and then you can pick one that works best for you.

    1. Fixing Mixed Content Errors in WordPress Using a Plugin

    This method is easier and is recommended for beginners. But it can have a negative impact on your WordPress performance because the plugin attempts to fix mixed content errors by using an output buffering technique.

    However, if you are using a caching plugin, then it will only impact the first page load. Later visitors won’t notice any difference in performance.

    First, you’ll need to make sure you have an SSL certificate. If you’re not sure if you have one, see our guide on how to get a free SSL certificate for your WordPress website.

    Then, simply install and activate the Really Simple SSL plugin. For more details, see our step-by-step guide on how to install a WordPress plugin.

    Upon activation, you need to visit the Settings » SSL page to review plugin settings. Really Simple SSL works out of the box and will automatically take care of your SSL/HTTPS settings and fix mixed content errors.

    2. Manually Fixing Mixed Content Errors in WordPress

    This method is more effective and better for your website’s performance. However, it requires manual troubleshooting.

    First, you need to go to Settings » General and make sure that the ‘WordPress Address’ and ‘Site Address’ options have HTTPS URLs.

    If you see URLs starting with ‘http’, then you need to go ahead and change them to ‘https’. Don’t forget to click on the save changes button to store your settings.

    Next, you need to find old HTTP URLs in your WordPress database and replace them with the new HTTPS URLs.

    You can easily do that by installing and activating the Better Search Replace plugin. For more details, see our step-by-step guide on how to install a WordPress plugin.

    Upon activation, you need to visit the Tools » Better Search Replace page. In the ‘Search’ field, you need to add your website URL with HTTP. After that, add your website URL with ‘https’ in the ‘Replace’ field.

    The plugin will now update URLs in your WordPress database.

    If you are still seeing mixed content errors, then the next step is to troubleshoot URLs in your WordPress theme and plugin files.

    Using your browser’s Inspect tool, you will need to locate the resources causing the errors and take note of which website files they are loading from.

    If you are experienced at editing WordPress files, then you can access those theme files using FTP or your web hosting file manager. You need to edit each file and replace ‘http’ with ‘https’.

    An easier alternative is to reach out to the theme developer and request them to update their theme. They will need to use WordPress best practices to load files, which will fix the HTTP/HTTPS issue.

    The same goes for the mixed content loaded by a WordPress plugin. We don’t recommend editing plugin files yourself, so you should notify the plugin developer and request an update. Meanwhile, you can disable the plugin on your site or find an alternative plugin.

    3. Fixing the Too Many Redirects Errors After Moving to SSL/HTTPS

    WordPress allows you to enforce SSL/HTTPS for the admin area by entering the following line into your wp-config.php file.

    However, in some scenarios, this setting alone would cause the ‘Too many redirects‘ error.

    To fix this, you will need to add the following code to your wp-config.php file just before the line that says ‘That’s all, stop editing! Happy blogging.’.

    4. Fixing the WordPress HTTP to HTTPS Redirect

    WordPress will not automatically redirect HTTP requests to HTTPS unless you tell it to do so. If you are using a plugin like Really Simple SSL, then it would take care of redirects. Otherwise, you will have to manually set up redirects.

    To set up HTTP to HTTPS redirect, you need to add the following code to your .htaccess file.

    We hope this article helped you fix some common issues with SSL/HTTPS in WordPress. You may also want to see our ultimate WordPress security guide, or check out our list of proven ways to make money blogging with WordPress.

    If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.


    Оцените статью