Подтвердить что ты не робот

Как исправить stream_socket_enable_crypto(): операция SSL завершилась неудачно с кодом 1

stream_socket_enable_crypto(): SSL operation failed with code 1. 
OpenSSL Error messages: error:14090086:SSL 
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Im, используя Laravel 4.2, PHP 5.6, Apache 2.4

У меня установлен GoDaddy SSL в Amazon ec2 Linux.

SSL работает нормально, когда я посещаю сайт с помощью https.

Ошибка при вызове моей функции:

<?php

public function sendEmail() 
{
        \Mail::send ( 'emails.code.code', $data, function ($sendemail) use($email) {
            $sendemail->from ( '[email protected]', 'Me Team' );
            $sendemail->to ( $email, '' )->subject ( 'Activate your account' );
        } );

}
?>

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

Прочитал это: https://www.mimar.rs/en/sysadmin/2015/php-5-6-x-ssltls-peer-certificates-and-hostnames-verified-by-default/

и эту документацию php http://php.net/manual/en/migration56.openssl.php, которую трудно понять.

Итак, мой вопрос в том, как решить эту проблему?

4b9b3361

Ответ 1

Попробуйте изменить app/config/email.php

smtp до mail

Ответ 2

Вы должны добавить код ниже в /config/mail.php(работает на laravel 5.4)

'stream' => [
'ssl' => [
    'allow_self_signed' => true,
    'verify_peer' => false,
    'verify_peer_name' => false,
],
],

Ответ 3

У меня также есть эта ошибка в laravel 4.2. Я так решил. Выясните StreamBuffer.php. Для меня я использую xampp, а мое имя проекта isis_db для этого, мой путь такой. Поэтому попробуйте найти в соответствии с вашим

C:\XAMPP\HTDOCS\itis_db\​​поставщика\SwiftMailer\SwiftMailer\Lib\Классы\Свифт\Транспорт\StreamBuffer.php

и узнайте эту функцию внутри StreamBuffer.php

private function _establishSocketConnection()

и вставьте эти две строки внутри этой функции

$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;

и перезагрузите браузер и попробуйте снова запустить проект. Для меня я надел вот так:

private function _establishSocketConnection()
{
    $host = $this->_params['host'];
    if (!empty($this->_params['protocol'])) {
        $host = $this->_params['protocol'].'://'.$host;
    }
    $timeout = 15;
    if (!empty($this->_params['timeout'])) {
        $timeout = $this->_params['timeout'];
    }
    $options = array();
    if (!empty($this->_params['sourceIp'])) {
        $options['socket']['bindto'] = $this->_params['sourceIp'].':0';
    }

   $options['ssl']['verify_peer'] = FALSE;
    $options['ssl']['verify_peer_name'] = FALSE;

    $this->_stream = @stream_socket_client($host.':'.$this->_params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, stream_context_create($options));
    if (false === $this->_stream) {
        throw new Swift_TransportException(
            'Connection could not be established with host '.$this->_params['host'].
            ' ['.$errstr.' #'.$errno.']'
            );
    }
    if (!empty($this->_params['blocking'])) {
        stream_set_blocking($this->_stream, 1);
    } else {
        stream_set_blocking($this->_stream, 0);
    }
    stream_set_timeout($this->_stream, $timeout);
    $this->_in = &$this->_stream;
    $this->_out = &$this->_stream;
}

Надеюсь, вы решите эту проблему.....

Ответ 4

Простое исправление для этого может быть связано с настройкой config/mail.php и отключением TLS

'encryption' => env('MAIL_ENCRYPTION', ''), //'tls'),

В основном, делая это

$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;

Вы также должны освободить систему безопасности, но в первом варианте нет необходимости погружаться в код поставщика.

Ответ 5

Чтение приложения /config/mailphp

Supported : "smtp", "mail", "sendmail"

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

'driver' => 'sendmail',

Ответ 6

Настройте параметры с помощью транспорта...

            $mailer =  \Swift_Mailer::newInstance(
                \Swift_SmtpTransport::newInstance()
                    ->setHost(\Yii::$app->params['servers'][4]['host'])
                    ->setPort(\Yii::$app->params['servers'][4]['port'])
                    ->setEncryption(\Yii::$app->params['servers'][4]['encr'])
                    ->setStreamOptions(array('ssl' => array('allow_self_signed' => true, 'verify_peer' => false, 'verify_peer_name' => false)))
                    ->setUsername(\Yii::$app->params['servers'][4]['user'])
                    ->setPassword(\Yii::$app->params['servers'][4]['pass'])
            );