如果要使用AWS Secrets Manager存储加密密钥,则需要将其存储为打包的私钥格式。在从Secrets Manager中检索打包密钥时,您可能会遇到以下错误消息:
PKCS#8 Error from JSON wrapper
这是由于AWS Secrets Manager使用JSON格式封装私钥,并在封装中添加了其他属性。您可以使用以下代码来解密并提取密钥:
import json
from cryptography.hazmat.primitives.serialization import load_pem_private_key
response = get_secret() # get_secret() 是获取密钥的方法
secret_dict = json.loads(response['SecretString'])
# 提取Encoding和Data
priv_encoding = secret_dict['EncryptedPrivateKey']
priv_data = secret_dict['EncryptedPrivateKeyData']
# 解密密钥
priv_key = load_pem_private_key(
priv_encoding.encode(),
priv_data.encode(),
backend=default_backend()
)
# 将私钥导出到PKCS#8格式
priv_key_pkcs8 = priv_key.private_bytes(
encoding=serialization.Encoding.PKCS8,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption()
)
print(priv_key_pkcs8)
上面的代码将私钥解密并将其导出到PKCS#8格式。您可以将其用于加密操作。