From 911084bb39d933009bc9bb1182be79ebf3980828 Mon Sep 17 00:00:00 2001 From: AWS <> Date: Tue, 19 Jan 2021 19:04:40 +0000 Subject: [PATCH] AWS Certificate Manager Private Certificate Authority Update: ACM Private CA is launching additional certificate templates and API parameters. This allows customers to create custom certificates for their identity and secure communication use cases. --- ...erPrivateCertificateAuthority-3cc9f6a.json | 6 + .../codegen-resources/service-2.json | 166 ++++++++++++++++-- 2 files changed, 158 insertions(+), 14 deletions(-) create mode 100644 .changes/next-release/feature-AWSCertificateManagerPrivateCertificateAuthority-3cc9f6a.json diff --git a/.changes/next-release/feature-AWSCertificateManagerPrivateCertificateAuthority-3cc9f6a.json b/.changes/next-release/feature-AWSCertificateManagerPrivateCertificateAuthority-3cc9f6a.json new file mode 100644 index 000000000000..73d2d145556d --- /dev/null +++ b/.changes/next-release/feature-AWSCertificateManagerPrivateCertificateAuthority-3cc9f6a.json @@ -0,0 +1,6 @@ +{ + "type": "feature", + "category": "AWS Certificate Manager Private Certificate Authority", + "contributor": "", + "description": "ACM Private CA is launching additional certificate templates and API parameters. This allows customers to create custom certificates for their identity and secure communication use cases." +} diff --git a/services/acmpca/src/main/resources/codegen-resources/service-2.json b/services/acmpca/src/main/resources/codegen-resources/service-2.json index 49dc4ed727e1..8664ea434390 100644 --- a/services/acmpca/src/main/resources/codegen-resources/service-2.json +++ b/services/acmpca/src/main/resources/codegen-resources/service-2.json @@ -125,7 +125,7 @@ {"shape":"ResourceNotFoundException"}, {"shape":"InvalidArnException"} ], - "documentation":"

Lists information about your private certificate authority (CA) or one that has been shared with you. You specify the private CA on input by its ARN (Amazon Resource Name). The output contains the status of your CA. This can be any of the following:

" + "documentation":"

Lists information about your private certificate authority (CA) or one that has been shared with you. You specify the private CA on input by its ARN (Amazon Resource Name). The output contains the status of your CA. This can be any of the following:

" }, "DescribeCertificateAuthorityAuditReport":{ "name":"DescribeCertificateAuthorityAuditReport", @@ -225,7 +225,7 @@ {"shape":"MalformedCertificateException"}, {"shape":"CertificateMismatchException"} ], - "documentation":"

Imports a signed private CA certificate into ACM Private CA. This action is used when you are using a chain of trust whose root is located outside ACM Private CA. Before you can call this action, the following preparations must in place:

  1. In ACM Private CA, call the CreateCertificateAuthority action to create the private CA that that you plan to back with the imported certificate.

  2. Call the GetCertificateAuthorityCsr action to generate a certificate signing request (CSR).

  3. Sign the CSR using a root or intermediate CA hosted by either an on-premises PKI hierarchy or by a commercial CA.

  4. Create a certificate chain and copy the signed certificate and the certificate chain to your working directory.

ACM Private CA supports three scenarios for installing a CA certificate:

The following addtitional requirements apply when you import a CA certificate.

Enforcement of Critical Constraints

ACM Private CA allows the following extensions to be marked critical in the imported CA certificate or chain.

ACM Private CA rejects the following extensions when they are marked critical in an imported CA certificate or chain.

" + "documentation":"

Imports a signed private CA certificate into ACM Private CA. This action is used when you are using a chain of trust whose root is located outside ACM Private CA. Before you can call this action, the following preparations must in place:

  1. In ACM Private CA, call the CreateCertificateAuthority action to create the private CA that you plan to back with the imported certificate.

  2. Call the GetCertificateAuthorityCsr action to generate a certificate signing request (CSR).

  3. Sign the CSR using a root or intermediate CA hosted by either an on-premises PKI hierarchy or by a commercial CA.

  4. Create a certificate chain and copy the signed certificate and the certificate chain to your working directory.

ACM Private CA supports three scenarios for installing a CA certificate:

The following additional requirements apply when you import a CA certificate.

Enforcement of Critical Constraints

ACM Private CA allows the following extensions to be marked critical in the imported CA certificate or chain.

ACM Private CA rejects the following extensions when they are marked critical in an imported CA certificate or chain.

" }, "IssueCertificate":{ "name":"IssueCertificate", @@ -448,7 +448,7 @@ }, "Initials":{ "shape":"String5", - "documentation":"

