Utilizzo delle associazioni dominio personalizzate

I mapping di dominio forniscono il percorso URL all'applicazione o alla funzione Code Engine all'interno di un progetto. Con Code Engine, queste mappature vengono create automaticamente, per impostazione predefinita, ogni volta che si distribuisce un'applicazione o si crea una funzione. Tuttavia, è possibile mappare un dominio personalizzato a un'applicazione o a una funzione di Code Engine. Questa opzione instrada le richieste dal sito URL personalizzato all'applicazione o alla funzione. È possibile utilizzare la console o la CLI di Code Engine.

Se vuoi puntare alla tua applicazione o funzione Code Engine con un dominio di tua proprietà, puoi utilizzare un'associazione di dominio personalizzata. Quando si imposta una mappatura di dominio personalizzata in Code Engine, si definisce una mappatura uno-a-uno tra il proprio nome di dominio completamente qualificato (FQDN) e un'applicazione o una funzione di Code Engine nel progetto.

Un'associazione dominio personalizzata deve puntare a una sola applicazione o funzione Code Engine. Tuttavia, è possibile configurare più associazioni dominio a una singola applicazione o funzione.

Per utilizzare le associazioni di dominio personalizzate in Code Engine, completa la seguente procedura. Nota che alcuni passi vengono completati all'esterno di Code Engine.

  1. Esamina le Considerazioni prima di utilizzare le associazioni di dominio personalizzate in Code Engine.
  2. Ottieni il dominio personalizzato da un registrar di dominio (esterno a Code Engine).
  3. Configurare una mappatura di dominio personalizzata in Code Engine per la propria applicazione o funzione(dalla console o dalla CLI di Code Engine ).
  4. Completare la configurazione del dominio personalizzato con il proprio registrar di domini (al di fuori di Code Engine ).

Dopo aver completato l'impostazione del dominio personalizzato con la società di registrazione del dominio e aver configurato una mappatura del dominio per l'applicazione o la funzione in Code Engine, verificare la mappatura del dominio.

In Code Engine, puoi visualizzare, aggiornare o eliminare le associazioni del dominio alle tue applicazioni o funzioni.

Considerazioni prima di utilizzare le associazioni di dominio personalizzate in Code Engine

Prima di implementare le associazioni di dominio personalizzate in Code Engine, tieni presente quanto segue:

  • Utilizzare solo mappature di dominio personalizzate per i domini protetti da un certificato SSL/TLS, firmato da un'autorità di certificazione (CA) pubblica e affidabile.
  • È possibile definire associazioni di dominio personalizzate che puntano a nomi di dominio pubblici.
  • Se il vostro nome di dominio può essere risolto solo da un sistema di nomi di dominio (DNS) non pubblico, fornite un certificato che elenchi il nome di dominio e sia firmato da una CA pubblica e affidabile.
  • Fornire l' intera catena di certificati, a partire dal certificato che corrisponde al dominio personalizzato, seguito da tutti i certificati intermedi fino al certificato radice.
  • Non è possibile utilizzare certificati autofirmati.
  • Non è possibile utilizzare certificati firmati da una CA aziendale non attendibile o non pubblica.
  • Il certificato deve avere una data di scadenza impostata.

Ottenimento di un dominio personalizzato e del relativo certificato TLS e chiave privata

Prima di configurare le associazioni di dominio personalizzate in Code Engine, devi prima ottenere il dominio personalizzato da un registrar di dominio (esterno a Code Engine).

  1. Da un registrar di dominio, ottenere il proprio dominio personalizzato; ad esempio, www.example.com.
  2. Ottenere il certificato SSL/TLS per il dominio personalizzato:
    • È possibile creare un certificato non autocertificato utilizzando il servizio Let's Encrypt e Certbot. Se il dominio personalizzato è sotto il vostro controllo e volete creare rapidamente un certificato, potete usare Certbot e i servizi Let's Encrypt per ottenere un certificato.

    • È possibile ottenere un certificato firmato da un'autorità affidabile. Questo tipo di certificato digitale viene utilizzato per stabilire la riservatezza delle comunicazioni tra un server e un client. Questi certificati contengono informazioni utilizzate per creare connessioni affidabili e sicure tra gli endpoint. È inoltre necessario ottenere una chiave privata corrispondente per il certificato TLS.

      È possibile ottenere il certificato e la chiave dalla propria CA. Ottenere un certificato SSL/TLS firmato per il dominio personalizzato. Per motivi di sicurezza, Code Engine supporta solo i mapping di dominio personalizzati configurati con un certificato TLS/SSL firmato da una CA pubblica e affidabile.

      È inoltre possibile ottenere il certificato e la chiave da Cloud Internet Services (CIS) ordinando un certificato di origine se la gestione del dominio personalizzato è stata delegata a CIS. Seguendo questo approccio, si applica la modalità TLS flessibile End-to-End.

