【问题标题】:Use of Public key in the certificate signing request ( CSR )在证书签名请求 (CSR) 中使用公钥
【发布时间】:2016-02-23 00:25:01
【问题描述】:

在我们的服务器上创建 CSR 期间将生成公钥和私钥对。我们将通过持有私钥将 CSR 和公钥发送给 CA。 CA 将在使用 CA 根证书的私钥签名之前验证我们的公钥。我们有自己的 CA 团队来验证 CSR 请求。我的查询如下:

  1. CSR 本身是否包含公钥,还是我们需要单独向 CA 提供公钥?
  2. 在将 CSR 发送到 CA 之前,是否会由我们的公钥对其进行签名(或)CSR 是否持有除此之外的公钥?
  3. CA 是否会仅通过 CSR(或)在 CSR + 公钥组合上进行签名?
  4. 我们是否应该在客户端和服务器端的信任库中安装 CA 的根证书和中间证书?因为我们使用的是自己的 CA 而不是全局 CA。
  5. 当我们向客户端提供服务器证书时,该证书是否包含服务器的公钥?
  6. 我们是否应该将服务器的公钥安装在客户端的信任库中以进行加密?

提前感谢您的帮助。

【问题讨论】:

  • Steffan 超越了一切。如果可以的话,我会代表你接受他的回答。我要改变的一件事是他的答案是基于大多数 Web 服务器如何验证证书而不是 MQ。根据您使用的 MQ 版本以及验证策略设置的较新版本,您实际上可能需要将中间签名者加载到您的密钥库中。有一次,如果没有完整的签名者链,就不可能收到您签名的 CSR。

标签: ssl ibm-mq mq


【解决方案1】:

CSR 本身是否包含公钥,还是我们需要单独向 CA 提供公钥?

公钥在 CSR 中

在将 CSR 发送给 CA 之前,是否会由我们的公钥签名(或)CSR 是否持有除此之外的公钥?

CSR 由您的密钥签名。公钥是不够的,但签名需要私钥。

CA 是否会仅通过 CSR(或)在 CSR + 公钥的组合上进行签名?

CA 将从 CSR 中提取包括公钥在内的信息并对其进行签名。它不会签署 CSR 本身。

我们是否应该在客户端和服务器端的信任库中安装 CA 的根证书和中间证书?因为我们使用的是我们自己的 CA 而不是全局 CA。

只有根需要作为信任锚存储在客户端。中间证书应由服务器与 SSL 握手中的服务器证书一起发送。

当我们向客户端提供服务器证书时,该证书是否包含服务器的公钥?

是的,证书是公钥和附加信息,如主题(主机名)。

我们是否应该将服务器的公钥安装在客户端的信任库中以进行加密?

没有。客户端将在 SSL 握手期间获得证书。如果您使用certificate pinning,您只想在握手之前了解服务器证书或公钥。

【讨论】:

  • 感谢 Steffen,在阅读您的回复后提出了以下问题。我们使用公钥签署 CSR,CA 使用 root 的私钥签署。你是说在握手期间交换公钥
  • @AnilReddy:始终使用私钥进行签名。公钥是证书的一部分,在 SSL 握手中发送给客户端。
  • 如果我们在 SSL 握手中交换公钥,我们如何在将数据发送到远程之前对其进行加密。如果我们使用非对称加密,我们可以用我们的公钥加密它,但远程无法解密它,因为我们将持有私钥。在对称加密的情况下,我们正在交换密钥,因此第三方可以轻松解密。
  • @AnilReddy:您的问题超出了本论坛的范围,更适合 security.stackexchange.com。事实上,我建议你在这个论坛中研究How does SSL/TLS work? 的答案。
猜你喜欢
  • 2015-11-28
  • 2014-08-23
  • 1970-01-01
  • 2010-09-15
  • 2017-06-05
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多