使用Azure Key Vault Secret client library for Python,我获得了包含已提取私钥的证书的秘密。
-----BEGIN PRIVATE KEY
{private_key_value}
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
{certificate_value}
-----END CERTIFICATE-----
在这种情况下,是否已经有用于分别获取两个值(证书和私钥)的软件包,或者如何从字符串中提取它们?我需要为此添加一个ssl_server_credenetials
给我的gRPC服务器,该服务器具有- [PEM编码的私钥,PEM编码的证书链]形式的对列表 {{3} }
答案 0 :(得分:0)
如果您的证书的内容类型是 PEM 并且您获得带有证书名称的密钥的 .value
,则您应该获得与您描述的一样的 PEM 编码字符串。现在有一个 azure-keyvault-certificates
的 sample,它显示了如何使用 pyOpenSSL 从证书中获取私钥,但是如果您想解析字符串,您可以执行以下操作:
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
client = SecretClient("https://{vault-name}.vault.azure.net", credential)
secret = client.get_secret("cert-name")
def get_section_from_pem(pem_string, section):
header = "-----BEGIN {}-----".format(section)
footer = "-----END {}-----".format(section)
header_start = pem_string.index(header)
footer_start = pem_string.index(footer)
content = pem_string[header_start + len(header) : footer_start]
return content
private_key = get_section_from_pem(secret.value, "PRIVATE KEY")
certificate = get_section_from_pem(secret.value, "CERTIFICATE")
print("Private key: {}\nCertificate: {}".format(private_key, certificate))
(我使用 Python 开发 Azure SDK)