/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Utils { namespace Xml { class XmlNode; } // namespace Xml } // namespace Utils namespace CloudFront { namespace Model { /** *

A complex type that determines the distribution’s SSL/TLS configuration for * communicating with viewers.

If the distribution doesn’t use * Aliases (also known as alternate domain names or CNAMEs)—that is, * if the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net—set * CloudFrontDefaultCertificate to true and leave all * other fields empty.

If the distribution uses Aliases * (alternate domain names or CNAMEs), use the fields in this type to specify the * following settings:

  • Which viewers the distribution accepts * HTTPS connections from: only viewers that support server name * indication (SNI) (recommended), or all viewers including those that don’t * support SNI.

    • To accept HTTPS connections from only viewers that * support SNI, set SSLSupportMethod to sni-only. This is * recommended. Most browsers and clients support SNI.

    • To accept * HTTPS connections from all viewers, including those that don’t support SNI, set * SSLSupportMethod to vip. This is not recommended, and * results in additional monthly charges from CloudFront.

  • *
  • The minimum SSL/TLS protocol version that the distribution can use to * communicate with viewers. To specify a minimum version, choose a value for * MinimumProtocolVersion. For more information, see Security * Policy in the Amazon CloudFront Developer Guide.

  • *

    The location of the SSL/TLS certificate, AWS * Certificate Manager (ACM) (recommended) or AWS * Identity and Access Management (AWS IAM). You specify the location by * setting a value in one of the following fields (not both):

    • * ACMCertificateArn

    • IAMCertificateId *

All distributions support HTTPS connections from * viewers. To require viewers to use HTTPS only, or to redirect them from HTTP to * HTTPS, use ViewerProtocolPolicy in the CacheBehavior * or DefaultCacheBehavior. To specify how CloudFront should use * SSL/TLS to communicate with your custom origin, use * CustomOriginConfig.

For more information, see Using * HTTPS with CloudFront and * Using Alternate Domain Names and HTTPS in the Amazon CloudFront Developer * Guide.

See Also:

AWS * API Reference

*/ class AWS_CLOUDFRONT_API ViewerCertificate { public: ViewerCertificate(); ViewerCertificate(const Aws::Utils::Xml::XmlNode& xmlNode); ViewerCertificate& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); void AddToNode(Aws::Utils::Xml::XmlNode& parentNode) const; /** *

If the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net, set this field to * true.

If the distribution uses Aliases * (alternate domain names or CNAMEs), set this field to false and * specify values for the following fields:

  • * ACMCertificateArn or IAMCertificateId (specify a value * for one, not both)

  • MinimumProtocolVersion

    *
  • SSLSupportMethod

*/ inline bool GetCloudFrontDefaultCertificate() const{ return m_cloudFrontDefaultCertificate; } /** *

If the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net, set this field to * true.

If the distribution uses Aliases * (alternate domain names or CNAMEs), set this field to false and * specify values for the following fields:

  • * ACMCertificateArn or IAMCertificateId (specify a value * for one, not both)

  • MinimumProtocolVersion

    *
  • SSLSupportMethod

*/ inline bool CloudFrontDefaultCertificateHasBeenSet() const { return m_cloudFrontDefaultCertificateHasBeenSet; } /** *

If the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net, set this field to * true.

If the distribution uses Aliases * (alternate domain names or CNAMEs), set this field to false and * specify values for the following fields:

  • * ACMCertificateArn or IAMCertificateId (specify a value * for one, not both)

  • MinimumProtocolVersion

    *
  • SSLSupportMethod

*/ inline void SetCloudFrontDefaultCertificate(bool value) { m_cloudFrontDefaultCertificateHasBeenSet = true; m_cloudFrontDefaultCertificate = value; } /** *

If the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net, set this field to * true.

If the distribution uses Aliases * (alternate domain names or CNAMEs), set this field to false and * specify values for the following fields:

  • * ACMCertificateArn or IAMCertificateId (specify a value * for one, not both)

  • MinimumProtocolVersion

    *
  • SSLSupportMethod

*/ inline ViewerCertificate& WithCloudFrontDefaultCertificate(bool value) { SetCloudFrontDefaultCertificate(value); return *this;} /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Identity and Access Management (AWS IAM), provide the ID of the IAM * certificate.

If you specify an IAM certificate ID, you must also specify * values for MinimumProtocolVerison and * SSLSupportMethod.

*/ inline const Aws::String& GetIAMCertificateId() const{ return m_iAMCertificateId; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Identity and Access Management (AWS IAM), provide the ID of the IAM * certificate.

If you specify an IAM certificate ID, you must also specify * values for MinimumProtocolVerison and * SSLSupportMethod.

*/ inline bool IAMCertificateIdHasBeenSet() const { return m_iAMCertificateIdHasBeenSet; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Identity and Access Management (AWS IAM), provide the ID of the IAM * certificate.

If you specify an IAM certificate ID, you must also specify * values for MinimumProtocolVerison and * SSLSupportMethod.

*/ inline void SetIAMCertificateId(const Aws::String& value) { m_iAMCertificateIdHasBeenSet = true; m_iAMCertificateId = value; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Identity and Access Management (AWS IAM), provide the ID of the IAM * certificate.

If you specify an IAM certificate ID, you must also specify * values for MinimumProtocolVerison and * SSLSupportMethod.

*/ inline void SetIAMCertificateId(Aws::String&& value) { m_iAMCertificateIdHasBeenSet = true; m_iAMCertificateId = std::move(value); } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Identity and Access Management (AWS IAM), provide the ID of the IAM * certificate.

If you specify an IAM certificate ID, you must also specify * values for MinimumProtocolVerison and * SSLSupportMethod.

*/ inline void SetIAMCertificateId(const char* value) { m_iAMCertificateIdHasBeenSet = true; m_iAMCertificateId.assign(value); } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Identity and Access Management (AWS IAM), provide the ID of the IAM * certificate.

If you specify an IAM certificate ID, you must also specify * values for MinimumProtocolVerison and * SSLSupportMethod.

*/ inline ViewerCertificate& WithIAMCertificateId(const Aws::String& value) { SetIAMCertificateId(value); return *this;} /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Identity and Access Management (AWS IAM), provide the ID of the IAM * certificate.

If you specify an IAM certificate ID, you must also specify * values for MinimumProtocolVerison and * SSLSupportMethod.

*/ inline ViewerCertificate& WithIAMCertificateId(Aws::String&& value) { SetIAMCertificateId(std::move(value)); return *this;} /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Identity and Access Management (AWS IAM), provide the ID of the IAM * certificate.

If you specify an IAM certificate ID, you must also specify * values for MinimumProtocolVerison and * SSLSupportMethod.

*/ inline ViewerCertificate& WithIAMCertificateId(const char* value) { SetIAMCertificateId(value); return *this;} /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Certificate Manager (ACM), provide the Amazon Resource Name (ARN) of the ACM * certificate. CloudFront only supports ACM certificates in the US East (N. * Virginia) Region (us-east-1).

If you specify an ACM * certificate ARN, you must also specify values for * MinimumProtocolVerison and SSLSupportMethod.

*/ inline const Aws::String& GetACMCertificateArn() const{ return m_aCMCertificateArn; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Certificate Manager (ACM), provide the Amazon Resource Name (ARN) of the ACM * certificate. CloudFront only supports ACM certificates in the US East (N. * Virginia) Region (us-east-1).

If you specify an ACM * certificate ARN, you must also specify values for * MinimumProtocolVerison and SSLSupportMethod.

*/ inline bool ACMCertificateArnHasBeenSet() const { return m_aCMCertificateArnHasBeenSet; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Certificate Manager (ACM), provide the Amazon Resource Name (ARN) of the ACM * certificate. CloudFront only supports ACM certificates in the US East (N. * Virginia) Region (us-east-1).

If you specify an ACM * certificate ARN, you must also specify values for * MinimumProtocolVerison and SSLSupportMethod.

*/ inline void SetACMCertificateArn(const Aws::String& value) { m_aCMCertificateArnHasBeenSet = true; m_aCMCertificateArn = value; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Certificate Manager (ACM), provide the Amazon Resource Name (ARN) of the ACM * certificate. CloudFront only supports ACM certificates in the US East (N. * Virginia) Region (us-east-1).

If you specify an ACM * certificate ARN, you must also specify values for * MinimumProtocolVerison and SSLSupportMethod.

*/ inline void SetACMCertificateArn(Aws::String&& value) { m_aCMCertificateArnHasBeenSet = true; m_aCMCertificateArn = std::move(value); } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Certificate Manager (ACM), provide the Amazon Resource Name (ARN) of the ACM * certificate. CloudFront only supports ACM certificates in the US East (N. * Virginia) Region (us-east-1).

If you specify an ACM * certificate ARN, you must also specify values for * MinimumProtocolVerison and SSLSupportMethod.

*/ inline void SetACMCertificateArn(const char* value) { m_aCMCertificateArnHasBeenSet = true; m_aCMCertificateArn.assign(value); } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Certificate Manager (ACM), provide the Amazon Resource Name (ARN) of the ACM * certificate. CloudFront only supports ACM certificates in the US East (N. * Virginia) Region (us-east-1).

If you specify an ACM * certificate ARN, you must also specify values for * MinimumProtocolVerison and SSLSupportMethod.

*/ inline ViewerCertificate& WithACMCertificateArn(const Aws::String& value) { SetACMCertificateArn(value); return *this;} /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Certificate Manager (ACM), provide the Amazon Resource Name (ARN) of the ACM * certificate. CloudFront only supports ACM certificates in the US East (N. * Virginia) Region (us-east-1).

If you specify an ACM * certificate ARN, you must also specify values for * MinimumProtocolVerison and SSLSupportMethod.

*/ inline ViewerCertificate& WithACMCertificateArn(Aws::String&& value) { SetACMCertificateArn(std::move(value)); return *this;} /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs) and the SSL/TLS certificate is stored in AWS * Certificate Manager (ACM), provide the Amazon Resource Name (ARN) of the ACM * certificate. CloudFront only supports ACM certificates in the US East (N. * Virginia) Region (us-east-1).

If you specify an ACM * certificate ARN, you must also specify values for * MinimumProtocolVerison and SSLSupportMethod.

*/ inline ViewerCertificate& WithACMCertificateArn(const char* value) { SetACMCertificateArn(value); return *this;} /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify which viewers the distribution accepts HTTPS connections * from.

  • sni-only – The distribution accepts HTTPS * connections from only viewers that support server name * indication (SNI). This is recommended. Most browsers and clients support * SNI.

  • vip – The distribution accepts HTTPS * connections from all viewers including those that don’t support SNI. This is not * recommended, and results in additional monthly charges from CloudFront.

    *

If the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net, don’t set a value for this * field.

*/ inline const SSLSupportMethod& GetSSLSupportMethod() const{ return m_sSLSupportMethod; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify which viewers the distribution accepts HTTPS connections * from.

  • sni-only – The distribution accepts HTTPS * connections from only viewers that support server name * indication (SNI). This is recommended. Most browsers and clients support * SNI.

  • vip – The distribution accepts HTTPS * connections from all viewers including those that don’t support SNI. This is not * recommended, and results in additional monthly charges from CloudFront.

    *

If the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net, don’t set a value for this * field.

*/ inline bool SSLSupportMethodHasBeenSet() const { return m_sSLSupportMethodHasBeenSet; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify which viewers the distribution accepts HTTPS connections * from.

  • sni-only – The distribution accepts HTTPS * connections from only viewers that support server name * indication (SNI). This is recommended. Most browsers and clients support * SNI.

  • vip – The distribution accepts HTTPS * connections from all viewers including those that don’t support SNI. This is not * recommended, and results in additional monthly charges from CloudFront.

    *

If the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net, don’t set a value for this * field.

*/ inline void SetSSLSupportMethod(const SSLSupportMethod& value) { m_sSLSupportMethodHasBeenSet = true; m_sSLSupportMethod = value; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify which viewers the distribution accepts HTTPS connections * from.

  • sni-only – The distribution accepts HTTPS * connections from only viewers that support server name * indication (SNI). This is recommended. Most browsers and clients support * SNI.

  • vip – The distribution accepts HTTPS * connections from all viewers including those that don’t support SNI. This is not * recommended, and results in additional monthly charges from CloudFront.

    *

If the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net, don’t set a value for this * field.

*/ inline void SetSSLSupportMethod(SSLSupportMethod&& value) { m_sSLSupportMethodHasBeenSet = true; m_sSLSupportMethod = std::move(value); } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify which viewers the distribution accepts HTTPS connections * from.

  • sni-only – The distribution accepts HTTPS * connections from only viewers that support server name * indication (SNI). This is recommended. Most browsers and clients support * SNI.

  • vip – The distribution accepts HTTPS * connections from all viewers including those that don’t support SNI. This is not * recommended, and results in additional monthly charges from CloudFront.

    *

If the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net, don’t set a value for this * field.

*/ inline ViewerCertificate& WithSSLSupportMethod(const SSLSupportMethod& value) { SetSSLSupportMethod(value); return *this;} /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify which viewers the distribution accepts HTTPS connections * from.

  • sni-only – The distribution accepts HTTPS * connections from only viewers that support server name * indication (SNI). This is recommended. Most browsers and clients support * SNI.

  • vip – The distribution accepts HTTPS * connections from all viewers including those that don’t support SNI. This is not * recommended, and results in additional monthly charges from CloudFront.

    *

If the distribution uses the CloudFront domain name such as * d111111abcdef8.cloudfront.net, don’t set a value for this * field.

*/ inline ViewerCertificate& WithSSLSupportMethod(SSLSupportMethod&& value) { SetSSLSupportMethod(std::move(value)); return *this;} /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify the security policy that you want CloudFront to use for HTTPS * connections with viewers. The security policy determines two settings:

    *
  • The minimum SSL/TLS protocol that CloudFront can use to communicate with * viewers.

  • The ciphers that CloudFront can use to encrypt the * content that it returns to viewers.

For more information, see * Security * Policy and Supported * Protocols and Ciphers Between Viewers and CloudFront in the Amazon * CloudFront Developer Guide.

On the CloudFront console, this * setting is called Security Policy.

When you’re using SNI * only (you set SSLSupportMethod to sni-only), you must * specify TLSv1 or higher.

If the distribution uses the * CloudFront domain name such as d111111abcdef8.cloudfront.net (you * set CloudFrontDefaultCertificate to true), CloudFront * automatically sets the security policy to TLSv1 regardless of the * value that you set here.

*/ inline const MinimumProtocolVersion& GetMinimumProtocolVersion() const{ return m_minimumProtocolVersion; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify the security policy that you want CloudFront to use for HTTPS * connections with viewers. The security policy determines two settings:

    *
  • The minimum SSL/TLS protocol that CloudFront can use to communicate with * viewers.

  • The ciphers that CloudFront can use to encrypt the * content that it returns to viewers.

For more information, see * Security * Policy and Supported * Protocols and Ciphers Between Viewers and CloudFront in the Amazon * CloudFront Developer Guide.

On the CloudFront console, this * setting is called Security Policy.

When you’re using SNI * only (you set SSLSupportMethod to sni-only), you must * specify TLSv1 or higher.

If the distribution uses the * CloudFront domain name such as d111111abcdef8.cloudfront.net (you * set CloudFrontDefaultCertificate to true), CloudFront * automatically sets the security policy to TLSv1 regardless of the * value that you set here.

*/ inline bool MinimumProtocolVersionHasBeenSet() const { return m_minimumProtocolVersionHasBeenSet; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify the security policy that you want CloudFront to use for HTTPS * connections with viewers. The security policy determines two settings:

    *
  • The minimum SSL/TLS protocol that CloudFront can use to communicate with * viewers.

  • The ciphers that CloudFront can use to encrypt the * content that it returns to viewers.

For more information, see * Security * Policy and Supported * Protocols and Ciphers Between Viewers and CloudFront in the Amazon * CloudFront Developer Guide.

On the CloudFront console, this * setting is called Security Policy.

When you’re using SNI * only (you set SSLSupportMethod to sni-only), you must * specify TLSv1 or higher.

If the distribution uses the * CloudFront domain name such as d111111abcdef8.cloudfront.net (you * set CloudFrontDefaultCertificate to true), CloudFront * automatically sets the security policy to TLSv1 regardless of the * value that you set here.

*/ inline void SetMinimumProtocolVersion(const MinimumProtocolVersion& value) { m_minimumProtocolVersionHasBeenSet = true; m_minimumProtocolVersion = value; } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify the security policy that you want CloudFront to use for HTTPS * connections with viewers. The security policy determines two settings:

    *
  • The minimum SSL/TLS protocol that CloudFront can use to communicate with * viewers.

  • The ciphers that CloudFront can use to encrypt the * content that it returns to viewers.

For more information, see * Security * Policy and Supported * Protocols and Ciphers Between Viewers and CloudFront in the Amazon * CloudFront Developer Guide.

On the CloudFront console, this * setting is called Security Policy.

When you’re using SNI * only (you set SSLSupportMethod to sni-only), you must * specify TLSv1 or higher.

If the distribution uses the * CloudFront domain name such as d111111abcdef8.cloudfront.net (you * set CloudFrontDefaultCertificate to true), CloudFront * automatically sets the security policy to TLSv1 regardless of the * value that you set here.

*/ inline void SetMinimumProtocolVersion(MinimumProtocolVersion&& value) { m_minimumProtocolVersionHasBeenSet = true; m_minimumProtocolVersion = std::move(value); } /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify the security policy that you want CloudFront to use for HTTPS * connections with viewers. The security policy determines two settings:

    *
  • The minimum SSL/TLS protocol that CloudFront can use to communicate with * viewers.

  • The ciphers that CloudFront can use to encrypt the * content that it returns to viewers.

For more information, see * Security * Policy and Supported * Protocols and Ciphers Between Viewers and CloudFront in the Amazon * CloudFront Developer Guide.

On the CloudFront console, this * setting is called Security Policy.

When you’re using SNI * only (you set SSLSupportMethod to sni-only), you must * specify TLSv1 or higher.

If the distribution uses the * CloudFront domain name such as d111111abcdef8.cloudfront.net (you * set CloudFrontDefaultCertificate to true), CloudFront * automatically sets the security policy to TLSv1 regardless of the * value that you set here.

*/ inline ViewerCertificate& WithMinimumProtocolVersion(const MinimumProtocolVersion& value) { SetMinimumProtocolVersion(value); return *this;} /** *

If the distribution uses Aliases (alternate domain names or * CNAMEs), specify the security policy that you want CloudFront to use for HTTPS * connections with viewers. The security policy determines two settings:

    *
  • The minimum SSL/TLS protocol that CloudFront can use to communicate with * viewers.

  • The ciphers that CloudFront can use to encrypt the * content that it returns to viewers.

For more information, see * Security * Policy and Supported * Protocols and Ciphers Between Viewers and CloudFront in the Amazon * CloudFront Developer Guide.

On the CloudFront console, this * setting is called Security Policy.

When you’re using SNI * only (you set SSLSupportMethod to sni-only), you must * specify TLSv1 or higher.

If the distribution uses the * CloudFront domain name such as d111111abcdef8.cloudfront.net (you * set CloudFrontDefaultCertificate to true), CloudFront * automatically sets the security policy to TLSv1 regardless of the * value that you set here.

*/ inline ViewerCertificate& WithMinimumProtocolVersion(MinimumProtocolVersion&& value) { SetMinimumProtocolVersion(std::move(value)); return *this;} private: bool m_cloudFrontDefaultCertificate; bool m_cloudFrontDefaultCertificateHasBeenSet; Aws::String m_iAMCertificateId; bool m_iAMCertificateIdHasBeenSet; Aws::String m_aCMCertificateArn; bool m_aCMCertificateArnHasBeenSet; SSLSupportMethod m_sSLSupportMethod; bool m_sSLSupportMethodHasBeenSet; MinimumProtocolVersion m_minimumProtocolVersion; bool m_minimumProtocolVersionHasBeenSet; }; } // namespace Model } // namespace CloudFront } // namespace Aws