Concatenation that typically contains the first letter of the GivenName, the first letter of the middle name if one exists, and the first letter of the SurName.

" + "documentation":"

Concatenation that typically contains the first letter of the GivenName, the first letter of the middle name if one exists, and the first letter of the Surname.

" }, "Pseudonym":{ "shape":"String128", @@ -459,7 +459,7 @@ "documentation":"

Typically a qualifier appended to the name of an individual. Examples include Jr. for junior, Sr. for senior, and III for third.

" } }, - "documentation":"

Contains information about the certificate subject. The certificate can be one issued by your private certificate authority (CA) or it can be your private CA certificate. The Subject field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The Subject must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate. The DN must be unique for each entity, but your private CA can issue more than one certificate with the same DN to the same entity.

" + "documentation":"

Contains information about the certificate subject. The Subject field in the certificate identifies the entity that owns or controls the public key in the certificate. The entity can be a user, computer, device, or service. The Subject must contain an X.500 distinguished name (DN). A DN is a sequence of relative distinguished names (RDNs). The RDNs are separated by commas in the certificate.

" }, "AWSPolicy":{ "type":"string", @@ -532,6 +532,17 @@ "ListPermissions" ] }, + "ApiPassthrough":{ + "type":"structure", + "members":{ + "Extensions":{ + "shape":"Extensions", + "documentation":"

Specifies X.509 extension information for a certificate.

" + }, + "Subject":{"shape":"ASN1Subject"} + }, + "documentation":"

Contains X.509 certificate information to be placed in an issued certificate. An APIPassthrough or APICSRPassthrough template variant must be selected, or else this parameter is ignored.

If conflicting or duplicate certificate information is supplied from other sources, ACM Private CA applies order of operation rules to determine what information is used.

" + }, "Arn":{ "type":"string", "max":200, @@ -688,6 +699,12 @@ "documentation":"

The certificate authority certificate you are importing does not comply with conditions specified in the certificate that signed it.

", "exception":true }, + "CertificatePolicyList":{ + "type":"list", + "member":{"shape":"PolicyInformation"}, + "max":20, + "min":1 + }, "ConcurrentModificationException":{ "type":"structure", "members":{ @@ -758,7 +775,7 @@ }, "IdempotencyToken":{ "shape":"IdempotencyToken", - "documentation":"

Alphanumeric string that can be used to distinguish between calls to CreateCertificateAuthority. For a given token, ACM Private CA creates exactly one CA. If you issue a subsequent call using the same token, ACM Private CA returns the ARN of the existing CA and takes no further action. If you change the idempotency token across multiple calls, ACM Private CA creates a unique CA for each unique token.

" + "documentation":"

Custom string that can be used to distinguish between calls to the CreateCertificateAuthority action. Idempotency tokens for CreateCertificateAuthority time out after five minutes. Therefore, if you call CreateCertificateAuthority multiple times with the same idempotency token within five minutes, ACM Private CA recognizes that you are requesting only certificate authority and will issue only one. If you change the idempotency token for each call, PCA recognizes that you are requesting multiple certificate authorities.

" }, "Tags":{ "shape":"TagList", @@ -969,6 +986,59 @@ }, "documentation":"

Describes an Electronic Data Interchange (EDI) entity as described in as defined in Subject Alternative Name in RFC 5280.

" }, + "ExtendedKeyUsage":{ + "type":"structure", + "members":{ + "ExtendedKeyUsageType":{ + "shape":"ExtendedKeyUsageType", + "documentation":"

Specifies a standard ExtendedKeyUsage as defined as in RFC 5280.

" + }, + "ExtendedKeyUsageObjectIdentifier":{ + "shape":"CustomObjectIdentifier", + "documentation":"

Specifies a custom ExtendedKeyUsage with an object identifier (OID).

" + } + }, + "documentation":"

Specifies additional purposes for which the certified public key may be used other than basic purposes indicated in the KeyUsage extension.

" + }, + "ExtendedKeyUsageList":{ + "type":"list", + "member":{"shape":"ExtendedKeyUsage"}, + "max":20, + "min":1 + }, + "ExtendedKeyUsageType":{ + "type":"string", + "enum":[ + "SERVER_AUTH", + "CLIENT_AUTH", + "CODE_SIGNING", + "EMAIL_PROTECTION", + "TIME_STAMPING", + "OCSP_SIGNING", + "SMART_CARD_LOGIN", + "DOCUMENT_SIGNING", + "CERTIFICATE_TRANSPARENCY" + ] + }, + "Extensions":{ + "type":"structure", + "members":{ + "CertificatePolicies":{ + "shape":"CertificatePolicyList", + "documentation":"