Come posso utilizzare Certbot e il servizio Let's Encrypt per il mio dominio personalizzato?

In un ambiente aziendale, collaborare con l'amministratore del dominio aziendale per ottenere i certificati necessari. Tuttavia, se il dominio personalizzato è sotto il vostro controllo e volete un certificato rapido, potete usare Certbot e il servizio Let's Encrypt per ottenere un certificato:

  1. Installare Certbot. Certbot è il client per il protocollo ACME(Automatic Certificate Management Environment) per l'automazione delle interazioni tra una CA e un server. Il servizio Let' s Encrypt utilizza questo client per verificare la proprietà del dominio ed emettere i certificati. Dalla documentazione di Certbot, seleziona Other come software e seleziona il sistema operativo per la tua workstation per ottenere le informazioni applicabili per installare la riga di comando Certbot.

  2. Eseguite il seguente comando per creare il vostro certificato. Questo comando di esempio crea un certificato per i domini personalizzati example.com e www.example.com. Assicurarsi di aggiornare il comando per il proprio dominio personalizzato.

    certbot certonly --manual --preferred-challenges dns --email webmaster@example.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --domain example.com --domain www.example.com
    
  3. Per verificare di essere il tuo proprietario del dominio, imposta un record TXT con il tuo registrar del dominio per i domini che hai richiesto nel passo precedente con i valori forniti con l'output dello strumento Certbot; ad esempio, _acme_challenge.example.com e _acme_challenge.ww.example.com. Dopo aver impostato il record TXT, continuare con il comando Certbot.

  4. Certbot recupera il certificato firmato da Let' s Encrypt. L'ubicazione in cui è memorizzato il certificato è fornita dall'output Certbot. Individuare i file fullchain.pem e privkey.pem.

Comando di esempio per eseguire Certbot su un sistema Ubuntu

sudo certbot certonly --manual --preferred-challenges dns --email webmaster@example.com --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --domain example.com --domain www.example.com

Output di esempio per la richiesta di certificato per example.com e www.example.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
_acme-challenge.example.com.
with the following value:
<MASKED>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name:
_acme-challenge.www.example.com
with the following value:
<MASKED>
(This must be set up in addition to the previous challenges; do not remove,
replace, or undo the previous challenge tasks yet. Note that you might be
asked to create multiple distinct TXT records with the same name. This is
permitted by DNS standards.)
Before continuing, verify the TXT record has been deployed. Depending on the DNS
provider, this may take some time, from a few seconds to multiple minutes. You can
check if it has finished deploying with aid of online tools, such as the Google
Admin Toolbox: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.www.example.com.
Look for one or more bolded line(s) below the line ';ANSWER'. It should show the
value(s) you've just added.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/example.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/example.com/privkey.pem
This certificate expires on 2023-02-01.
These files will be updated when the certificate renews.
NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
 * Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Il certificato è pronto.

Come posso utilizzare un certificato di origine ottenuto dal mio CIS per il mio dominio personalizzato?

Se il certificato e la chiave vengono ottenuti dalla CA pubblica e affidabile, sono firmati e sicuri. Lavorate con la vostra CA per ottenere il certificato SSL/TLS firmato per il vostro dominio personalizzato.

È anche possibile utilizzare Cloud Internet Services (CIS) per ordinare un certificato di origine e quindi configurare CIS per inoltrare gli indirizzi IP degli utenti all'applicazione o alla funzione in base a questo flusso:

  1. Ordinate il vostro certificato di origine:

    1. Nella console di IBM Cloud, andare su Elenco risorse e filtrare per l'istanza di Internet Services. Dai risultati della ricerca, fare clic sul nome dell'istanza di destinazione per visualizzare la pagina dei dettagli.
    2. Nella pagina dei dettagli dell'istanza CIS, andare alla pagina Origine (Sicurezza>Origine ) e fare clic su Ordine.
    3. Nel riquadro "Ordina certificato di origine", mantenere tutte le impostazioni predefinite e inserire il nome del dominio con cui si desidera lavorare. Ad esempio, myapp.example.com. Fare clic su Ordina per confermare.
    4. Copiare i valori del certificato di origine e della chiave privata. Queste informazioni sono necessarie quando si mappa il dominio.
  2. Configurare e applicare la modalità TLS flessibile End-to-End.

    Il certificato di bordo è fornito da CIS. Il certificato di origine viene utilizzato per criptare solo il traffico tra CIS e l'applicazione o la funzione Code Engine.

