天天看點

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;
    }           

基本上就能解決問題