Contains a sequence of one or more policy information terms, each of which consists of an object identifier (OID) and optional qualifiers. For more information, see NIST's definition of Object Identifier (OID).

In an end-entity certificate, these terms indicate the policy under which the certificate was issued and the purposes for which it may be used. In a CA certificate, these terms limit the set of policies for certification paths that include this certificate.

" + }, + "ExtendedKeyUsage":{ + "shape":"ExtendedKeyUsageList", + "documentation":"

Specifies additional purposes for which the certified public key may be used other than basic purposes indicated in the KeyUsage extension.

" + }, + "KeyUsage":{"shape":"KeyUsage"}, + "SubjectAlternativeNames":{ + "shape":"GeneralNameList", + "documentation":"

The subject alternative name extension allows identities to be bound to the subject of the certificate. These identities may be included in addition to or in place of the identity in the subject field of the certificate.

" + } + }, + "documentation":"

Contains X.509 extension information for a certificate.

" + }, "FailureReason":{ "type":"string", "enum":[ @@ -1010,7 +1080,13 @@ "documentation":"

Represents GeneralName as an object identifier (OID).

" } }, - "documentation":"

Describes an ASN.1 X.400 GeneralName as defined in RFC 5280. Only one of the following naming options should be providied. Providing more than one option results in an InvalidArgsException error.

" + "documentation":"

Describes an ASN.1 X.400 GeneralName as defined in RFC 5280. Only one of the following naming options should be provided. Providing more than one option results in an InvalidArgsException error.

" + }, + "GeneralNameList":{ + "type":"list", + "member":{"shape":"GeneralName"}, + "max":20, + "min":1 }, "GetCertificateAuthorityCertificateRequest":{ "type":"structure", @@ -1200,29 +1276,37 @@ "Validity" ], "members":{ + "ApiPassthrough":{ + "shape":"ApiPassthrough", + "documentation":"

Specifies X.509 certificate information to be included in the issued certificate. An APIPassthrough or APICSRPassthrough template variant must be selected, or else this parameter is ignored. For more information about using these templates, see Understanding Certificate Templates.

If conflicting or duplicate certificate information is supplied during certificate issuance, ACM Private CA applies order of operation rules to determine what information is used.

" + }, "CertificateAuthorityArn":{ "shape":"Arn", "documentation":"

The Amazon Resource Name (ARN) that was returned when you called CreateCertificateAuthority. This must be of the form:

arn:aws:acm-pca:region:account:certificate-authority/12345678-1234-1234-1234-123456789012

" }, "Csr":{ "shape":"CsrBlob", - "documentation":"

The certificate signing request (CSR) for the certificate you want to issue. You can use the following OpenSSL command to create the CSR and a 2048 bit RSA private key.

openssl req -new -newkey rsa:2048 -days 365 -keyout private/test_cert_priv_key.pem -out csr/test_cert_.csr

If you have a configuration file, you can use the following OpenSSL command. The usr_cert block in the configuration file contains your X509 version 3 extensions.

openssl req -new -config openssl_rsa.cnf -extensions usr_cert -newkey rsa:2048 -days -365 -keyout private/test_cert_priv_key.pem -out csr/test_cert_.csr

Note: A CSR must provide either a subject name or a subject alternative name or the request will be rejected.

" + "documentation":"

The certificate signing request (CSR) for the certificate you want to issue. As an example, you can use the following OpenSSL command to create the CSR and a 2048 bit RSA private key.

openssl req -new -newkey rsa:2048 -days 365 -keyout private/test_cert_priv_key.pem -out csr/test_cert_.csr

If you have a configuration file, you can then use the following OpenSSL command. The usr_cert block in the configuration file contains your X509 version 3 extensions.

openssl req -new -config openssl_rsa.cnf -extensions usr_cert -newkey rsa:2048 -days -365 -keyout private/test_cert_priv_key.pem -out csr/test_cert_.csr

Note: A CSR must provide either a subject name or a subject alternative name or the request will be rejected.

" }, "SigningAlgorithm":{ "shape":"SigningAlgorithm", - "documentation":"

The name of the algorithm that will be used to sign the certificate to be issued.

This parameter should not be confused with the SigningAlgorithm parameter used to sign a CSR.

" + "documentation":"

The name of the algorithm that will be used to sign the certificate to be issued.

This parameter should not be confused with the SigningAlgorithm parameter used to sign a CSR in the CreateCertificateAuthority action.

" }, "TemplateArn":{ "shape":"Arn", - "documentation":"

