Ruby:使用存储在TPM中的密钥

Ruby:使用存储在TPM中的密钥,ruby,ssl,tpm,Ruby,Ssl,Tpm,我正在寻找一种方法,在TPM中存储必要的证书时打开HTTPS连接 现在我正在使用HTTPClient打开连接,只要证书存储在磁盘上,一切都正常 http = HTTPClient.new request = "#{address}/#{command}" http.ssl_config.set_client_cert_file("#{CLIENT_CERT}", "#{CLIENT_KEY}") 如果客户

我正在寻找一种方法,在TPM中存储必要的证书时打开HTTPS连接

现在我正在使用HTTPClient打开连接,只要证书存储在磁盘上,一切都正常

  http = HTTPClient.new
  request = "#{address}/#{command}"
  http.ssl_config.set_client_cert_file("#{CLIENT_CERT}",
                                       "#{CLIENT_KEY}")

如果客户端私钥存储在TPM中,如何执行此操作?

您有两种可能:

  • 将钥匙存储在TPM的非易失性存储器中
  • “密封”包含密钥的文件
要在Ruby中实现这一点,您可以:

  • 自己实现必要的命令,让代码与操作系统的TPM驱动程序通信
  • 编写使用的C API的代码
  • 调用一些命令行工具,如IBM或IBM提供的工具

但是,我不确定从架构的角度来看,这是否就是您所寻找的。通过TPM加载钥匙仅在启动时可行。如果你想对每一个请求都这样做的话,它会扼杀你的性能。此外,您还需要注意密钥是否已从内存中安全删除,否则它将毫无意义。

TPM通常不存储证书。相反,TPM存储密钥,这些密钥用于加密文件系统上的数据。此外,证书是公共信息,因此通常不需要保护。更新了问题。我想使用一个证书,该证书的私钥部分存储在TPM中