SSL证书请求过程中何时生成私钥?

时间:2018-07-16 16:36:50

标签: powershell ssl automation webserver ssl-certificate

我对SSL和证书注册世界完全陌生,所以请原谅我的无知。我最近的任务是通过PowerShell自动执行证书更新和颁发过程,而我正在设法将精力全盘绕在该过程上。

我知道私钥存储在服务器端,用于加密/解密过程,但是我不确定何时生成私钥。生成CSR时会发生这种情况吗,还是仅当从CA接收并安装了证书时才创建私钥?

我已经进行了一些测试,其中创建了自签名证书,并且能够通过OpenSSL找到私钥,但是我不确定它的来源。任何见识将不胜感激!

2 个答案:

答案 0 :(得分:2)

  

生成CSR时会发生这种情况吗

生成CSR的时间是 还是 。 CSR的关键部分是公钥-公钥实际上是构成私钥的信息的子集(这就是为什么我们有时称它为“ 密钥对)。

因此,为了生成CSR,首先需要一个密钥对。

值得注意的是,由于CSR和生成的证书仅包含密钥的 public 部分,因此可以在无法保证隐私的渠道上进行安全交换。

   Server                         CA
     |                             |
1. Create key-pair                 |
     |                             |    
2. Create CSR w/pub-key            |
     |                             |
3. Send CSR to CA ---------------->|
     |                             |
     |                  4. Vet ownership claims in CSR
     |                             |
     |                  5. Issue signed Certificate
     |                     signature must span the pub-key
     |                             |
     |<---------------- 6. Send Certificate back
     |                             |
7. Install signed cert             |
     |                             |
8. Decrypt traffic using priv key  |
     |                             |
     |                             |

请注意,私钥绝不会离开您的服务器-它不是CA为您生成的内容,因此它必须在生成CSR之前存在

  

我已经进行了一些测试,其中创建了自签名证书,并且能够通过OpenSSL找到私钥,但是我不确定它来自何方。

值得一提的是,当您使用openssl req之类的工具或IIS管理器创建新的CSR或自签名证书时,除非您为IIS明确指定一个密钥,否则这些工具会为您静默生成密钥。 this related ServerFault answer

答案 1 :(得分:0)

抽象流程是这样的:

  • 已生成一个公共/私有密钥对。
  • 公钥和其他数据进入认证请求/证书签名请求。
  • CA会查看提交了CSR的CSR以及他们喜欢的任何其他内容,然后拒绝它或颁发证书。
  • 私钥持有者现在可以将私钥与证书相关联。

在某些“不良”产品中,CA会生成私钥并向客户发送PFX,但这不是安全流程(因为现在“太多实体”知道/已经知道了私钥)。 / p>

如果您正在执行自签名证书,则通常将中间的两个步骤合并为一个。