Specifies a custom configuration template to use when issuing a certificate. If this parameter is not provided, ACM Private CA defaults to the EndEntityCertificate/V1 template. For CA certificates, you should choose the shortest path length that meets your needs. The path length is indicated by the PathLenN portion of the ARN, where N is the CA depth.

Note: The CA depth configured on a subordinate CA certificate must not exceed the limit set by its parents in the CA hierarchy.

The following service-owned TemplateArn values are supported by ACM Private CA:

For more information, see Using Templates.

" + "documentation":"

Specifies a custom configuration template to use when issuing a certificate. If this parameter is not provided, ACM Private CA defaults to the EndEntityCertificate/V1 template. For CA certificates, you should choose the shortest path length that meets your needs. The path length is indicated by the PathLenN portion of the ARN, where N is the CA depth.

Note: The CA depth configured on a subordinate CA certificate must not exceed the limit set by its parents in the CA hierarchy.

For a list of TemplateArn values supported by ACM Private CA, see Understanding Certificate Templates.

" }, "Validity":{ "shape":"Validity", - "documentation":"

Information describing the validity period of the certificate.

When issuing a certificate, ACM Private CA sets the \"Not Before\" date in the validity field to date and time minus 60 minutes. This is intended to compensate for time inconsistencies across systems of 60 minutes or less.

The validity period configured on a certificate must not exceed the limit set by its parents in the CA hierarchy.

" + "documentation":"

Information describing the end of the validity period of the certificate. This parameter sets the “Not After” date for the certificate.

Certificate validity is the period of time during which a certificate is valid. Validity can be expressed as an explicit date and time when the certificate expires, or as a span of time after issuance, stated in days, months, or years. For more information, see Validity in RFC 5280.

This value is unaffected when ValidityNotBefore is also specified. For example, if Validity is set to 20 days in the future, the certificate will expire 20 days from issuance time regardless of the ValidityNotBefore value.

The end of the validity period configured on a certificate must not exceed the limit set on its parents in the CA hierarchy.

" + }, + "ValidityNotBefore":{ + "shape":"Validity", + "documentation":"

Information describing the start of the validity period of the certificate. This parameter sets the “Not Before\" date for the certificate.

By default, when issuing a certificate, ACM Private CA sets the \"Not Before\" date to the issuance time minus 60 minutes. This compensates for clock inconsistencies across computer systems. The ValidityNotBefore parameter can be used to customize the “Not Before” value.

Unlike the Validity parameter, the ValidityNotBefore parameter is optional.

The ValidityNotBefore value is expressed as an explicit date and time, using the Validity type value ABSOLUTE. For more information, see Validity in this API reference and Validity in RFC 5280.

" }, "IdempotencyToken":{ "shape":"IdempotencyToken", - "documentation":"

Custom string that can be used to distinguish between calls to the IssueCertificate action. Idempotency tokens time out after one hour. Therefore, if you call IssueCertificate multiple times with the same idempotency token within 5 minutes, ACM Private CA recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, PCA recognizes that you are requesting multiple certificates.

" + "documentation":"

Alphanumeric string that can be used to distinguish between calls to the IssueCertificate action. Idempotency tokens for IssueCertificate time out after one minute. Therefore, if you call IssueCertificate multiple times with the same idempotency token within one minute, ACM Private CA recognizes that you are requesting only one certificate and will issue only one. If you change the idempotency token for each call, PCA recognizes that you are requesting multiple certificates.

" } } }, @@ -1486,6 +1570,49 @@ "member":{"shape":"Permission"}, "min":0 }, + "PolicyInformation":{ + "type":"structure", + "required":["CertPolicyId"], + "members":{ + "CertPolicyId":{ + "shape":"CustomObjectIdentifier", + "documentation":"

Specifies the object identifier (OID) of the certificate policy under which the certificate was issued. For more information, see NIST's definition of Object Identifier (OID).

" + }, + "PolicyQualifiers":{ + "shape":"PolicyQualifierInfoList", + "documentation":"

Modifies the given CertPolicyId with a qualifier. ACM Private CA supports the certification practice statement (CPS) qualifier.

" + } + }, + "documentation":"

Defines the X.509 CertificatePolicies extension.

" + }, + "PolicyQualifierId":{ + "type":"string", + "enum":["CPS"] + }, + "PolicyQualifierInfo":{ + "type":"structure", + "required":[ + "PolicyQualifierId", + "Qualifier" + ], + "members":{ + "PolicyQualifierId":{ + "shape":"PolicyQualifierId", + "documentation":"

Identifies the qualifier modifying a CertPolicyId.

" + }, + "Qualifier":{ + "shape":"Qualifier", + "documentation":"

