繁体   English   中英

客户方的证书?

[英]Certificate on the client's side?

我有一个服务器应用程序和一个客户端应用程序。

服务器使用https,并具有.jks文件。 除此之外,我使用带有登录名和密码的身份验证。

我想知道客户端是否应该使用.cert证书。 我以为客户端的证书应该与服务器证书匹配,但是看来我错了。

我有些低估了这个话题,所以请谅解。

密钥库

Java密钥库(JKS)是安全证书(授权证书或公钥证书)的存储库,用于SSL加密。

  • 在IBM WebSphere Application Server和Oracle Weblogic Server中,扩展名为jks的文件用作密钥库。
  • Java开发工具包在文件夹jre / lib / security / cacerts中维护一个CA密钥库。

Keystore有两种风格:

1.信任
信任库包含由您信任的人颁发的证书,例如来自CA的根证书。

2.身份:

  • 身份存储包含您自己的证书,当您访问外部服务时,它们将用于对您进行身份验证。
  • 信任存储区不包含敏感信息,而身份存储区包含非常敏感的信息,例如私钥。
  • 包含服务器的演示专用密钥。 该密钥库为服务器建立身份。


我想知道客户端是否应该使用.cert证书。

如果要连接到HTTPS服务,则应导出服务器的SSL证书并导入服务器的密钥库,可能可以导入jre/lib/security/cacerts

如果客户端是2向SSL,则仅要求客户端具有SSL证书,这意味着也需要客户端将SSL证书发送到服务器,因为服务器已请求该证书。

为什么需要它,因为使用SSL握手服务器将发送其SSL证书,并且客户端将从其密钥库中存在的受信任证书列表中验证此证书。 如果未通过验证,则SSL握手无法完成,因此无法建立通信。 因此,您必须在受信任的证书存储区中拥有服务器的SSL证书。

我以为客户端的证书应该与服务器证书匹配,但是看来我错了。

是的,没错,两个不同方的SSL证书将有所不同。

每个需要SSL证书的当事方都将在其末端生成公钥-私钥对,并向证书颁发机构(CA)提出CSR请求,后者将使用提供的密钥来生成SSL证书。


如何导出和导入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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM