php - crear - Permitir certificados autofirmados para el contenedor HTTPS
instalar certificado ssl apache ubuntu (2)
$contextOptions = array(
''ssl'' => array(
''verify_peer'' => true,
''allow_self_signed''=> true
)
);
$sslContext = stream_context_create($contextOptions);
file_get_contents ("https: // ...., falso, $ sslContext);
lo anterior funciona bien
Básicamente tengo esto:
function request($url) {
return file_get_contents($url, false, stream_context_create(array(
"ssl" => array(
"verify_peer" => true,
"allow_self_signed" => false,
)
)));
}
request("https://[A]");
request("https://[B]");
Donde [A] es un URL en un servidor con un certificado "real" y [B] es algo en uno con solo un certificado autofirmado.
Con [A] funciona bien, con [B] obtengo esto:
file_get_contents(): Failed to enable crypto
Que es un mensaje de error bastante desafortunado que debería haber sido algo así como "error en la verificación del certificado del servidor", pero bien ...
Ahora pensé: "está bien, [B] es mi sistema de prueba, no me importa el certificado" y cambié el contexto a este:
"verify_peer" => false,
"allow_self_signed" => true,
Ahora debería aceptar cualquier certificado de servidor, incluso mi auto firmado. Pero sigue siendo el mismo comportamiento: [A] funciona, [B] no. ¿Por qué?
Por cierto, sé que funciona bien con la extensión curl, pero quiero superar esto sin eso.
Esto funciona para mí Buena suerte.
$context = [ ''http'' => [ ''method'' => ''GET'' ], ''ssl'' => [ ''verify_peer'' => false, ''allow_self_signed''=> true ] ];
$context = stream_context_create($context);
$resp = file_get_contents(''https://site/'', false, $context);