我正在尝试使用自定义 OpenSSL 引擎进行客户端证书身份验证所需的加密操作。
目前 Net::HTTP 只允许我们传递将用于客户端身份验证的证书和密钥。我们将所有私钥移至 HSM(“硬件安全模块”),因此我们想要插入自定义 OpenSSL 引擎,而不是默认的 OpenSSL 引擎。自定义 OpenSSL 引擎将使用 HSM 执行私钥签名操作。
当前使用默认引擎,我们的代码如下:
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == 'https'
http.cert = OpenSSL::X509::Certificate.new(File.read("/tmp/cert.pem"))
http.key = OpenSSL::PKey::RSA.new(File.read('/tmp/key_pointer.pem'))
http.ssl_version = :TLSv1_2
http.open_timeout = open_timeout
http.read_timeout = read_timeout
request = Net::HTTP::Post.new(uri)
request.body = "body goes here"
response = http.request(request)
我尝试搜索如何为 Net::HTTP 插入自定义 OpenSSL 引擎,但找不到任何东西。作为客户端证书身份验证的一部分,我们如何使用自定义引擎使用私钥进行签名?