[英]Correct way to conduct private key operation from PKCS11 for mTLS connection in Go
我已成功將私鑰導入 PKCS11 令牌。 令牌 object 如下所示:
Private Key Object; RSA
label: #####
ID: #####
Usage: decrypt, sign, unwrap
Access: sensitive
Public Key Object; RSA 2048 bits
label: #####
ID: #####
Usage: encrypt, verify, wrap
Access: none
我了解到通常無法提取 CKA_VALUE。 我想知道使用 pkcs#11 私鑰和證書創建 mTLS 連接的正確程序是什么。
我了解到通常無法提取
CKA_VALUE
為了以防萬一,請查看ThalesIgnite/crypto11 exportDSAPublicKey()
,它使用公鑰導出pkcs11.Attribute
,包括pcs11.CKA_VALUE
。
( CKA_VALUE
是ECDSA
私鑰對象之一)
對於 mTLS,檢查miekg/pkcs11
是否有幫助(未測試)。
它至少可以幫助創建基於私鑰和證書的 tlsConfig。
tlsConfig := &tls.Config{
Certificates: []tls.Certificate{
{
PrivateKey: privateKey,
Cert: cert,
},
},
}
這些應該從您的 pkcs11 文件中提取:
privateKey, err := p.FindObject(session, []*pkcs11.Attribute{
pkcs11.NewAttribute(pkcs11.CKA_CLASS, pkcs11.CKO_PRIVATE_KEY),
pkcs11.NewAttribute(pkcs11.CKA_LABEL, "private_key_label"),
})
if err != nil {
panic(err)
}
cert, err := p.FindObject(session, []*pkcs11.Attribute{
pkcs11.NewAttribute(pkcs11.CKA_CLASS, pkcs11.CKO_CERTIFICATE),
pkcs11.NewAttribute(pkcs11.CKA_LABEL, "certificate_label"),
})
if err != nil {
panic(err)
}
這似乎不需要CKA_VALUE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.