openssl x509 verify()
openssl_x509_verify
(PHP 7 >= 7.4.0, PHP 8)
openssl_x509_verify — Verifierar digital signatur av x509-certifikat mot en offentlig nyckel
Beskrivning
openssl_x509_verify(
OpenSSLCertificate|string '''$certificate''',
OpenSSLAsymmetricKey|OpenSSLCertificate|array|string '''$public_key'''
): int
openssl_x509_verify() verifierar att certifikatet certificate är signerat av den privata nyckeln som motsvarar den offentliga nyckeln public_key.
Parametrar
- certificate — Se nyckel-/certifikatparametrar för en lista över giltiga värden.
- public_key — Offentlig nyckel som används för att verifiera signaturen. Kan vara:
*OpenSSLAsymmetricKey- en nyckel som returneras avopenssl_get_publickey()*string- en PEM-formaterad nyckel (exempelvis:-----BEGIN PUBLIC KEY----- MIIBCgK...)
Returnerar
Returnerar 1 om signaturen är korrekt, 0 om den är felaktig, och -1 vid fel.
Changelog
- 8.0.0 — certificate accepterar nu en
OpenSSLCertificate-instans; tidigare accepterades en resurs av typen OpenSSL X.509. - 8.0.0 — public_key accepterar nu en
OpenSSLAsymmetricKeyellerOpenSSLCertificate-instans; tidigare accepterades en resurs av typen OpenSSL-nyckel eller OpenSSL X.509.
Exempel
Exempel #1 openssl_x509_verify()-exempel
<?php
$hostname = "news.php.net";
$ssloptions = array(
"capture_peer_cert" => true,
"capture_peer_cert_chain" => true,
"allow_self_signed"=> false,
"CN_match" => $hostname,
"verify_peer" => true,
"SNI_enabled" => true,
"SNI_server_name" => $hostname,
);
$ctx = stream_context_create(array("ssl" => $ssloptions));
$result = stream_socket_client("ssl://$hostname:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $ctx);
$cont = stream_context_get_params($result);
$x509 = $cont["options"]["ssl"]["peer_certificate"];
$certparsed = openssl_x509_parse($x509);
foreach ($cont["options"]["ssl"]["peer_certificate_chain"] as $chaincert) {
$chainparsed = openssl_x509_parse($chaincert);
$chain_public_key = openssl_get_publickey($chaincert);
$r = openssl_x509_verify($x509, $chain_public_key);
if ($r == 1) {
echo $certparsed['subject']['CN'];
echo " was digitally signed by ";
echo $chainparsed['subject']['CN'] . "\n";
}
}
?>
Se även
- openssl_verify() - Verifiera signatur
- openssl_get_publickey() - Alias för
openssl_pkey_get_public
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.openssl-x509-verify.php PHP Funktioner Funktionsreferens OpenSSL-funktioner
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webserver.