2

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

soapui 肥皂数字签名

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

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

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

4

1 回答 1

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

于 2014-02-07T09:02:21.930 回答