2011-11-11 96 views
2

我有使用X.509证书进行安全保护的远程Web服务。
我生成的Web服务客户端的东西(使用jax-ws),但需要配置,如果证书的使用。
我该如何继续?
我想我应该在我的本地信任密钥库登记证书,并将其设置是这样的:X.509安全网络服务的Java客户端

System.setProperty("javax.net.ssl.keyStore", keyStore); 
System.setProperty("javax.net.ssl.keyStoreType", "JKS"); 
System.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword); 
System.setProperty("javax.net.ssl.trustStore", trustStore); 
System.setProperty("javax.net.ssl.trustStoreType", "JKS"); 
System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword); 

但目前尚不清楚哪些数据应作为参数来提供。
请帮忙。
谢谢。

回答

3

密钥库属性定义识别您的服务器证书:

System.setProperty("javax.net.ssl.keyStore", keyStore);

这是你的X509证书Java密钥。你可以使用tha程序keytool来创建它。

System.setProperty("javax.net.ssl.trustStore", trustStore);

这是一个java密钥库与标识所述web网站的证书(或多个)。这仅供您的网络服务软件使用,以确保您确实在与正确的网站交谈。

System.setProperty("javax.net.ssl.keyStoreType", "JKS"); System.setProperty("javax.net.ssl.trustStoreType", "JKS");

这只是规定了javax.net.ssl.keyStore和javax.net.ssl.trustStore中的格式为Java密钥。

System.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword); System.setProperty("javax.net.ssl.trustStorePassword", trustStorePassword);

这是一个用于创建时的Java密钥进行加密的密码。

+1

只需添加@sstendal所说的内容,trustStore和keystore就是包含您的可信证书和私钥的物理文件。您的密钥库理想情况下应该包含您的私钥,并且证书应该存放在您的信任库中。您需要信任库中的根证书颁发机构(CA--认可服务器证书的实体;例如Verisign)证书,以便完成SSL握手。 – Drona

+0

谢谢@sstendal你的答案。你描述的东西现在很清楚。你是否也可以指示我如何组织整个过程,因为我拥有的只是这种格式的证书:'MIICGDCCAYWgAwIBAgIQMYx/1mo3y4RDkMC7Pf6tITAJBgUrDgMCHQUAMCIxIDAeBgNVBAMTF1JhZGlvT3B0IERldmVsb3B ......'我的意思是,我应该向密钥库添加什么?如果我只想调用远程WS,我应该将它添加到密钥库和信任库吗? – kardanov

+0

它看起来像你有一个base64编码证书。您可以按照此处的说明创建pem文件:http://www.herongyang.com/Cryptography/Certificate-Format-PEM-on-Certificates.html。您应该使用keytool将其导入密钥库,如下所述:http://www.herongyang.com/Cryptography/Certificate-Format-keytool-Import-in-DER-and-PEM.html。 – sstendal