Dopo che il record DNS è stato creato con successo in CIS, si è configurato CIS per inoltrare gli indirizzi IP degli utenti alla propria applicazione o funzione.

Configurazione delle associazioni di dominio personalizzate in Code Engine

Ora si conoscono i concetti di lavoro con le mappature di dominio personalizzate e si è ottenuto il proprio dominio personalizzato da una società di registrazione di domini. Siete pronti a configurare le applicazioni o le funzioni di Code Engine per utilizzare le mappature di dominio personalizzate. Vedi:

Visualizzazione delle associazioni di dominio

Visualizzazione delle associazioni di dominio dalla console

Puoi visualizzare un elenco di tutte le associazioni di dominio generate automaticamente e personalizzate per la tua applicazione o funzione dalla console. Per impostazione predefinita, il contenuto della tabella si trova nell'ambito delle associazioni dominio personalizzate. Utilizzare il filtro Tipo per modificare la vista.

Questa vista visualizza le informazioni sulla scadenza del certificato associato all'associazione. Quando il certificato scade, l'applicazione o la funzione non è più raggiungibile con l'associazione del dominio e questa condizione genera un errore SSL. Se si dispone di un certificato che sta per scadere, aggiornare l'associazione dominio personalizzata per utilizzare un certificato aggiornato.

Questa vista visualizza anche le informazioni sulla specifica applicazione o funzione associata alla mappatura del dominio e il tipo di mappatura del dominio. Per le mappature generate da Code Engine, il tipo può essere System-public, System-private, o System-internal. Per le associazioni dominio personalizzate create, il tipo è Custom.

  1. Dopo che il tuo progetto è nello stato Attivo, fai clic sul nome del tuo progetto nella pagina dei progettiCode Engine.
  2. Dalla pagina di panoramica, fare clic su Mappature di dominio.
  3. Dalla pagina delle mappature di dominio, è possibile visualizzare un elenco delle mappature di dominio definite per le applicazioni o le funzioni esistenti. Type indica se l'associazione viene generata automaticamente o se si tratta di un'associazione dominio personalizzata.

Visualizzazione delle associazioni di dominio con la CLI

Per visualizzare un elenco di tutte le associazioni dominio personalizzate per le tue applicazioni o funzioni con la CLI, utilizza il comando ibmcloud ce domainmapping list. Ad esempio,

ibmcloud ce domainmapping list

Output di esempio

Listing domain mappings...
OK

Name              CNAME                                                        Target  Target-Type  Status  Secret Name  Age
www.example.com   custom.abcdabcdabc.us-south.codeengine.appdomain.cloud       myapp   app          ready   mytlssecret  36m

Per visualizzare un elenco di tutte le associazioni dominio per le tue applicazioni o funzioni, incluse le associazioni dominio personalizzate che crei e le associazioni dominio generate automaticamente create da Code Engine, specifica l'opzione --all con il comando ibmcloud ce domainmapping list. Le associazioni di dominio personalizzate visualizzano un valore per CNAME.

Aggiornamento delle associazioni di dominio

Quando si crea un'associazione dominio personalizzata, il segreto TLS è valido finché il certificato non scade. Dalla pagina di associazione dominio, è possibile visualizzare le informazioni sui giorni rimanenti fino alla scadenza del certificato.

È importante sapere se il certificato utilizzato con il tuo dominio personalizzato elenca più nomi di dominio o se utilizza un certificato jolly. Quando il certificato è prossimo alla scadenza (o è scaduto), modificare il segreto TLS esistente per la mappatura del dominio con le credenziali aggiornate. Non creare un segreto TLS diverso con credenziali aggiornate per la mappatura del dominio.

Aggiornamento di un'associazione dominio dalla console

