Как исправить curl_error: SSL: альтернативное имя субъекта сертификата не соответствует имени целевого хоста "api.telegram.org"

Я использую telegram.php подключить мой бот. Когда я использую sendmessage все хорошо в моих журналах, но я ничего не получаю от бота.

Когда я проверяю свой журнал, возникает такая проблема:

ok:         False
curl_error_code:        51
curl_error:     SSL: no alternative certificate subject name matches target host name 'api.telegram.org'

Я не знаю, что делать, чтобы это исправить.

0 ответов

Я не знаю этого бота для телеграмм, но вижу, что он использует GuzzleHttp. Во время инициализации он не принимает никаких конфигурацийRequest::initialize()

public static function initialize(Telegram $telegram)
{
    if (!($telegram instanceof Telegram)) {
        throw new TelegramException('Invalid Telegram pointer!');
    }
    self::$telegram = $telegram;
    self::setClient(new Client(['base_uri' => self::$api_base_uri]));
}

вам следует проверить его документацию. Я вижу, что есть много сеттеров, которые позволяют перезаписывать настройки по умолчанию.

Что вам нужно, так это установить \GuzzleHttp\RequestOptions::VERIFY к false в конфиге клиента:

$this->client = new \GuzzleHttp\Client([
    'base_uri'                          => 'someAccessPoint',
    \GuzzleHttp\RequestOptions::HEADERS => [
        'User-Agent' => 'some-special-agent',
    ],
    'defaults'                          => [
        \GuzzleHttp\RequestOptions::CONNECT_TIMEOUT => 5,
        \GuzzleHttp\RequestOptions::ALLOW_REDIRECTS => true,
    ],
    \GuzzleHttp\RequestOptions::VERIFY  => false,
]);

Чтобы решить эту проблему, скопируйте этот URL-адрес в браузер и установите веб-перехватчик:

https://api.telegram.org/botTOKEN/setWebhook?url=https://yourwebsite.com

Решение 2 ошибки Давайте выполним следующие простые шаги:

Загрузите этот комплект корневых сертификатов: https://curl.haxx.se/ca/cacert.pem Поместите в любое место вашего сервера. Откройте php.ini и добавьте эту строку:

curl.cainfo = "[the_location]\cacert.pem"

Перезагрузите ваш веб-сервер. Вот и все.

Другие вопросы по тегам