openssl_verify(): clé fournie param ne peut pas être contrainte à une clé publique pour un .fichier pem
Actuellement en train de lire un .pem
clé publique pour vérifier à travers openssl
.
/**
* Check whether the signed message sent back by the server is
* correct or not.
*/
function check($str, $MAC)
{
$fp = fopen(
dirname(__FILE__) . '/rsa_public_key.pem',
'r'
);
$cert = fread($fp, 8192);
fclose($fp);
$pubkeyid = openssl_get_publickey($cert);
return openssl_verify($str, $MAC, $pubkeyid);
}
Avec qui a déclaré, lors de l'exécution de mon script, je reçois cette erreur:
openssl_verify(): supplied key param cannot be coerced into a public key in some/path at line X
À l'origine, j'ai écrit cette fonction pour accepter .cer
certifications. Voici une explication de la différence entre tous ces différents formats. Ma compréhension .pem
sont similaires à .cer
, cependant, je ne pouvais pas pour la vie de me comprendre comment faire pour que mon script pour lire mon .pem
fichier.
Ma question est que dois - je faire pour que ma fonction pour lire cette clé publique?
EDIT: Après quelques recherches sur Google, j'ai essayé d'utiliser file_get_contents()
à un chemin particulier, mais je reçois le même message d'erreur.
Ce qui pourrait être la cause de cette erreur?
Vous devez vous connecter pour publier un commentaire.
À l'ouverture de cette
.pem
fichier, il a été le tout dans une seule ligne. Il apparaît chaque ligne nécessite la longueur de 64 caractères, donc j'ai fait en sorte que chaque ligne est de 64 lignes, et il a réussi à analyser. N'avait rien à voir avec.cer
.En outre, la
-----BEGIN PUBLIC KEY-----
et-----END PUBLIC KEY-----
lignes doivent contenir exactement cinq tirets de chaque côté. Pas plus, pas moins.Il peut ou peut ne pas être un saut de ligne à la fin de la dernière ligne.
Windows fins de ligne (CR/LF) sont autorisés, même sur *nix-hébergé PHP.