This section specifies the requirements for CAs that receive PKI Requests and generate PKI Responses.
CAs conforming to this document
MUST ensure that only the permitted signature, hash, and MAC algorithms described throughout this profile are used in requests; if they are not, the CA
MUST reject those requests. The CA
SHOULD return a CMCStatusInfoV2 control with a CMCStatus of failed and a CMCFailInfo with the value of badAlg [
RFC 5272].
For requests involving an RA (i.e., batched requests), the CA
MUST verify the RA's authorization. The following certificate fields
MUST NOT be modifiable using the Modify Certification Request control: publicKey and the keyUsage extension. The request
MUST be rejected if an attempt to modify those certification request fields is present. The CA
SHOULD return a CMCStatusInfoV2 control with a CMCStatus of failed and a CMCFailInfo with a value of badRequest.
When processing end-entity-generated SignedData objects, CAs
MUST NOT perform CCC certificate extension processing [
RFC 6010].
If a client-generated PKI Request includes the ChangeSubjectName attribute as described in
Section 4.1 or [
4.2] above, the CA
MUST ensure that name change is authorized. The mechanism for ensuring that the name change is authorized is out of scope. A CA that performs this check and finds that the name change is not authorized
MUST reject the PKI Request. The CA
SHOULD return an Extended CMC Status Info control (CMCStatusInfoV2) with a CMCStatus of failed.
Other processing of PKIRequests is performed as described in [
RFC 5272].
CAs send PKI Responses to both client-generated requests and RA-generated requests. If a Full PKI Response is returned in direct response to a client-generated request, it
MUST be encapsulated in a SignedData, and the SignedData
MUST be constructed in accordance with [
RFC 8755].
If the PKI Response is in response to an RA-generated PKI Request, then the above PKI Response is encapsulated in another CA-generated PKI Response. That PKI Response
MUST be encapsulated in a SignedData, and the SignedData
MUST be constructed in accordance with [
RFC 8755]. The above PKI Response is placed in the encapsulating PKI Response cmsSequence field. The other fields are as above with the addition of the batch response control in controlSequence. The following illustrates a successful CA response to an RA-encapsulated PKI Request, both of which include Transaction IDs and Nonces:
SignedData (applied by the CA)
PKIResponse
controlSequence (Transaction ID, Sender Nonce, Recipient
Nonce, Batch Response)
cmsSequence
SignedData (applied by CA and includes returned
certificates)
PKIResponse
controlSequence (Transaction ID, Sender Nonce,
Recipient Nonce)
The same private key used to sign certificates
MUST NOT be used to sign Full PKI Response messages. Instead, a separate certificate indicating authorization to sign CMC responses
MUST be used.
Authorization to sign Full PKI Responses
SHOULD be indicated in the CA certificate by inclusion of the id-kp-cmcCA EKU from [
RFC 6402]. The CA certificate
MAY also include the CCC certificate extension [
RFC 6010], or it
MAY indicate authorization through inclusion of the CCC certificate extension alone. The CA certificate may also be authorized through local configuration.
In order for a CA certificate using the CCC certificate extension to be authorized to generate responses, the object identifier for the PKIResponse content type must be present in the CCC certificate extension. CCC
SHOULD be included if constraints are to be placed on the content types generated.
Signatures applied to individual certificates are as required in [
RFC 8603].
The signature on the SignedData of a successful response to a client-generated request, or each individual inner SignedData on the successful response to an RA-generated request,
MUST be generated using SHA-384 and either ECDSA on P-384 or RSA using RSASSA-PKCS1-v1_5 or RSASSA-PSS with an RSA-3072 or RSA-4096 key. An unsuccessful response
MUST be signed using the same key type and algorithm that signed the request.
The outer SignedData on the Full PKI Response to any RA-generated PKI Request
MUST be signed with the same key type and algorithm that signed the request.
The SignedData on a successful Full PKI Response to a PKI Request that only contained a Get Certificate or Get CRL control
MUST be signed with the same key type and algorithm that signed the request.