Condividi tramite


Monitorare e gestire la creazione di certificati

Si applica a: Azure

Gli scenari/operazioni descritti in questo articolo sono:

  • Richiedere un certificato KV con un'autorità emittente supportata
  • Recuperare una richiesta in sospeso: lo stato della richiesta è "in corso"
  • Recuperare una richiesta in sospeso con stato "completed"
  • Recupera richiesta in sospeso: lo stato della richiesta in sospeso è "annullato" o "non andata a buon fine"
  • Recuperare una richiesta in sospeso: lo stato della richiesta in sospeso è "eliminato" o "sovrascritto"
  • Crea (o Importa) quando esiste una richiesta in sospeso: lo stato è "inProgress"
  • Eseguire l'unione in caso di richiesta in sospeso creata con un'autorità di certificazione (ad esempio, DigiCert)
  • Richiedere un annullamento mentre lo stato della richiesta in sospeso è "inProgress"
  • Eliminare un oggetto richiesta pendente
  • Creare manualmente un certificato KV
  • Eseguire l'unione durante la creazione di una richiesta in sospeso (creazione manuale di certificati)

Richiedere un certificato KV con un'autorità emittente supportata

Metodo URI della richiesta
POST https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version}

Gli esempi seguenti richiedono che un oggetto denominato "mydigicert" sia già disponibile nel tuo archivio di chiavi con DigiCert come provider dell’emittente. L'autorità di certificazione è un'entità rappresentata in Azure Key Vault (KV) come risorsa CertificateIssuer. Viene usato per fornire informazioni sull'origine di un certificato KV; nome dell'autorità emittente, provider, credenziali e altri dettagli amministrativi.

Richiesta

{
  "policy": {
    "x509_props": {
      "subject": "CN=MyCertSubject1"
    },
    "issuer": {
      "name": "mydigicert",
      "cty": "OV-SSL",
    }
  }
}

Risposta

StatusCode: 202, ReasonPhrase: 'Accepted'
Location: “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "mydigicert"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "InProgress",
  "status_details": "Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later",
  "request_id": "a76827a18b63421c917da80f28e9913d"
}

Recuperare una richiesta in sospeso con stato "inProgress"

Metodo URI della richiesta
GET https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

Richiesta

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OR

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Annotazioni

Se request_id viene specificato nella query, funziona come un filtro. Se il request_id nella query e nell'oggetto in sospeso sono diversi, viene restituito un codice di stato HTTP 404.

Risposta

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "inProgress",
  "status_details": "…",
  "request_id": "a76827a18b63421c917da80f28e9913d"
}

Recuperare una richiesta in sospeso con stato "completed"

Richiesta

Metodo URI della richiesta
GET https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OR

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Risposta

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "completed",
  "request_id": "a76827a18b63421c917da80f28e9913d",
  "target": “https://mykeyvault.vault.azure.net/certificates/mycert1?api-version={api-version}"
}

Recuperare richiesta in sospeso: lo stato della richiesta è "annullato" o "fallita"

Richiesta

Metodo URI della richiesta
GET https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OR

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Risposta

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "failed",
  "status_details": "",
  "request_id": "a76827a18b63421c917da80f28e9913d",
  "error": {
    "code": "<errorcode>",
    "message": "<message>"
  }
}

Annotazioni

Il valore di errorcode può essere "Errore autorità di certificazione" o "Richiesta rifiutata" in base rispettivamente all'emittente o all'errore dell'utente.

Recuperare una richiesta in sospeso: lo stato della richiesta in sospeso è "eliminato" o "sovrascritto"

Un oggetto in sospeso può essere eliminato o sovrascritto da un'operazione di creazione/importazione quando lo stato non è inProgress.

Metodo URI della richiesta
GET https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

Richiesta

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OR

GET “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Risposta

StatusCode: 404, ReasonPhrase: 'Not Found'
{
  "error": {
    "code": "PendingCertificateNotFound",
    "message": "…"
  }
}

Crea (o Importa) quando esiste una richiesta in sospeso: lo stato è "inProgress"

Un oggetto in sospeso ha quattro possibili stati: "in corso", "annullato", "fallito" o "completato".

Quando lo stato di una richiesta in sospeso è "inProgress", le operazioni di creazione e importazione avranno esito negativo con codice di stato HTTP 409 (Conflitto).

Per correggere un conflitto:

  • Se il certificato viene creato manualmente, è possibile completare il certificato di Key Vault eseguendo un'operazione di unione o eliminazione dell'oggetto in sospeso.

  • Se il certificato viene creato con un'autorità emittente, puoi aspettare fino a quando il certificato completa, fallisce o viene annullato. In alternativa, è possibile eliminare l'oggetto in sospeso.

Annotazioni

L'eliminazione di un oggetto in sospeso può o meno annullare la richiesta di certificato x509 con il provider.

Metodo URI della richiesta
POST https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version}

Richiesta

{
  "policy": {
    "x509_props": {
      "subject": "CN=MyCertSubject1"
    },
    "issuer": {
      "name": "mydigicert"
    }
  }
}

Risposta

StatusCode: 409, ReasonPhrase: 'Conflict'
{
  "error": {
    "code": "Forbidden",
    "message": "A new key vault certificate can not be created or imported while a pending key vault certificate's status is inProgress."
  }
}

Eseguire l'unione in caso di richiesta in sospeso creata con un'autorità di certificazione

L'unione non è consentita quando viene creato un oggetto in sospeso con un emittente, ma è consentita quando il suo stato è inProgress.

