我和这张海报有同样的需求,但没有像他们那样的 PEM 文件:
我确实有我想在我的 Windows 机器上签名的本地机器证书,我可以在 MMC 控制台中看到证书。根据证书的详细信息,它可以用于数字签名,因为它包含一个私钥。
MMC 控制台只允许我在没有私钥的情况下导出此证书(可以理解)。
有谁知道 SoapUI(或任何基于 Java 的客户端)是否可以使用此证书进行数字签名请求?谢谢。
我和这张海报有同样的需求,但没有像他们那样的 PEM 文件:
我确实有我想在我的 Windows 机器上签名的本地机器证书,我可以在 MMC 控制台中看到证书。根据证书的详细信息,它可以用于数字签名,因为它包含一个私钥。
MMC 控制台只允许我在没有私钥的情况下导出此证书(可以理解)。
有谁知道 SoapUI(或任何基于 Java 的客户端)是否可以使用此证书进行数字签名请求?谢谢。
我认为使用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 或更高版本。