Si supponga che l'associazione del dominio personalizzato per www.example.com abbia un certificato che scade a breve. È possibile aggiornare la mappatura del dominio dalla console per utilizzare un certificato aggiornato o anche sostituire il segreto TLS per la mappatura. È anche possibile aggiornare l'associazione del dominio in modo che punti a un'applicazione o una funzione diversa nel progetto.

  1. Dalla pagina ProgettiCode Engine, vai al tuo progetto.
  2. Dalla pagina Panoramica, fare clic su Associazioni dominio.
  3. Dalla pagina Associazioni dominio, fare clic sull'icona Azioni Azioni > Modifica per modificare l'associazione. Oppure, è possibile fare clic sulla riga del dominio personalizzato definito per aggiornare l'associazione.
  4. Dal riquadro "Aggiorna una mappatura di dominio", è possibile modificare l'applicazione o la funzione associata a questa mappatura di dominio. In alternativa, è possibile sostituire o aggiornare il segreto TLS per questa mappatura.
  5. Fai clic su Aggiorna per salvare le modifiche.

Dopo aver aggiornato la mappatura, è possibile visualizzare l'elenco delle mappature del dominio per le modifiche più recenti.

Aggiornamento di un'associazione dominio con la CLI

Per aggiornare un'associazione dominio personalizzata, utilizzare il comando ibmcloud ce domainmapping update.

Si supponga che l'associazione del dominio personalizzato per www.example.com abbia un certificato che scade a breve. È possibile aggiornare l'associazione del dominio per utilizzare un certificato aggiornato o anche sostituire il segreto TLS per l'associazione con l'opzione --tls-secret. Si può anche usare l'opzione --target per aggiornare la mappatura del dominio e farla puntare a un'altra applicazione o funzione del progetto.

L'esempio seguente aggiorna la mappatura del dominio personalizzato www.example.com per utilizzare un segreto TLS aggiornato chiamato mytlssecret.

  1. Aggiornare il segreto TLS mytlssecret con le informazioni aggiornate sul certificato e sulla chiave privata, contenute nei file mycertchain2.txt e myprivatekey2 sulla workstation locale.

    ibmcloud ce secret update --name mytlssecret --cert-chain-file  mycertchain2.txt --private-key-file myprivatekey2.txt
    

    Output di esempio

    Updating secret mytlssecret..
    OK
    
    
  2. Aggiornare l'associazione del dominio per utilizzare il segreto TLS aggiornato.

    ibmcloud ce domainmapping update --domain-name www.example.com --tls-secret mytlssecret2
    

    Output di esempio

    Getting domain mapping 'www.example.com.org'...
    Updating domain mapping 'www.example.com.org'...
    
    

Eliminazione delle associazioni di dominio

Quando elimini un'associazione di dominio, stai rimuovendo l'associazione della tua applicazione o funzione Code Engine con la tua associazione di dominio personalizzata in Code Engine. Questa azione non elimina l'applicazione, la funzione o il segreto TLS associati.

L'eliminazione di un'applicazione o di una funzione a cui si fa riferimento in una mappatura di dominio elimina anche qualsiasi mappatura di dominio personalizzata associata all'applicazione o alla funzione.

Quando si elimina una mappatura di dominio personalizzata e le impostazioni DNS del dominio rimangono, il traffico viene comunque indirizzato al progetto Code Engine. Ad esempio, i punti CNAME al progetto Code Engine possono ancora essere impostati. Tuttavia, alla richiesta viene risposto con un messaggio di errore 404 (non trovato). Assicurarsi che il record CNAME associato per il nome dominio completo sia aggiornato nelle impostazioni DNS dal registrar del dominio.

Eliminazione delle associazioni di dominio dalla console

Dalla console, è possibile eliminare solo le associazioni dominio di tipo Custom. I mapping di dominio generati automaticamente da Code Engine non possono essere eliminati.

Per eliminare un'associazione dominio personalizzata dalla console,

  1. Dalla pagina ProgettiCode Engine, vai al tuo progetto.
  2. Dalla pagina Panoramica, fare clic su Mappature di dominio per visualizzare un elenco di mappature di dominio definite.
  3. (Facoltativo) Fare clic su Tipo per filtrare le associazioni di dominio per tipo.
  4. Dalla pagina Associazioni dominio, eliminare l'associazione dominio personalizzata che si desidera rimuovere dalla propria applicazione o funzione. Fare clic sull'icona Azioni Azioni > Elimina per eliminare la mappatura.

