library - phpmailer gmail
PHPMailer-SSL3_GET_SERVER_CERTIFICATE: error en la verificación del certificado (4)
¡Solo quería poner mis 2 centavos ya que he estado buscando una solución durante días hasta que probé la solución de Kaf y funcionó! Gracias @kaf
De todos modos ... Para mí, PHPMailer funcionaba bien hasta que decidí actualizar PHP a PHP5.6
Se hicieron cambios para abrir ssl en PHP 5.6. Aquí están los documentos oficiales:
http://php.net/manual/en/migration56.openssl.php
De los documentos, dice que poner a verifique_peer y verifique_peer_name en falso
Así que solo siga la respuesta de Kaf y vea si eso funciona para usted.
Nota del editor : ¡el documento también dice que esto no se recomienda! Deshabilitar la verificación SSL tiene implicaciones de seguridad. Sin la verificación de la autenticidad de las conexiones SSL / HTTPS, un atacante malintencionado puede hacerse pasar por un punto final de confianza (como GitHub o algún otro host Git remoto), y será vulnerable a un ataque Man-in-the-Middle . Asegúrese de comprender completamente los problemas de seguridad antes de usar esto como una solución.
Encontré un problema por el cual el correo electrónico debería enviarse desde un servidor de correo que tiene certificado autofirmado, el error que obtengo es:
PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in class.smtp.php on line 327.
¿Alguien ha encontrado algo similar?
EDITAR:
También he intentado configurar los parámetros de stream_context (parámetros: opciones de contexto SSL ):
$options[''ssl''][''verify_peer''] = false;
$options[''ssl''][''verify_peer_name''] = false;
$options[''ssl''][''allow_self_signed''] = true;
Sin suerte, todavía falla con el mismo error que se señaló anteriormente.
Gracias.
PHP 5.6 introduce la verificación del certificado SSL, por lo que si su configuración está rota, fallará con este error.
Debe corregir su SSL, pero puede volver al comportamiento anterior configurando la propiedad
SMTPOptions
para no verificar los certificados:
$mail->SMTPOptions = array(
''ssl'' => array(
''verify_peer'' => false,
''verify_peer_name'' => false,
''allow_self_signed'' => true
)
);
La edición de la biblioteca derrota todo el punto de las bibliotecas, y si haces lo que sugiere la respuesta de Kaf, tu código se romperá cuando actualices. Realmente, no hagas eso.
Nota del editor : deshabilitar la verificación SSL tiene implicaciones de seguridad. Sin la verificación de la autenticidad de las conexiones SSL / HTTPS, un atacante malintencionado puede hacerse pasar por un punto final de confianza (como GitHub o algún otro host Git remoto), y será vulnerable a un ataque Man-in-the-Middle . Asegúrese de comprender completamente los problemas de seguridad antes de usar esto como una solución.
Tengo el mismo problema. Así que cambié el archivo class.smtp.php en la línea 238:
public function connect($host, $port = null, $timeout = 30, $options = array()) {
if (count($options) == 0) {
$options[''ssl''] = array(''verify_peer'' => false, ''verify_peer_name'' => false, ''allow_self_signed'' => true);
}
ahora funciona bien!
Nota del editor : deshabilitar la verificación SSL tiene implicaciones de seguridad. Sin la verificación de la autenticidad de las conexiones SSL / HTTPS, un atacante malintencionado puede hacerse pasar por un punto final de confianza (como GitHub o algún otro host Git remoto), y será vulnerable a un ataque Man-in-the-Middle . Asegúrese de comprender completamente los problemas de seguridad antes de usar esto como una solución.
Yo tuve el mismo problema. Resultó que mi configuración de Postfix no tenía la configuración de certificados intermedios y raíz:
smtpd_tls_CAfile=/etc/ssl/certs/intermediate-root-bundle.crt
Aunque esta configuración de Postfix ha funcionado durante años con Outlook y Thunderbird, PHP fue más exigente y falló la verificación SSL.
Entonces, a pesar de que podría verse tentado a hackear PHPMailer, no lo haga y solucione el problema subyacente.