我正在尝试连接到安全的Web服务。
即使我的密钥库和信任库已正确设置,我也遇到了握手故障。
经过几天的挫败,无休止的谷歌搜索并询问周围的所有人,我发现唯一的问题是java选择在握手期间不将客户端证书发送到服务器。
特别:
我的问题:
你可能已将中间CA证书导入了密钥库,而没有将其与拥有客户端证书及其私钥的条目相关联。你应该可以使用查看此内容keytool -v -list -keystore store.jks
。如果每个别名条目仅获得一个证书,那么它们就不会在一起。
你需要将证书及其证书链一起导入具有私钥的密钥库别名中。
要找出哪个密钥库别名具有私钥,请使用keytool -list -keystore store.jks
(我在这里假设JKS存储类型)。这将告诉你以下信息:
Your keystore contains 1 entry
myalias, Feb 15, 2012, PrivateKeyEntry,
Certificate fingerprint (MD5): xxxxxxxx
在这里,别名为myalias
。如果还使用-v
,则应该看到Alias Name: myalias
。
如果尚未单独购买,请从密钥库导出客户端证书:
keytool -exportcert -rfc -file clientcert.pem -keystore store.jks -alias myalias
这应该给你一个PEM文件。
使用文本编辑器(或cat
),准备bundle.pem
包含该客户端证书和中间CA证书(如果需要,还可以包括根CA证书本身)的文件(叫它),以使客户端证书位于开始位置并为其发行者证书就在下面。
看起来应该像这样:
-----BEGIN CERTIFICATE-----
MIICajCCAdOgAwIBAgIBAjANBgkqhkiG9w0BAQUFADA7MQswCQYDVQQGEwJVSzEa
....
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICkjCCAfugAwIBAgIJAKm5bDEMxZd7MA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNV
....
-----END CERTIFICATE-----
现在,将此捆绑包重新导入到你的私钥为的别名中:
keytool -importcert -keystore store.jks -alias myalias -file bundle.pem
我是Netty的新手,我尝试编写一个使用相互身份验证的echo服务器和客户端。不幸的是,它无法工作,客户端没有发送其客户端证书,服务器按预期断开连接。下面是我到目前为止所做的工作和客户端代码的概述--它可能包含一些bug或者我错过了一些重要的东西。谢谢你经历了这一切! 这就是我所拥有的: Netty版本4.1.0.cr1 可在服务器上下载的有效密钥存储库、信任存储库和CRL 直接使用JSSE的ec
在我的应用程序中,我需要实现双向握手。以下是我使用的代码: 我有一个PEM文件,我必须从中生成密钥库。 服务器证书是本地存储的. pk12证书。 问题在于握手过程中未附加客户端证书。我使用wireshark分析数据包,它显示客户端证书长度为0。 如果我使用. pk12文件作为客户端证书,它被正确地附加。但是我必须使用PEM文件。任何解决方案!!
问题内容: 我正在连接到以前成功使用过的Web服务,但是现在他们已经更改了主机名并向我发送了两个.pem文件。一个是CA,另一个是我的新客户证书。 (我将Java 1.5,Spring + Spring Web Services与Apache httpclient一起使用,但是我怀疑我的问题是证书,密钥和SSL本身。) 我已经导入了.pem文件以及从Firefox导出到cacerts中的主机的.c
我所拥有的是一个在Dropwizard之上实现的服务器,它需要接受传入的HTTPS连接,并使用附加的证书来唯一标识客户端。我目前在开发过程中使用所有自签名证书。服务器证书对是使用链根对->中间对->服务器对创建的。服务器的P12是使用中间证书和服务器证书加上服务器私钥的串联来创建的。然后它被添加到一个空的JKS中,并成为服务器的密钥库。 我分别创建了两个客户端证书,一个使用相同的中间对作为基础,另
我已经能够通过HTTP使用Eureka+ZUUL+Ribbon+Config Server设置并成功验证Spring cloud设置。 然而,当我尝试转移到HTTPS时,单个服务在HTTPS上运行良好,但Eureka客户端发现却失败了。
我有一个客户端-服务器应用程序(Android客户端、Apache Http服务器),通过相互身份验证(TLS 1.2)进行通信。问题是:有时连接(登录)会因SSL错误而失败。 这是有效的: 注册客户端证书 登录 这是行不通的: 注册客户证书 注意:在步骤4之后杀死应用程序,然后启动它并执行步骤5工作。 我能想到的可能解释是: 正在重用一些旧资源(如旧客户端证书)。看起来所有相关的东西(OkHtt