我們在使用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