|
| 1 | +--- |
| 2 | +title: "Application-Level Certificates" |
| 3 | +linktitle: "Application-Level Certificates" |
| 4 | +url: /developerportal/deploy/application-level-certificates/ |
| 5 | +weight: 80 |
| 6 | +description: "Describe how Technical Contacts can configure and manage application-level (local) SSL/TLS certificates in Mendix Cloud." |
| 7 | + |
| 8 | +#To update these screenshots, you can log in with credentials detailed in How to Update Screenshots Using Team Apps. |
| 9 | +#If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. |
| 10 | +#Linked from Mendix Portal > Environments > Cloud Settings > Custom Domains |
| 11 | +--- |
| 12 | + |
| 13 | +## Introduction |
| 14 | + |
| 15 | +Mendix Cloud supports adding custom domains, such as `https://myapp.mycompany.com`, to your application environments. Each custom domain must be secured with an SSL/TLS certificate to enable HTTPS connections. |
| 16 | + |
| 17 | +This document describes how Technical Contacts can configure and manage application-level (local) certificates for their apps. |
| 18 | + |
| 19 | +{{% alert color="info" %}} |
| 20 | +This page covers incoming connections for application-level certificates. For centrally-managed certificates, refer to [Centralized Certificates](/developerportal/deploy/certificates/centralized-certificates/). For outgoing connection certificates, refer to [Outgoing Certificates](/developerportal/deploy/certificates/#outgoing-client-certificates). |
| 21 | +{{% /alert %}} |
| 22 | + |
| 23 | +This how-to explains how to do the following: |
| 24 | + |
| 25 | +* Generate a certificate request (CSR) |
| 26 | +* Upload an application-level certificate to Mendix Cloud |
| 27 | +* Renew an application-level certificate |
| 28 | + |
| 29 | +## Prerequisites |
| 30 | + |
| 31 | +Before starting this how-to, you need to have the following prerequisites: |
| 32 | + |
| 33 | +* Basic knowledge of DNS (Domain Name System) |
| 34 | +* Basic knowledge of SSL/TLS certificates: |
| 35 | + * What is an SSL/TLS certificate and what it is used for? |
| 36 | + * What is an intermediate certificate chain and what it is used for? |
| 37 | + * What is an SSL/TLS private key and what it is used for? |
| 38 | + * What is a certificate request and what it is used for? |
| 39 | +* Basic knowledge of certificate authorities (such as GeoTrust, Thawte, Verisign, RapidSSL, GoDaddy, Comodo) |
| 40 | + |
| 41 | +{{% alert color="info" %}} |
| 42 | +Custom certificates cannot be configured for Free Apps. |
| 43 | +{{% /alert %}} |
| 44 | + |
| 45 | +## Managing Custom Domain Certificates in Mendix Cloud |
| 46 | + |
| 47 | +A Mendix application can have multiple certificates. To manage application-level certificates, follow these steps: |
| 48 | + |
| 49 | +1. From [Apps](https://sprintr.home.mendix.com), go to the **Environments** page of your app. |
| 50 | +2. Click **Cloud Settings** ({{< icon name="settings-slider-1" >}}) from any of the [available tabs](/developerportal/deploy/environments/#available-tabs) to open the **Manage Cloud Settings** page. |
| 51 | +3. Switch to the **Custom Domains** tab. |
| 52 | + |
| 53 | +If you already have a signed SSL/TLS certificate, skip to [Uploading Your Own Custom Domain Certificate](#Uploading) below. |
| 54 | + |
| 55 | +## Obtaining a New Signed Certificate |
| 56 | + |
| 57 | +If you do not have an SSL/TLS certificate, you can order one from a certificate authority (such as GeoTrust, Thawte, Verisign, RapidSSL, GoDaddy, or Comodo). To get a signed SSL/TLS certificate from a certificate authority, you need to provide a CSR. |
| 58 | + |
| 59 | +A private SSL/TLS key and a CSR tied to that key can be created in Mendix Cloud for you. |
| 60 | + |
| 61 | +### Generating a Certificate Request {#Generating} |
| 62 | + |
| 63 | +{{% alert color="info" %}} |
| 64 | +When you generate a certificate request at the application level, the resulting certificate is managed locally and applies only to that application. Therefore, Mendix recommends that you do not use a wildcard (`*`) in the domain for which you are requesting a certificate. See [Can You Create a `*.mycompany.com` Wildcard Certificate?](/developerportal/deploy/certificates/#wildcard), for more information. |
| 65 | +{{% /alert %}} |
| 66 | + |
| 67 | +To create a CSR and an RSA (Rivest–Shamir–Adleman) encryption key, follow these steps: |
| 68 | + |
| 69 | +1. Click **Request Certificate** in the **Custom Domains** tab. |
| 70 | +2. In the **Request Certificate** wizard: |
| 71 | + 1. Review the information in **General Info**, then click **Next**. |
| 72 | + 2. Complete the required fields in **Generate**, then click **Next**. |
| 73 | + 3. In **PEM Format**, an SSL/TLS private key and a certificate request are generated and displayed in PEM (Privacy-Enhanced Mail) format. |
| 74 | + |
| 75 | + {{< figure src="/attachments/deployment/mendix-cloud-deploy/custom-domains/pem-format.png" >}} |
| 76 | + |
| 77 | + {{% alert color="info" %}}The SSL/TLS private key will be hidden after you upload it. To keep the key secure, it will be stored in Mendix Cloud's secure keystore; it will not be available for download, and it cannot be obtained by Mendix Support.{{% /alert %}} |
| 78 | + |
| 79 | +Once the CSR is generated, its name appears in the table on the **Custom Domains** tab. In the **Certificate Description** column, the name you provided during creation is followed by **Pending Customer Feedback** until the CSR is signed. The **Local/Central** column indicates whether the certificate is managed locally at the application level or centrally; in this case, it will display **Local**. |
| 80 | + |
| 81 | +You can now go to your certificate authority to get a signed SSL/TLS certificate. |
| 82 | + |
| 83 | +### Uploading a Signed Certificate{#Upload} |
| 84 | + |
| 85 | +Once you have a signed SSL/TLS certificate, you can upload it at the application-level by following these steps: |
| 86 | + |
| 87 | +1. Switch to the **Custom Domains** tab. |
| 88 | + |
| 89 | +2. Click the **More Options** ({{% icon name="three-dots-menu-horizontal" %}}) icon on the CSR of interest. |
| 90 | + |
| 91 | +3. Select **Details**. |
| 92 | + |
| 93 | +4. Click **Upload Signed Certificate**. |
| 94 | + |
| 95 | +5. Add a **Description** of your certificate. |
| 96 | + |
| 97 | +6. Paste the signed **TLS Certificate** (in PEM format). |
| 98 | + |
| 99 | +7. Paste an **Intermediate Certificate Chain**. While optional for modern browsers, it is mandatory for programmatic access and service consumption (like [OData services](/refguide/consumed-odata-services/)). The intermediate certificate chain is provided by your certificate authority. |
| 100 | + |
| 101 | + {{< figure src="/attachments/deployment/mendix-cloud-deploy/custom-domains/signed-certificate.png" width=80% class="no-border" >}} |
| 102 | + |
| 103 | +8. Click **Save** to complete the process. |
| 104 | + |
| 105 | +{{% alert color="warning" %}} |
| 106 | +The intermediate certificates of the main certificate authorities are included in the built-in CA databases of modern browsers. Therefore, you do not need to include an intermediate certificate to serve your website through SSL/TLS for users with modern browsers. |
| 107 | + |
| 108 | +However, intermediate certificate chains are mandatory for programmatic access and [service consumption](https://www.mendix.com/evaluation-guide/app-lifecycle/develop/integration/service-exposure/), and missing intermediate certificates will cause service consumption failures even when browser access works normally. Tools such as curl, programming languages, and operating systems do not automatically resolve missing intermediate certificates. |
| 109 | + |
| 110 | +You cannot predict how your users will attempt to connect to your website, and not including an intermediate certificate may result in connection issues for some users. To this end, Mendix recommends always including the intermediate certificate chain to ensure reliable connectivity for all use cases. |
| 111 | +{{% /alert %}} |
| 112 | + |
| 113 | +You can now configure your custom domain. See [Configuring a Custom Domain](/developerportal/deploy/custom-domains/#Configuring). |
| 114 | + |
| 115 | +{{% alert color="info" %}} |
| 116 | +After uploading, always verify your certificate using an SSL checker to identify any missing intermediate certificates before they cause service disruptions. |
| 117 | +{{% /alert %}} |
| 118 | + |
| 119 | +## Uploading Your Own Custom Domain Certificate{#Uploading} |
| 120 | + |
| 121 | +To upload an application-level custom domain certificate, you need to have the following prepared: |
| 122 | + |
| 123 | +* An SSL/TLS certificate that is self-signed or signed by your certificate authority |
| 124 | +* An intermediate certificate chain provided by your certificate authority |
| 125 | +* An SSL/TLS private key |
| 126 | + |
| 127 | +To upload the custom domain certificate, follow these steps: |
| 128 | + |
| 129 | +1. Click **Upload Certificate** in the **Custom Domains** tab. |
| 130 | +2. In the **Upload Certificate** wizard: |
| 131 | + 1. Review the information in **General Info**, then click **Next**. |
| 132 | + 2. Complete the required fields in **Upload**: |
| 133 | + * Add a **Description** for the certificate. |
| 134 | + * Paste the signed **TLS Certificate**. |
| 135 | + * Paste an **Intermediate Certificate Chain**. While optional for modern browsers, it is mandatory for programmatic access and service consumption (like [OData services](/refguide/consumed-odata-services/)). The intermediate certificate chain is provided by your certificate authority. |
| 136 | + * Paste the **TLS Private Key**. |
| 137 | + |
| 138 | +3. Click **Save** to upload your new custom domain certificate to Mendix Cloud automatically. |
| 139 | + |
| 140 | + {{% alert color="info" %}}The SSL/TLS private key will be hidden after you upload it. To keep the key secure, it will be stored in Mendix Cloud's secure keystore; it will not be available for download, and it cannot be obtained by Mendix Support.{{% /alert %}} |
| 141 | + |
| 142 | +Once the certificate is uploaded, you can configure your custom domain. For instructions, refer to [Configuring a Custom Domain](/developerportal/deploy/custom-domains/#Configuring). |
| 143 | + |
| 144 | +You can add as many certificates as you need. Each certificate will be listed with the description you gave it. Make sure to give them meaningful names so that you can identify them easily. |
| 145 | + |
| 146 | +## Renewing a Custom Domain Certificate{#method-2-renewing-by-updating-an-existing-custom-domain-certificate} |
| 147 | + |
| 148 | +Custom domain certificates have an expiry date. There are two methods for renewing an application-level custom domain certificate that is about to expire: |
| 149 | + |
| 150 | +* Create a new custom domain certificate (recommended) |
| 151 | + |
| 152 | +* Update an existing custom domain certificate |
| 153 | + |
| 154 | +### Method 1: Creating a New Custom Domain Certificate (Recommended) |
| 155 | + |
| 156 | +You can handle an expiring domain certificate by replacing it with a new one. You can do this in one of two ways: |
| 157 | + |
| 158 | +* Generate a new certificate request (for more information, see [Generating a Certificate Request for Your Custom Domain](#Generating)) |
| 159 | + |
| 160 | +* Upload a new custom domain certificate (for more information, see [Uploading Your Own Custom Domain Certificate](#Uploading)) |
| 161 | + |
| 162 | +You can now select the new certificate for your custom domain (for more information, see [Configuring a Custom Domain](/developerportal/deploy/custom-domains/#Configuring)). |
| 163 | + |
| 164 | +{{% alert color="info" %}} |
| 165 | +If you are rotating a certificate, you do not need to remove the current domain configuration when replacing the certificate. Selecting a new certificate for an existing domain will reconfigure the existing domain with the selected certificate. |
| 166 | +{{% /alert %}} |
| 167 | + |
| 168 | +### Method 2: Renewing by Updating an Existing Custom Domain Certificate |
| 169 | + |
| 170 | +You can do this by editing an existing application-level custom domain certificate. To update an existing custom domain certificate, follow these steps: |
| 171 | + |
| 172 | +1. Click the **More Options** ({{% icon name="three-dots-menu-horizontal" %}}) icon on the CSR of interest. |
| 173 | +2. Select **Edit**. |
| 174 | +3. Paste the signed **TLS Certificate**. |
| 175 | +4. Paste an **Intermediate Certificate Chain**. While optional for modern browsers, it is mandatory for programmatic access and service consumption (like [OData services](/refguide/consumed-odata-services/)). The intermediate certificate chain is provided by your certificate authority. |
| 176 | + |
| 177 | +{{% alert color="warning" %}} |
| 178 | +To edit an existing custom domain certificate, you need the following: |
| 179 | + |
| 180 | +* access to the certificate request that you created for the current certificate |
| 181 | +* [transport rights](/developerportal/deploy/node-permissions/#transport-rights) for all environments of the application |
| 182 | +{{% /alert %}} |
0 commit comments