今天在做支付宝开发,将密钥
赋给变量,然在在签名的时候就直接报错,PEM routines:PEM_read_bio:no start line
。
Error: error:0906D06C:PEM routines:PEM_read_bio:no start lineat Sign.sign (internal/crypto/sig.js:85:26)at signWithPrivateKey (/Users/caowei/workspace/remote/hehe-api/handlers/pay.js:19:19)at aliOrderCreate (/Users/caowei/workspace/remote/hehe-api/handlers/pay.js:57:18)
报错的私钥我是这样写的:
module.exports = {// 商户应用私钥ali_pay_private_key: 'MIIEowIBAAKCAQEA11ybEJhndRefODF/buaW/VFs5jnX/XOsUm/Wee6jwrZCKGE1Towsu/ERLbOrZyAo4FKXIRV5TWnBPHuN7pjwEP2R3O+Hw5n+lT7oV1N55fk1+wZ/4MAM1nrPDhZ5dEFuViG5XfgFEbcdK5tUkmvL/S7RRnEA0hcijkyc9RvIrzc8KVvm1mqS8w0uY7ef6oMWGkLjpTRtenB92T1wyw/ohNx+4LtulGzczxTeNNcjqZtKYKXtqdnssfE+TxuVUM+VL5g6dFWzxieuqvO8aIoLrT9PEnKpfBANUt8nZucSVlfvKc0Dft9BrvIafDFCNHS206MDfZxw5ha4l8nmiFARIwIDAQABAoIBAH3GnN1lVM7C2/9SkS0wyK/rVSFkWOuyGcsPfAA8SjHWhe7VTu+v2BRvZuv9Cbaxxo20ToVI6E443F05f5wAf/w8S2rwDadEEbYSRllx7DhOgqM3mYmmQBknIjQFFiu6ZvkwuvTRfAxrmEK2df8Jq9oS9LAiISuRzWG0BtrzvhHtqxQzv9R+PnWtY4LMmO5Nab7iWu9MQsm+zcTnItNlZcx58FKweW6Y3I6+SAjqrZgfIxVuXwbF6obyJ+0IJgjt/U897GO0zzL0G4UuHf9je6cTpOXRrAWo61L1qttwHO/IXeykaqSGJVrLn77gTBFMCuxPj9gLPLPMCA/E+d+xOuECgYEA7LTUp1ESf0OJAN7W9NCp832Vyob00WPAzhRtXl3N1DEupmbXxcXUG12PUa+4efLPH68zhptg2INiZP/U9mZgk95QVazfv+Yh3ec+hc/pMr+dq4n7pvShwjauJFTo6Hyi98qENTEuutObjEOyDNgJ65KQZg1h/c50PxYZ3/ZjclfCgYEA6OpkpFWHJM1GMd2DF5ux+xMdRx+htV7xt9ZG5NdtzOiXnVUvOzP90SFm5bPLKvFWJ5KR7A/WeWRqWdVdfPOLCOhHCIgFAyV5jc/Ss49C404R7KsFLi6n09RN3f0m3526yYXcbKw3+1s9w7tGkjS4dWmTHLxDDy4hMdrMI7ol2zMCgYBUQYnwhMswwblite+N9TiJk4peLOu4HOnkcSD9FibOATO5x6HGpER7+TGqwgHIZsWTYanVoDk42IuNqAMGMirud5Pg60g55pDGzKlUuE0p40vcZGFPbISnvQ7/n7nIB5V63ntw87DOj8QuiWo3aC8fy2va56iZz4NRcWyEbA+6AQKBgQDLi7OCvcBZ+A6FG3kp04W5zl2Cv3D5aMzDBL6V1HJ/ZTDCbSRGj8wbzB35VaOSlq/dC2j8rGaZVZjfgugdf1Sc5yjUmtIOitxsgxc2llc1ABAIDPkM//bo1xtpiYdEbrpWzOXyDpspzfXvLKWitfIRob7PmPLdvEmEIRrPiij1IwKBgEw5gqmBn1pz7zpzuFgZtjFPyAFhijZT9iUfOhbWShVMjB68YqxrDgNDMf5Q7a6z+EqN8wjjEkCSa3CtkfoQ9gp51btyhboUxYp3LUUFmslLsHE7C9uDXN+Jz+SbKDEHsEJs1oxs/TA0xWtsbpP1kahSgo2E38T2m/j0yWZV3r3a'
}
直接复制的支付宝RSA验签工具里面的私钥。
其实正确的写法,尤其是在字符串变量中,我们需要加上前缀和后缀就可以解决问题。
-----BEGIN RSA PRIVATE KEY-----\r\n
复制过来的私钥
\r\n-----END RSA PRIVATE KEY-----
所以正确的格式如下
module.exports = {// 商户应用私钥ali_pay_private_key: '-----BEGIN RSA PRIVATE KEY-----\r\nMIIEowIBAAKCAQEA11ybEJhndRefODF/buaW/VFs5jnX/XOsUm/Wee6jwrZCKGE1Towsu/ERLbOrZyAo4FKXIRV5TWnBPHuN7pjwEP2R3O+Hw5n+lT7oV1N55fk1+wZ/4MAM1nrPDhZ5dEFuViG5XfgFEbcdK5tUkmvL/S7RRnEA0hcijkyc9RvIrzc8KVvm1mqS8w0uY7ef6oMWGkLjpTRtenB92T1wyw/ohNx+4LtulGzczxTeNNcjqZtKYKXtqdnssfE+TxuVUM+VL5g6dFWzxieuqvO8aIoLrT9PEnKpfBANUt8nZucSVlfvKc0Dft9BrvIafDFCNHS206MDfZxw5ha4l8nmiFARIwIDAQABAoIBAH3GnN1lVM7C2/9SkS0wyK/rVSFkWOuyGcsPfAA8SjHWhe7VTu+v2BRvZuv9Cbaxxo20ToVI6E443F05f5wAf/w8S2rwDadEEbYSRllx7DhOgqM3mYmmQBknIjQFFiu6ZvkwuvTRfAxrmEK2df8Jq9oS9LAiISuRzWG0BtrzvhHtqxQzv9R+PnWtY4LMmO5Nab7iWu9MQsm+zcTnItNlZcx58FKweW6Y3I6+SAjqrZgfIxVuXwbF6obyJ+0IJgjt/U897GO0zzL0G4UuHf9je6cTpOXRrAWo61L1qttwHO/IXeykaqSGJVrLn77gTBFMCuxPj9gLPLPMCA/E+d+xOuECgYEA7LTUp1ESf0OJAN7W9NCp832Vyob00WPAzhRtXl3N1DEupmbXxcXUG12PUa+4efLPH68zhptg2INiZP/U9mZgk95QVazfv+Yh3ec+hc/pMr+dq4n7pvShwjauJFTo6Hyi98qENTEuutObjEOyDNgJ65KQZg1h/c50PxYZ3/ZjclfCgYEA6OpkpFWHJM1GMd2DF5ux+xMdRx+htV7xt9ZG5NdtzOiXnVUvOzP90SFm5bPLKvFWJ5KR7A/WeWRqWdVdfPOLCOhHCIgFAyV5jc/Ss49C404R7KsFLi6n09RN3f0m3526yYXcbKw3+1s9w7tGkjS4dWmTHLxDDy4hMdrMI7ol2zMCgYBUQYnwhMswwblite+N9TiJk4peLOu4HOnkcSD9FibOATO5x6HGpER7+TGqwgHIZsWTYanVoDk42IuNqAMGMirud5Pg60g55pDGzKlUuE0p40vcZGFPbISnvQ7/n7nIB5V63ntw87DOj8QuiWo3aC8fy2va56iZz4NRcWyEbA+6AQKBgQDLi7OCvcBZ+A6FG3kp04W5zl2Cv3D5aMzDBL6V1HJ/ZTDCbSRGj8wbzB35VaOSlq/dC2j8rGaZVZjfgugdf1Sc5yjUmtIOitxsgxc2llc1ABAIDPkM//bo1xtpiYdEbrpWzOXyDpspzfXvLKWitfIRob7PmPLdvEmEIRrPiij1IwKBgEw5gqmBn1pz7zpzuFgZtjFPyAFhijZT9iUfOhbWShVMjB68YqxrDgNDMf5Q7a6z+EqN8wjjEkCSa3CtkfoQ9gp51btyhboUxYp3LUUFmslLsHE7C9uDXN+Jz+SbKDEHsEJs1oxs/TA0xWtsbpP1kahSgo2E38T2m/j0yWZV3r3a\r\n-----END RSA PRIVATE KEY-----'
}