我们在使用Windows下生成的.pfx证书对Java中的文本字符串进行签名时遇到问题。首先,我们在执行上的Ubuntu Linux操作系统12.0.4 LTS下面示出的顺序执行以下步骤:使用在Windows下生成的(.PFX)证书对Java文本签名
openssl pkcs12 -in SupportTest-.pfx -out tempcertfile.crt -nodes
使用下列命令转换的.pfx证书到Java密钥库(JKS)
Splited证书成两个单独的文件:
甲包含私有密钥文件(key.pem)
含有其余的另一个文件(cert.pm)
导出在点2中的密钥证书),以类型PKCS12
openssl pkcs12 -export -in cert.pm -inkey key.pem -out aKeystore.p12 -name akeystore
转换PKCS12密钥库的密钥库到java密钥库jks
keytool -importkeystore -srckeystore aKeystore.p12 -srcstoretype PKCS12 -deskeystore akeystore.jks -destoretype jks
从JKS检索到的私有密钥签名的短信ketstore
我们使用Java 7的签署文本。我们没有遇到任何编码问题,并且java.security.Signature
中的initVerify()
方法返回true
。问题是,当使用.Net平台在Windows上签署代码时,签名与Java生成的签名不同。这两个应用程序都使用SHA256和RSA。
查找下面我们用来签署文本代码示例:
Signature signature = Signature.getInstance("SHA256WithRSA");
signature.initSign(privateKey);
signature.update(dataToSign);
return new String(Base64.encodeBase64(signature.sign()));
请添加java代码示例,在其中签名文本。 – user1516873 2014-09-26 08:19:27