Skip to content

Commit 53d1455

Browse files
authored
[Keyvault] Fix #27220: az keyvault certificate import: Fix invalid policy issue when no content_type provided (#27225)
1 parent 3b295f2 commit 53d1455

File tree

5 files changed

+356
-316
lines changed

5 files changed

+356
-316
lines changed

src/azure-cli/azure/cli/command_modules/keyvault/_validators.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,16 @@ def process_certificate_policy(cmd, ns):
801801
if secret_properties:
802802
content_type = secret_properties.get('content_type')
803803

804+
if not content_type and hasattr(ns, 'certificate_bytes') and ns.certificate_bytes:
805+
from OpenSSL import crypto
806+
try:
807+
crypto.load_certificate(crypto.FILETYPE_PEM, ns.certificate_bytes)
808+
# if we get here, we know it was a PEM file
809+
content_type = 'application/x-pem-file'
810+
except (ValueError, crypto.Error):
811+
# else it should be a pfx file
812+
content_type = 'application/x-pkcs12'
813+
804814
x509_certificate_properties = policy.get('x509_certificate_properties')
805815
if x509_certificate_properties:
806816
subject = x509_certificate_properties.get('subject')
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"attributes": {"created": "2023-05-25T06:10:06+00:00", "enabled": true, "expires": null, "notBefore": null, "recoveryLevel": null, "updated": "2023-05-25T06:10:06+00:00"}, "id": "https://cli-test-kv-ct-pispzvs2c.vault.azure.net/certificates/cert2/policy", "issuerParameters": {"certificateTransparency": null, "certificateType": null, "name": "Self"}, "keyProperties": {"curve": null, "exportable": true, "keySize": 2048, "keyType": "RSA", "reuseKey": false}, "lifetimeActions": [{"action": {"actionType": "AutoRenew"}, "trigger": {"daysBeforeExpiry": null, "lifetimePercentage": 90}}], "secretProperties": {"contentType": "application/x-pkcs12"}, "x509CertificateProperties": {"ekus": ["1.3.6.1.5.5.7.3.1", "1.3.6.1.5.5.7.3.2"], "keyUsage": ["digitalSignature", "keyAgreement", "keyCertSign", "keyEncipherment", "nonRepudiation"], "subject": "C=US, ST=WA, L=Redmon, O=Test Noodle, OU=TestNugget, CN=www.mytestdomain.com", "subjectAlternativeNames": {"dnsNames": ["1", "2"], "emails": null, "upns": null}, "validityInMonths": 60}}
1+
{"attributes": {"created": "2023-08-22T08:12:21+00:00", "enabled": true, "expires": null, "notBefore": null, "recoveryLevel": null, "updated": "2023-08-22T08:12:21+00:00"}, "id": "https://cli-test-kv-ct-4to5cl4dt.vault.azure.net/certificates/cert2/policy", "issuerParameters": {"certificateTransparency": null, "certificateType": null, "name": "Self"}, "keyProperties": {"curve": null, "exportable": true, "keySize": 2048, "keyType": "RSA", "reuseKey": false}, "lifetimeActions": [{"action": {"actionType": "AutoRenew"}, "trigger": {"daysBeforeExpiry": null, "lifetimePercentage": 90}}], "secretProperties": {"contentType": "application/x-pkcs12"}, "x509CertificateProperties": {"ekus": ["1.3.6.1.5.5.7.3.1", "1.3.6.1.5.5.7.3.2"], "keyUsage": ["digitalSignature", "keyAgreement", "keyCertSign", "keyEncipherment", "nonRepudiation"], "subject": "C=US, ST=WA, L=Redmon, O=Test Noodle, OU=TestNugget, CN=www.mytestdomain.com", "subjectAlternativeNames": {"dnsNames": ["1", "2"], "emails": null, "upns": null}, "validityInMonths": 60}}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"issuerParameters": {
3+
"name": "Self"
4+
},
5+
"keyProperties": {
6+
"keySize": 2048,
7+
"keyType": "RSA",
8+
"reuseKey": false
9+
},
10+
"lifetimeActions": [
11+
{
12+
"action": {"actionType": "AutoRenew"},
13+
"trigger": {"daysBeforeExpiry": null, "lifetimePercentage": 90}
14+
}
15+
],
16+
"validityInMonths": 60
17+
}

0 commit comments

Comments
 (0)