【问题标题】:Certificate on the client's side?客户端的证书?
【发布时间】:2016-01-27 04:37:47
【问题描述】:

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

服务器使用 https,并且有一个 .jks 文件。除此之外,我使用登录名和密码进行身份验证。

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

我在理解这个话题时遇到了一些麻烦,所以请理解。

【问题讨论】:

    标签: java ssl https certificate keystore


    【解决方案1】:

    密钥库

    Java KeyStore (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 证书。

    我认为客户端的证书应该与服务器的证书匹配, 不过好像我错了。

    是的,你是对的,2 个不同方的 SSL 证书会有所不同。

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


    如何导出和导入 SSL 证书

    导出证书:

    如果可以使用 Web 访问,则单击 HTTPS 图标,查看证书并按照导出命令进行操作。

    如果无法通过网络访问,则使用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

    关于导出和导入的进一步阅读:

    【讨论】:

    • “您应该导出服务器的 SSL 证书并导入服务器的密钥库” - 我不明白,为什么以及如何这样做?我糊涂了。我的服务器没有 SSL 证书,只有密钥库。
    • 查看我的编辑以了解如何导出和导入。您不需要有 SSL 证书,您应该只在您信任的密钥库中导入服务器的 SSL 证书。我已经在我的回答中告诉过“如果它是 2 路 SSL,则客户端只需要拥有 SSL 证书”。
    • 你的意思是像tomcat这样的“服务器”?好的。顺便说一句,如果 1 路 SSL 是安全的,为什么要使用 2 路 SSL?
    • "如果 1 路 SSL 是安全的,为什么要使用 2 路 SSL" - 通常客户端需要对服务器进行身份验证,但有时服务器也会请求客户端的身份,在这些情况下需要 2 路 SSL。如果所有这些都回答了您的问题,那么您是否介意接受答案。如果您有任何其他疑问,请随时告诉我。
    • 好的,现在我的话题更清楚了。感谢您的宝贵时间。
    猜你喜欢
    • 2015-09-06
    • 2017-01-02
    • 2017-06-08
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多