我和这张海报有同样的需要,但没有像他们那样的PEM文件:
我确实有我想在我的Windows机器上签名的本地机器证书,我可以看到证书卡入MMC控制台。根据证书详细信息,它可以用于数字签名,因为它包含私钥。
MMC控制台只允许我在没有私钥的情况下导出此证书(可以理解)。
有人知道SoapUI(或任何基于Java的客户端)是否可以使用此证书进行数字签名请求?感谢。
答案 0 :(得分:1)
我认为使用soapui时,没有特定的连接器可以在Windows密钥库上使用私钥。
如果您想使用Java客户端在Windows密钥库上使用私钥进行签名,则可以使用SUNMSCAPI提供程序(http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html http://docs.oracle.com/javase/7/docs/technotes/guides/security/SunProviders.html#SunMSCAPI),我给你一个代码示例:
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.Signature;
import sun.security.mscapi.SunMSCAPI;
public class WindowsKeystoreSample {
public static final String USER_STORE = "Windows-MY";
public static final String MACHINE_STORE = "Windows-ROOT";
public static void main(String args[]) throws Exception{
// instantiate the keystore
KeyStore keyStore = KeyStore.getInstance(USER_STORE, new SunMSCAPI());
keyStore.load(null, null);
String keyAlias = "key alias";
// password if you protect the windows keystore... if not null
char[] password = "somepass".toCharArray();
Signature sign = Signature.getInstance("SHA1WithRSA");
sign.initSign((PrivateKey) keyStore.getKey(keyAlias, password));
sign.update("dateToBeSigned".getBytes());
byte[] signedData = sign.sign();
}
}
请记住,要使用sunmscapi,您需要使用java版本1.6或更高版本。