Se la richiesta di creazione del certificato x509 non riesce o annulla per qualche motivo e se un certificato x509 può essere recuperato tramite mezzi fuori banda, è possibile eseguire un'operazione di unione per completare il certificato KV.

Metodo URI della richiesta
POST https://mykeyvault.vault.azure.net/certificates/mycert1/pending/merge?api-version={api-version}

Richiesta

{
  "x5c": [ "MIICxTCCAbi………………………trimmed for brevitiy……………………………………………EPAQj8=" ]
}

Risposta

StatusCode: 403, ReasonPhrase: 'Forbidden'
{
  "error": {
    "code": "Forbidden",
    "message": "Merge is forbidden on pending object created with issuer : <issuer-name> while it is in progess."
  }
}

Richiedere un annullamento mentre lo stato della richiesta in sospeso è "inProgress"

È possibile richiedere un annullamento solo. Una richiesta può essere annullata o meno. Se una richiesta non è "inProgress", viene restituito lo stato HTTP 400 (Richiesta non valida).

Metodo URI della richiesta
PATCH https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

Richiesta

PATCH “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OR

PATCH “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

{
  "cancellation_requested": true
}

Risposta

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": true,
  "status": "inProgress",
  "status_details": "…",
  "request_id": "a76827a18b63421c917da80f28e9913d"
}

Eliminare un oggetto di richiesta in sospeso

Annotazioni

L'eliminazione dell'oggetto in sospeso può o meno annullare la richiesta di certificato x509 con il provider.

Metodo URI della richiesta
ELIMINA https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}

Richiesta

DELETE “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"

OR

DELETE “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}"

Risposta

StatusCode: 200, ReasonPhrase: 'OK'
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "{issuer-name}"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "cancellation_requested": false,
  "status": "inProgress",
  "request_id": "a76827a18b63421c917da80f28e9913d",
}

Creare manualmente un certificato KV

È possibile creare un certificato rilasciato con una CA di propria scelta tramite un processo di creazione manuale. Impostare il nome dell'autorità emittente su "Sconosciuto" o non specificare il campo dell'autorità emittente.

Metodo URI della richiesta
POST https://mykeyvault.vault.azure.net/certificates/mycert1/create?api-version={api-version}

Richiesta

{
  "policy": {
    "x509_props": {
      "subject": "CN=MyCertSubject1"
    },
    "issuer": {
      "name": "Unknown"
    }
  }
}

Risposta

StatusCode: 202, ReasonPhrase: 'Accepted'
Location: “https://mykeyvault.vault.azure.net/certificates/mycert1/pending?api-version={api-version}&request_id=a76827a18b63421c917da80f28e9913d"
{
  "id": “https://mykeyvault.vault.azure.net/certificates/mycert1/pending",
  "issuer": {
    "name": "Unknown"
  },
  "csr": "MIICq......DD5Lp5cqXg==",
  "status": "inProgress",
  "status_details": "Pending certificate created. Please Perform Merge to complete the request.",
  "request_id": "a76827a18b63421c917da80f28e9913d"
}

Eseguire l'unione durante la creazione di una richiesta in sospeso (creazione manuale di certificati)

Metodo URI della richiesta
POST https://mykeyvault.vault.azure.net/certificates/mycert1/pending/merge?api-version={api-version}

Richiesta

{
  "x5c": [ "MIICxTCCAbi………………………trimmed for brevitiy……………………………………………EPAQj8=" ]
}

Nome dell'elemento Obbligatorio TIPO Versione Descrizione
x5c array <introduzione alla versione> Catena di certificati X509 come matrice di stringhe base 64.

Risposta

StatusCode: 201, ReasonPhrase: 'Created'
Location: “https://mykeyvault.vault.azure.net/certificates/mycert1?api-version={api-version}"
{
	"id": "https mykeyvault.vault.azure.net/certificates/mycert1/f366e1a9dd774288ad84a45a5f620352",
	"kid": "https:// mykeyvault.vault.azure.net/keys/mycert1/f366e1a9dd774288ad84a45a5f620352",
	"sid": " mykeyvault.vault.azure.net/secrets/mycert1/f366e1a9dd774288ad84a45a5f620352",
	"cer": "……de34534……",
	"x5t": "n14q2wbvyXr71Pcb58NivuiwJKk",
	"attributes": {
		"enabled": true,
		"exp": 1530394215,
		"nbf": 1435699215,
		"created": 1435699919,
		"updated": 1435699919
	},
	"pending": {
		"id": "https:// mykeyvault.vault.azure.net/certificates/mycert1/pending"
	},
	"policy": {
		"id": "https:// mykeyvault.vault.azure.net/certificates/mycert1/policy",
		"key_props": {
			"exportable": false,
			"kty": "RSA",
			"key_size": 2048,
			"reuse_key": false
		},
		"secret_props": {
			"contentType": "application/x-pkcs12"
		},
		"x509_props": {
			"subject": "CN=Mycert1",
			"ekus": ["1.3.6.1.5.5.7.3.1", "1.3.6.1.5.5.7.3.2"],
			"validity_months": 12
		},
		"lifetime_actions": [{
			"trigger": {
				"lifetime_percentage": 80
			},
			"action": {
				"action_type": "EmailContacts"
			}
		}],
		"issuer": {
			"name": "Unknown"
		},
		"attributes": {
			"enabled": true,
			"created": 1435699811,
			"updated": 1435699811
		}
	}
}