Подписание строки с помощью пакета SDK Azure Key Vault Python. ⇐ Python
Подписание строки с помощью пакета SDK Azure Key Vault Python.
Я хочу подписать строку сертификатом, созданным и хранящимся в Azure Key Vault. Я использую Python SDK, предоставленный Microsoft, для получения сертификата. Я приступаю к извлечению закрытого ключа из расшифрованного секрета сертификата.
Получение закрытого ключа в этом поместье является проблемой, поскольку оно не позволяет мне использовать закрытый ключ с CryptographyClient. Я получаю ожидаемую ошибку, которая показана ниже, поскольку закрытый ключ не является экземпляром KeyVaultKey.
Ошибка, с которой я столкнулся:
Произошло исключение: ValueError «ключ» должен быть экземпляром KeyVaultKey или строкой идентификатора ключа. Файл «C:\Users\P.Markham\OneDrive — Royal Terberg Group B.V\Documents\SSF\init.py», строка 31, в cryptography_client = CryptographyClient(private_key, credential=credential) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ValueError: «ключ» должен быть экземпляром KeyVaultKey или строкой идентификатора ключа. Код, который я использую, показан ниже:
импортировать ОС импортировать хеш-библиотеку импортировать базу64 из cryptography.hazmat.primitives.serialization import pkcs12 из azure.identity импортировать DefaultAzureCredential из azure.keyvault.keys импортировать KeyClient из azure.keyvault.keys.crypto импортировать SignatureAlgorithm из azure.keyvault.certificates импорта CertificateClient из azure.keyvault.secrets импорт SecretClient из azure.keyvault.keys.crypto импортируйте CryptographyClient, EncryptionAlgorithm VAULT_URL = os.environ["AZURE_VAULT_URL"] CERTIFICATE_NAME = os.environ["AZURE_CERTIFICATE_NAME"] учетные данные = DefaultAzureCredential() certificate_client = CertificateClient(vault_url=VAULT_URL, credential=credential) secret_client = SecretClient(vault_url=VAULT_URL, credential=credential) certificate_secret = secret_client.get_secret(name=CERTIFICATE_NAME) cert_bytes = base64.b64decode(certificate_secret.value) частный_ключ, публичный_сертификат, дополнительные_сертификаты = pkcs12.load_key_and_certificates( данные=cert_bytes, пароль = Нет ) print(f"Сертификат с именем '{certificate_secret.name}' был проанализирован.") дайджест = hashlib.sha256(b"пример строки, которую я хочу подписать").digest() cryptography_client = CryptographyClient(private_key, credential=credential) #sign возвращает подпись и метаданные, необходимые для ее проверки результат = cryptography_client.sign(SignatureAlgorithm.rs256, дайджест) print(f"Идентификатор ключа: {result.key_id}") print(f"Алгоритм: {result.algorithm}") print(f"Подпись: {result.signature}") подпись = результат.подпись Как подписать строку сертификатом? Мне кажется, что я делаю это совершенно неправильно, но не могу найти никакой документации, связывающей подписание с сертификатами.
Я хочу подписать строку сертификатом, созданным и хранящимся в Azure Key Vault. Я использую Python SDK, предоставленный Microsoft, для получения сертификата. Я приступаю к извлечению закрытого ключа из расшифрованного секрета сертификата.
Получение закрытого ключа в этом поместье является проблемой, поскольку оно не позволяет мне использовать закрытый ключ с CryptographyClient. Я получаю ожидаемую ошибку, которая показана ниже, поскольку закрытый ключ не является экземпляром KeyVaultKey.
Ошибка, с которой я столкнулся:
Произошло исключение: ValueError «ключ» должен быть экземпляром KeyVaultKey или строкой идентификатора ключа. Файл «C:\Users\P.Markham\OneDrive — Royal Terberg Group B.V\Documents\SSF\init.py», строка 31, в cryptography_client = CryptographyClient(private_key, credential=credential) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ValueError: «ключ» должен быть экземпляром KeyVaultKey или строкой идентификатора ключа. Код, который я использую, показан ниже:
импортировать ОС импортировать хеш-библиотеку импортировать базу64 из cryptography.hazmat.primitives.serialization import pkcs12 из azure.identity импортировать DefaultAzureCredential из azure.keyvault.keys импортировать KeyClient из azure.keyvault.keys.crypto импортировать SignatureAlgorithm из azure.keyvault.certificates импорта CertificateClient из azure.keyvault.secrets импорт SecretClient из azure.keyvault.keys.crypto импортируйте CryptographyClient, EncryptionAlgorithm VAULT_URL = os.environ["AZURE_VAULT_URL"] CERTIFICATE_NAME = os.environ["AZURE_CERTIFICATE_NAME"] учетные данные = DefaultAzureCredential() certificate_client = CertificateClient(vault_url=VAULT_URL, credential=credential) secret_client = SecretClient(vault_url=VAULT_URL, credential=credential) certificate_secret = secret_client.get_secret(name=CERTIFICATE_NAME) cert_bytes = base64.b64decode(certificate_secret.value) частный_ключ, публичный_сертификат, дополнительные_сертификаты = pkcs12.load_key_and_certificates( данные=cert_bytes, пароль = Нет ) print(f"Сертификат с именем '{certificate_secret.name}' был проанализирован.") дайджест = hashlib.sha256(b"пример строки, которую я хочу подписать").digest() cryptography_client = CryptographyClient(private_key, credential=credential) #sign возвращает подпись и метаданные, необходимые для ее проверки результат = cryptography_client.sign(SignatureAlgorithm.rs256, дайджест) print(f"Идентификатор ключа: {result.key_id}") print(f"Алгоритм: {result.algorithm}") print(f"Подпись: {result.signature}") подпись = результат.подпись Как подписать строку сертификатом? Мне кажется, что я делаю это совершенно неправильно, но не могу найти никакой документации, связывающей подписание с сертификатами.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Проблема с Azure Key Vault Vault в приложении .NET 6 Container перед Build ()
Anonymous » » в форуме C# - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-