/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the acm-pca-2017-08-22.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.ACMPCA.Model
{
///
/// Contains configuration information for a certificate revocation list (CRL). Your private
/// certificate authority (CA) creates base CRLs. Delta CRLs are not supported. You can
/// enable CRLs for your new or an existing private CA by setting the Enabled parameter
/// to true
. Your private CA writes CRLs to an S3 bucket that you specify
/// in the S3BucketName parameter. You can hide the name of your bucket by specifying
/// a value for the CustomCname parameter. Your private CA copies the CNAME or
/// the S3 bucket name to the CRL Distribution Points extension of each certificate
/// it issues. Your S3 bucket policy must give write permission to Amazon Web Services
/// Private CA.
///
///
///
/// Amazon Web Services Private CA assets that are stored in Amazon S3 can be protected
/// with encryption. For more information, see Encrypting
/// Your CRLs.
///
///
///
/// Your private CA uses the value in the ExpirationInDays parameter to calculate
/// the nextUpdate field in the CRL. The CRL is refreshed prior to a certificate's
/// expiration date or when a certificate is revoked. When a certificate is revoked, it
/// appears in the CRL until the certificate expires, and then in one additional CRL after
/// expiration, and it always appears in the audit report.
///
///
///
/// A CRL is typically updated approximately 30 minutes after a certificate is revoked.
/// If for any reason a CRL update fails, Amazon Web Services Private CA makes further
/// attempts every 15 minutes.
///
///
///
/// CRLs contain the following fields:
///
/// -
///
/// Version: The current version number defined in RFC 5280 is V2. The integer
/// value is 0x1.
///
///
-
///
/// Signature Algorithm: The name of the algorithm used to sign the CRL.
///
///
-
///
/// Issuer: The X.500 distinguished name of your private CA that issued the CRL.
///
///
-
///
/// Last Update: The issue date and time of this CRL.
///
///
-
///
/// Next Update: The day and time by which the next CRL will be issued.
///
///
-
///
/// Revoked Certificates: List of revoked certificates. Each list item contains
/// the following information.
///
///
-
///
/// Serial Number: The serial number, in hexadecimal format, of the revoked certificate.
///
///
-
///
/// Revocation Date: Date and time the certificate was revoked.
///
///
-
///
/// CRL Entry Extensions: Optional extensions for the CRL entry.
///
///
-
///
/// X509v3 CRL Reason Code: Reason the certificate was revoked.
///
///
-
///
/// CRL Extensions: Optional extensions for the CRL.
///
///
-
///
/// X509v3 Authority Key Identifier: Identifies the public key associated with
/// the private key used to sign the certificate.
///
///
-
///
/// X509v3 CRL Number:: Decimal sequence number for the CRL.
///
///
-
///
/// Signature Algorithm: Algorithm used by your private CA to sign the CRL.
///
///
-
///
/// Signature Value: Signature computed over the CRL.
///
///
///
/// Certificate revocation lists created by Amazon Web Services Private CA are DER-encoded.
/// You can use the following OpenSSL command to list a CRL.
///
///
///
/// openssl crl -inform DER -text -in crl_path -noout
///
///
///
/// For more information, see Planning
/// a certificate revocation list (CRL) in the Amazon Web Services Private Certificate
/// Authority User Guide
///
///
public partial class CrlConfiguration
{
private string _customCname;
private bool? _enabled;
private int? _expirationInDays;
private string _s3BucketName;
private S3ObjectAcl _s3ObjectAcl;
///
/// Gets and sets the property CustomCname.
///
/// Name inserted into the certificate CRL Distribution Points extension that enables
/// the use of an alias for the CRL distribution point. Use this value if you don't want
/// the name of your S3 bucket to be public.
///
///
///
/// The content of a Canonical Name (CNAME) record must conform to RFC2396
/// restrictions on the use of special characters in URIs. Additionally, the value of
/// the CNAME must not include a protocol prefix such as "http://" or "https://".
///
///
///
[AWSProperty(Min=0, Max=253)]
public string CustomCname
{
get { return this._customCname; }
set { this._customCname = value; }
}
// Check to see if CustomCname property is set
internal bool IsSetCustomCname()
{
return this._customCname != null;
}
///
/// Gets and sets the property Enabled.
///
/// Boolean value that specifies whether certificate revocation lists (CRLs) are enabled.
/// You can use this value to enable certificate revocation for a new CA when you call
/// the CreateCertificateAuthority
/// action or for an existing CA when you call the UpdateCertificateAuthority
/// action.
///
///
[AWSProperty(Required=true)]
public bool Enabled
{
get { return this._enabled.GetValueOrDefault(); }
set { this._enabled = value; }
}
// Check to see if Enabled property is set
internal bool IsSetEnabled()
{
return this._enabled.HasValue;
}
///
/// Gets and sets the property ExpirationInDays.
///
/// Validity period of the CRL in days.
///
///
[AWSProperty(Min=1, Max=5000)]
public int ExpirationInDays
{
get { return this._expirationInDays.GetValueOrDefault(); }
set { this._expirationInDays = value; }
}
// Check to see if ExpirationInDays property is set
internal bool IsSetExpirationInDays()
{
return this._expirationInDays.HasValue;
}
///
/// Gets and sets the property S3BucketName.
///
/// Name of the S3 bucket that contains the CRL. If you do not provide a value for the
/// CustomCname argument, the name of your S3 bucket is placed into the CRL
/// Distribution Points extension of the issued certificate. You can change the name
/// of your bucket by calling the UpdateCertificateAuthority
/// operation. You must specify a bucket
/// policy that allows Amazon Web Services Private CA to write the CRL to your bucket.
///
///
///
/// The S3BucketName
parameter must conform to the S3
/// bucket naming rules.
///
///
///
[AWSProperty(Min=3, Max=255)]
public string S3BucketName
{
get { return this._s3BucketName; }
set { this._s3BucketName = value; }
}
// Check to see if S3BucketName property is set
internal bool IsSetS3BucketName()
{
return this._s3BucketName != null;
}
///
/// Gets and sets the property S3ObjectAcl.
///
/// Determines whether the CRL will be publicly readable or privately held in the CRL
/// Amazon S3 bucket. If you choose PUBLIC_READ, the CRL will be accessible over the public
/// internet. If you choose BUCKET_OWNER_FULL_CONTROL, only the owner of the CRL S3 bucket
/// can access the CRL, and your PKI clients may need an alternative method of access.
///
///
///
///
/// If no value is specified, the default is PUBLIC_READ
.
///
///
///
/// Note: This default can cause CA creation to fail in some circumstances. If
/// you have have enabled the Block Public Access (BPA) feature in your S3 account, then
/// you must specify the value of this parameter as BUCKET_OWNER_FULL_CONTROL
,
/// and not doing so results in an error. If you have disabled BPA in S3, then you can
/// specify either BUCKET_OWNER_FULL_CONTROL
or PUBLIC_READ
/// as the value.
///
///
///
/// For more information, see Blocking
/// public access to the S3 bucket.
///
///
public S3ObjectAcl S3ObjectAcl
{
get { return this._s3ObjectAcl; }
set { this._s3ObjectAcl = value; }
}
// Check to see if S3ObjectAcl property is set
internal bool IsSetS3ObjectAcl()
{
return this._s3ObjectAcl != null;
}
}
}