![](/img/trans.png)
[英]Uploading a file over SSL with Client Side Certificate and Android's HttpsURLConnection
[英]Certificate on the client's side?
我有一个服务器应用程序和一个客户端应用程序。
服务器使用https,并具有.jks文件。 除此之外,我使用带有登录名和密码的身份验证。
我想知道客户端是否应该使用.cert证书。 我以为客户端的证书应该与服务器证书匹配,但是看来我错了。
我有些低估了这个话题,所以请谅解。
Java密钥库(JKS)是安全证书(授权证书或公钥证书)的存储库,用于SSL加密。
Keystore有两种风格:
1.信任 :
信任库包含由您信任的人颁发的证书,例如来自CA的根证书。
2.身份:
我想知道客户端是否应该使用.cert证书。
如果要连接到HTTPS服务,则应导出服务器的SSL证书并导入服务器的密钥库,可能可以导入jre/lib/security/cacerts
。
如果客户端是2向SSL,则仅要求客户端具有SSL证书,这意味着也需要客户端将SSL证书发送到服务器,因为服务器已请求该证书。
为什么需要它,因为使用SSL握手服务器将发送其SSL证书,并且客户端将从其密钥库中存在的受信任证书列表中验证此证书。 如果未通过验证,则SSL握手无法完成,因此无法建立通信。 因此,您必须在受信任的证书存储区中拥有服务器的SSL证书。
我以为客户端的证书应该与服务器证书匹配,但是看来我错了。
是的,没错,两个不同方的SSL证书将有所不同。
每个需要SSL证书的当事方都将在其末端生成公钥-私钥对,并向证书颁发机构(CA)提出CSR请求,后者将使用提供的密钥来生成SSL证书。
导出证书:
如果可以使用Web进行访问,则单击HTTPS图标,查看证书并遵循导出命令。
如果无法使用Web访问,则使用openssl
导出证书。 使用以下命令
openssl s_client -connect host:port -key our_private_key.pem -showcerts -cert our_server-signed_cert.pem
导入证书:
使用命令keytool -import -trustcacerts -file /path/to/ca/ca.pem -alias CA_ALIAS -keystore $JAVA_HOME/jre/lib/security/cacerts
有关进出口的进一步阅读:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.