openssl 读取私/公钥签名和验签的问题
首先,我有cert.pfx文件(证书),用命令:
openssl pkcs12 -in cert.pfx -password pass:00000000 -clcerts -nokeys -nodes -out cert.pem //得到证书文件
openssl pkcs12 -in cert.pfx -password pass:00000000 -clcerts -nocerts -nodes -out pri.key //得到私钥文件
然后我代码中有:
fp1=fopen( "pri.key ", "rw+ ");
pri_pkey(PEM_read_PrivateKey(fp1,NULL,NULL,NULL);//得到私钥
ret-RSA_sign(NID_md5 sslData,sizeof(sslData),signature,signatureLen,pri_pkey-> pkey.rsa);//用私签名。
.
.
ret 最后等于1。(也就是说签名成功!)
/********************验签*******************/
//变量的定义我都没有写出来。
fp2=fopen( "cert.pem ", "rw+ ");
x509=PEM_read_X509(fp2,NULL,NULL,NULL);
pub_pkey=X509_extract_key(x509);
//以上三个函数主要是为了得到公钥。
ret=RSA_verify(NID_md5,sslDAta,sizeof(sslData),signature,&signatureLen,pub_pkey-> pkey.rsa);//公钥验签。
为什么这个时候 :ret==0;(也就是说验签没有成功!)
这个问题做了好久了,一直都没有找到答案!请高人指点!跪谢!
------解决方案--------------------
1, 生成私钥+公钥
2,生成签名请求
3,签发签名请求得到数字证书
4,将私钥单独存储,将数字证书存储
------解决方案--------------------