我使用C libcurl库。 我需要将OCSP装订与相互认证结合在一起。为此,我将在以下示例中进行建模。但是,我需要将客户证书的私钥存储在TPM芯片中。您知道如何使用tpm2-tss-engine吗?谢谢你的帮助。
https://curl.haxx.se/libcurl/c/smtp-ssl.html https://curl.haxx.se/libcurl/c/CURLOPT_SSLCERT.html
答案 0 :(得分:1)
我可以通过openssl s_client
使用存储在TPM中的密钥(也许可以使用curl),但是可以发出HTTPS请求并接收响应。
openssl
允许您从TPM中读取密钥。您可以使用命令s_client
通过TCP连接,然后发送HTTP请求。
示例命令如下:
文件:http_request.txt(末尾有两个换行符)
GET /url/path HTTP/1.0
Host: hostname.com
cat http_request.txt | \
openssl s_client \
-nocommands \
-ign_eof \
-msgfile /dev/null \
-quiet \
-keyform engine \
-engine pkcs11 \
-cert mycertificate.pem \
-CAfile root.ca.pem \
-key 'pkcs11:model=SWTPM;manufacturer=Intel;token=mytoken;object=myobject;type=private;pin-value=mypin' \
-connect hostname.com:443
这使我可以使用TPM向AWS IoT:iot:AssumeRoleWithCertificate
发出请求,假设密钥是磁盘上的文件:https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html