天天看点

2021-02-24PHP 在做RSA签名的时候出现openssl sign(): supplied key param cannot be coerced into a private key这个问题

PHP 在做RSA签名的时候出现openssl sign(): supplied key param cannot be coerced into a private key这个问题

PHP RSA 报错

openssl_sign(): supplied key param cannot be coerced into a private key

原因:

本地测试正常,服务器报错

使用测试数据和测试秘钥,本地和服务器都正常

吧这段代码

private function setupPrivKey()
    {
        if (is_resource($this->_privKey)) {
            return true;
        }
        $pem = chunk_split($this->privateKey, 64, "\n");
        $pem = "-----BEGIN PRIVATE KEY-----\n" . $pem . "-----END PRIVATE KEY-----\n";
        $this->_privKey = openssl_pkey_get_private($pem);
        return true;
    }           

更换成:

private function setupPrivKey()
    {
        if (is_resource($this->_privKey)) {
            return true;
        }
        $pem = chunk_split($this->privateKey, 64, "\n");
        
                
        $pem = "-----BEGIN RSA PRIVATE KEY-----\n" . $pem . "-----END RSA PRIVATE KEY-----\n";
        $this->_privKey = openssl_pkey_get_private($pem);
        return true;
    }           

基本上就能解决问题