soapUI可以访问Windows存储的证书以进行数字签名请求吗?

时间:2013-03-13 00:50:53

标签: soap soapui digital-signature

我和这张海报有同样的需要,但没有像他们那样的PEM文件:

soapui soap digital signature

我确实有我想在我的Windows机器上签名的本地机器证书,我可以看到证书卡入MMC控制台。根据证书详细信息,它可以用于数字签名,因为它包含私钥。

MMC控制台只允许我在没有私钥的情况下导出此证书(可以理解)。

有人知道SoapUI(或任何基于Java的客户端)是否可以使用此证书进行数字签名请求?感谢。

1 个答案:

答案 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或更高版本。