Eliminazione delle associazioni di dominio con la CLI

Per eliminare un'associazione del dominio personalizzato con la CLI, utilizza il comando ibmcloud ce domainmapping delete.

È possibile eliminare solo le mappature di dominio personalizzate; non è possibile eliminare le mappature di dominio generate da Code Engine. Esegui il comando ibmcloud ce domainmapping list per visualizzare un elenco di associazioni dominio personalizzate con la CLI. Un'associazione dominio personalizzata ha un record CNAME generato. Nella CLI, puoi ottenere il valore CNAME generato per un'associazione di dominio personalizzata specificata utilizzando il comando ibmcloud ce domainmapping get.

ibmcloud ce domainmapping delete --domain-name www.example.com -f

Output di esempio

Deleting domain mapping 'www.example.com'...
OK

Passi successivi

Ottenere il record CNAME per una mappatura di dominio personalizzata

Code Engine fornisce la destinazione CNAME per la tua associazione dominio personalizzata definita.

Per ottenere il record CNAME dalla console Code Engine, apri l'associazione del dominio personalizzato definito e visualizza la pagina Aggiorna associazione dominio. Aprire la pagina Aggiorna associazione dominio in uno dei seguenti modi:

  • Dalla tabella Associazioni dominio, fare clic sulla riga del dominio personalizzato definito.
  • Fare clic sull'icona Azioni Azioni > Modifica per modificare l'associazione.

Dalla pagina Aggiorna associazioni dominio, è possibile ottenere il valore CNAME target. Ad esempio, l'associazione www.example.com ha il valore CNAME custom.abcdabcdabc.us-east.codeengine.appdomain.cloud, dove abcdabcdabc è l'identificativo univoco generato automaticamente e us-east è la regione del progetto.

Per ottenere il record CNAME con la CLI, utilizza il comando ibmcloud ce domainmapping get. Ad esempio:

ibmcloud ce domainmapping get --domain-name www.example.com

Output di esempio

Getting domain mapping 'www.example.com'...
OK

Domain Name:  www.example.com
CNAME:        custom.abcdabcdabc.us-south.codeengine.appdomain.cloud
Target Name:  myapp
Target Type:  app
TLS Secret:   mytlssecret
Status:       ready

Dopo che hai la destinazione CNAME, sei pronto ad aggiungere la voce di record CNAME alle impostazioni DNS del tuo dominio personalizzato. Nota che la pubblicazione del record CNAME con il registrar del dominio può richiedere del tempo per popolare le modifiche DNS in Internet.

Aggiungere un record DNS in CIS per indirizzare il traffico verso l'applicazione Code Engine

Se si dispone di un'istanza di CIS per gestire il dominio personalizzato, aggiornare i record DNS per puntare al progetto Code Engine, come segue. Si noti che per le società di registrazione di domini non CIS i passaggi sono diversi, ma l'obiettivo è lo stesso: creare un record DNS di tipo CNAME che punti all'endpoint CNAME dei progetti Code Engine:

  1. Nella pagina dei dettagli dell'istanza CIS, andare su Affidabilità>DNS. Spostarsi sui record DNS e fare clic su Aggiungi.

  2. Nel riquadro "Aggiungi record":

    • Selezionare CNAME come tipo.
    • Impostare il proprio sottodominio; ad esempio, myapp.
    • Fornire il valore di destinazione CNAME copiato in precedenza come nome di dominio Alias.
    • Verificare che l'output dei dettagli del record DNS indichi che la mappatura del dominio è un alias. Ad esempio, cercare un messaggio simile a: myapp.example.com is an alias of custom.<id>.<region>.codeeng.appdomain.cloud. Fare clic su Aggiungi per confermare l'aggiunta del record DNS.

    Se è necessario registrare più domini e sottodomini, come ad esempio example.com e www.example.com, è necessario ripetere i passaggi per ogni sottodominio. Si può pensare di creare un unico certificato che copra più di un dominio. Tuttavia, è possibile utilizzare il singolo certificato una sola volta in una regione. Se si prevede di utilizzare i domini personalizzati in più di un progetto in una singola regione, è bene tenerli separati.

Ora si ha familiarità con le mappature di dominio personalizzate e si è ottenuto un dominio personalizzato con il relativo certificato TLS e la chiave privata. Siete pronti a configurare una mappatura di dominio personalizzata in Code Engine per la vostra applicazione o funzione.