Defines the qualifier type. ACM Private CA supports the use of a URI for a CPS qualifier in this field.

" + } + }, + "documentation":"

Modifies the CertPolicyId of a PolicyInformation object with a qualifier. ACM Private CA supports the certification practice statement (CPS) qualifier.

" + }, + "PolicyQualifierInfoList":{ + "type":"list", + "member":{"shape":"PolicyQualifierInfo"}, + "max":20, + "min":1 + }, "PositiveLong":{ "type":"long", "min":1 @@ -1509,10 +1636,21 @@ }, "Policy":{ "shape":"AWSPolicy", - "documentation":"

The path and filename of a JSON-formatted IAM policy to attach to the specified private CA resource. If this policy does not contain all required statements or if it includes any statement that is not allowed, the PutPolicy action returns an InvalidPolicyException. For information about IAM policy and statement structure, see Overview of JSON Policies.

" + "documentation":"

The path and file name of a JSON-formatted IAM policy to attach to the specified private CA resource. If this policy does not contain all required statements or if it includes any statement that is not allowed, the PutPolicy action returns an InvalidPolicyException. For information about IAM policy and statement structure, see Overview of JSON Policies.

" } } }, + "Qualifier":{ + "type":"structure", + "required":["CpsUri"], + "members":{ + "CpsUri":{ + "shape":"String256", + "documentation":"

Contains a pointer to a certification practice statement (CPS) published by the CA.

" + } + }, + "documentation":"

Defines a PolicyInformation qualifier. ACM Private CA supports the certification practice statement (CPS) qualifier defined in RFC 5280.

" + }, "RequestAlreadyProcessedException":{ "type":"structure", "members":{ @@ -1786,10 +1924,10 @@ }, "Type":{ "shape":"ValidityPeriodType", - "documentation":"

Determines how ACM Private CA interprets the Value parameter, an integer. Supported validity types include those listed below. Type definitions with values include a sample input value and the resulting output.

END_DATE: The specific date and time when the certificate will expire, expressed using UTCTime (YYMMDDHHMMSS) or GeneralizedTime (YYYYMMDDHHMMSS) format. When UTCTime is used, if the year field (YY) is greater than or equal to 50, the year is interpreted as 19YY. If the year field is less than 50, the year is interpreted as 20YY.

ABSOLUTE: The specific date and time when the certificate will expire, expressed in seconds since the Unix Epoch.

DAYS, MONTHS, YEARS: The relative time from the moment of issuance until the certificate will expire, expressed in days, months, or years.

Example if DAYS, issued on 10/12/2020 at 12:34:54 UTC:

The minimum validity duration for a certificate using relative time (DAYS) is one day. The minimum validity for a certificate using absolute time (ABSOLUTE or END_DATE) is one second.

" + "documentation":"

Determines how ACM Private CA interprets the Value parameter, an integer. Supported validity types include those listed below. Type definitions with values include a sample input value and the resulting output.

END_DATE: The specific date and time when the certificate will expire, expressed using UTCTime (YYMMDDHHMMSS) or GeneralizedTime (YYYYMMDDHHMMSS) format. When UTCTime is used, if the year field (YY) is greater than or equal to 50, the year is interpreted as 19YY. If the year field is less than 50, the year is interpreted as 20YY.

ABSOLUTE: The specific date and time when the validity of a certificate will start or expire, expressed in seconds since the Unix Epoch.

DAYS, MONTHS, YEARS: The relative time from the moment of issuance until the certificate will expire, expressed in days, months, or years.

Example if DAYS, issued on 10/12/2020 at 12:34:54 UTC:

The minimum validity duration for a certificate using relative time (DAYS) is one day. The minimum validity for a certificate using absolute time (ABSOLUTE or END_DATE) is one second.

" } }, - "documentation":"

Validity specifies the period of time during which a certificate is valid. Validity can be expressed as an explicit date and time when the certificate expires, or as a span of time after issuance, stated in days, months, or years. For more information, see Validity in RFC 5280.

You can issue a certificate by calling the IssueCertificate action.

" + "documentation":"

Validity specifies the period of time during which a certificate is valid. Validity can be expressed as an explicit date and time when the validity of a certificate starts or expires, or as a span of time after issuance, stated in days, months, or years. For more information, see Validity in RFC 5280.

ACM Private CA API consumes the Validity data type differently in two distinct parameters of the IssueCertificate action. The required parameter IssueCertificate:Validity specifies the end of a certificate's validity period. The optional parameter IssueCertificate:ValidityNotBefore specifies a customized starting time for the validity period.

" }, "ValidityPeriodType":{ "type":"string",