支付宝 报错 rsa_private read error : private key is NULL解决方法

原因: 

真机调试IOS支付宝功能GDB出现 rsa_private read error : private key is NULL提示

调试iOS 支付宝SDK的时候,运行demo,把
Partner(合作商户 ID)
Seller(账户 ID)
RSA public key(支付宝公钥)
RSA private key(商户私钥)

都放到plist文件了,运行的时候,报错 rsa_private read error : private key isNULL

我确定的是RSA private key肯定是有的,调试了下

    bio_private= BIO_new(BIO_s_file());
    BIO_read_filename(bio_private,private_key_file_path);
    rsa_private= PEM_read_bio_RSAPrivateKey(bio_private, NULL, NULL,"");    
    if(rsa_private != nil) {
这里,rsa_private 返回空, private_key_file_path 这些值都是有的

解决方法: 

将私钥转成PKCS8替换一下原私钥即可

1、生成私钥pem,  执行命令openssl genrsa -out rsa_private_key.pem 1024

2、生成公钥,执行命令openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

3、将RSA私钥转换成PKCS8格式,命令执行openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt PHP服务端语言读取私钥不需要PKCS8转换。

开始两行命令会生成两个key的文件,但是是rsa加密的

需要调用第三个命令生成pkcs8格式的私钥。但是这个并不会自动保存,需要手动保存。

官方文档有说:

4. 生成PKCS8 编码的私钥

输入命令“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt”并回车,当前界面中会直接显示出生成结果:

右键点击 openssl 窗口上边边缘,选择“编辑→标记”,选中要复制的文字: (就是中间那一块,包括---BEGIN PRIVATE KEY---和---END PRIVATE KEY---)

此时继续右键点击 openssl 窗口上边边缘,选择“编辑→复制”,把复制的内容粘 贴进一个新的记事本中,可随意命名,只要知道这个是 PKCS8 格式的私钥即可(请 妥善保存该文件)。

时间: 2024-11-05 17:20:46

支付宝 报错 rsa_private read error : private key is NULL解决方法的相关文章

报错:Could not launch 'app name',解决方法

如果你也出現了“Could not launch 'app name'”,No such file or directory (/Users/apple/Library/Developer/Xcode/DerivedData/mytest-ejkagqxooxgmtdfsdoygtyzflibe/Build/Products/Debug-iphoneos/mytest.app/mytest) 这样的讯息的話,有几个处理方法1.刪除DerivedData資料夾法1.1 完全离开Xcode,然后再做

python中引入包的时候报错AttributeError: module 'sys' has no attribute 'setdefaultencoding'解决方法?

python中引入包的时候报错:import unittestimport smtplibimport timeimport osimport sysimp.reload(sys)sys.setdefaultencoding('utf-8') AttributeError: module 'sys' has no attribute 'setdefaultencoding'解决方法: 1.python2中解决方法:reload(sys)sys.setdefaultencoding('utf-8'

python 编码报错问题 'ascii' codec can't encode characters 解决方法

python在安装时,默认的编码是ascii, 当程序中出现非ascii编码时,python的处理常常会报这样的错 'ascii' codec can't encode characters python没办法处理非ascii编码的, 此时需要自己设置将python的默认编码,一般设置为utf8的编码格式. 查看python的默认编码 print sys.getdefaultencoding() 解决方法一(已通过验证,顺带也解决了我之前字符前一直加u的问题) 在python安装目录下,进入\P

Centos6 下启动httpd报错 Could not reliably determine the server's解决方法

在启动httpd的时候报错: 修改/etc/httpd/conf/httpd.conf 配置,去掉ServerName 前的#(或者手动添加ServerName localhost:80)然后重启httpd服务: Centos6 下启动httpd报错 Could not reliably determine the server's解决方法

很爽的一点。用Mysql5.x以上版本出现报错#1929 Incorrect datetime value: '' for column 'createtime' 解决方法

我的mysql安装后,保存删除表数据总是出现#1929 Incorrect datetime value: '' for column 'createtime' 的报错提醒,导致不能删除表里数据: 原因: 5以上的版本如果时期时间是空值应该要写NULL: 官方解释说:得知新版本mysql对空值插入有"bug", 要在安装mysql的时候去除默认勾选的enable strict SQL mode 那么如果我们安装好了mysql怎么办了,解决办法是更改mysql中的配置 my.ini 解决

转:loadruner报错:Step download timeout(120 seconds)的一个解决方法

一个网友问了我一个问题如下:loadruner报错:Error -27728: Step download timeout (120 seconds) 如何解决语法检查通过,但是在并发执行一个查询时候报错Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s),请问有啥子解决方法,我使用web_set_timeout ,好象不起作用,直接

loadruner报错:Step download timeout(120 seconds)的一个解决方法

一个网友问了我一个问题如下: loadruner报错:Error -27728: Step download timeout (120 seconds) 如何解决 语 法检查通过,但是在并发执行一个查询时候报错Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s),请问有啥子解决方法,我使用web_set_timeout ,好象不起作用

centos6上,git拉代码时候,报错提示不支持低版本ssl的解决方法

[[email protected]_mwdb-20-25 /root ]# git clone https://github.com/pyenv/pyenv.git  报错信息如下2行: error:  while accessing https://github.com/pyenv/pyenv.git/info/refs fatal: HTTP request failed 解决方法: 需要升级下包, yum update nss curl libcurl 即可,然后再近些git clone

Intellij IDEA运行报错Command line is too long的处理解决方法

报错内容: Error running 'ServiceStarter': Command line is too long. Shorten command line for ServiceStarter or also for Application default configuration. 解决方法: 修改项目下 .idea\workspace.xml,找到标签 <component name="PropertiesComponent"> , 在标签里加一行  &