2016-11-09 105 views
-1

我的Java客户端需要访问通过TLS连接提供服务的资源。资源提供者使用自签密钥,即MM_Base64.cer。我将他们的密钥导入到Java密钥库和Java信任库中。Java中的SSL握手

密钥库,我发出

keytool -import -keystore D:\mptkeystore.jks -file D:\MM_Base64.cer -alias mpt

,其结果是

Enter keystore password: 
Re-enter new password: 
Owner: CN=client, OU=huawei, O=huawei, L=shenzhen, C=CN 
Issuer: CN=client, OU=huawei, O=huawei, L=shenzhen, C=CN 
Serial number: 55702f20 
Valid from: Thu Jun 04 17:27:36 MMT 2015 until: Sat May 11 17:27:36 MMT 2115 
Certificate fingerprints: 
     MD5: F5:8E:12:58:AC:97:53:CB:8B:B6:E2:DB:C3:F2:48:3D 
     SHA1: F2:09:23:4C:9A:30:A6:4C:2D:F8:B0:F4:1D:06:41:5C:3A:3E:16:5A 
     SHA256: 2B:51:BA:48:52:59:82:22:3C:E3:79:93:9E:C5:57:24:A5:9A:6E:08:A2: 
7A:C6:FD:02:60:EB:3C:F2:14:53:AB 
     Signature algorithm name: SHA1withRSA 
     Version: 3 
Trust this certificate? [no]: yes 
Certificate was added to keystore 

对于trusrstore,

keytool -import -file D:\MM_Base64.cer -alias mit -keystore D:\truststore.jks

结果:

Enter keystore password: 
Re-enter new password: 
Owner: CN=client, OU=huawei, O=huawei, L=shenzhen, C=CN 
Issuer: CN=client, OU=huawei, O=huawei, L=shenzhen, C=CN 
Serial number: 55702f20 
Valid from: Thu Jun 04 17:27:36 MMT 2015 until: Sat May 11 17:27:36 MMT 2115 
Certificate fingerprints: 
     MD5: F5:8E:12:58:AC:97:53:CB:8B:B6:E2:DB:C3:F2:48:3D 
     SHA1: F2:09:23:4C:9A:30:A6:4C:2D:F8:B0:F4:1D:06:41:5C:3A:3E:16:5A 
     SHA256: 2B:51:BA:48:52:59:82:22:3C:E3:79:93:9E:C5:57:24:A5:9A:6E:08:A2: 
7A:C6:FD:02:60:EB:3C:F2:14:53:AB 
     Signature algorithm name: SHA1withRSA 
     Version: 3 
Trust this certificate? [no]: yes 
Certificate was added to keystore 

看起来多余,但以防万一,冗余是必要的。

这是该计划得到执行方式:

java -jar CPS.jar -Djavax.net.ssl.trustStore=D:\truststore.jks -Djavax.net.ssl.trustStorePassword=password -Djavax.net.ssl.keyStore=D:\mptkeystore.jks -Djavax.net.ssl.keyStorePassword=password -Ddeployment.security.SSLv2Hello=false -Ddeployment.security.SSLv3=false -Ddeployment.security.TLSv1=false -Ddeployment.security.TLSv1.1=true -Ddeployment.security.TLSv1.2=true 

TLS V1不能与服务一起使用,所以我禁用它。

看起来握手错误仍然存​​在。有没有人看到我做事情的方式有问题?

+0

你是说的*服务器*你与使用CN客户端的证书交谈?这看起来更像是一个客户端证书,而不是服务器证书,因为服务器证书将需要一个与您用来访问该站点的域名相同的CN(例如www.example.org),至少对于HTTPS来说。 – Andreas

+0

我正在开发一个JavaSE客户端。服务器正在使用'MM_Base64.cer'。他们与我们分享了证书文件,我们正在将证书导入我们的客户。 –

+0

这里有术语问题。服务器正在使用自签名*证书。*请修正您的问题,这样才有意义。 – EJP

回答