日期:2014-05-16  浏览次数:20898 次

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,将私钥单独存储,将数字证书存储
------解决方案--------------------
探讨

引用:

1, 生成私钥+公钥
2,生成签名请求
3,签发签名请求得到数字证书
4,将私钥单独存储,将数字证书存储


这位大哥,你讲得我不是很懂耶,对不对讲仔细点!?最好有个例子。