Utilizzo di TLS sul portale

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Puoi configurare il portale per l'utilizzo di TLS. La procedura di configurazione TLS per il portale dipende da come è stato eseguito il deployment del portale:

  • Cloud: configura TLS da Pantheon o Acquia, i servizi di hosting basati su cloud per il portale.
  • Apigee Edge per Private Cloud: configura TLS on-premise sul server che ospita il portale.
di Gemini Advanced. di Gemini Advanced.

TLS e il portale

L'immagine seguente mostra le due posizioni in cui il portale utilizza TLS:

  1. Per la comunicazione tra il portale e l'API Edge Management.

    Il portale non funziona come sistema autonomo. Al contrario, molte delle informazioni utilizzate dal portale vengono effettivamente archiviate su Edge, dove è possibile eseguire il deployment di Edge nel cloud oppure on-premise come installazione su cloud privato. Se necessario, il portale invia una richiesta HTTP o HTTPS all'API Edge Management per recuperare o inviare informazioni.

    Quando crei il portale, uno dei primi passaggi da eseguire è specificare l'URL dell'API Edge Management. A seconda di come è configurata l'API Edge Management, quell'URL può utilizzare TLS. Per saperne di più, consulta Iniziare a creare il portale per gli sviluppatori.
  2. Per la comunicazione tra gli sviluppatori e il portale.

    Quando utilizzi il portale Servizi per sviluppatori per eseguire il deployment delle tue API, i tuoi sviluppatori accedono al portale per registrare le app e ricevere le chiavi API. Le credenziali di accesso e la chiave API sono informazioni proprietarie che vuoi inviare tramite HTTPS per garantirne la sicurezza. Questo tipo di informazioni proprietarie deve essere inviato tramite HTTPS.

    Il modo in cui configuri TLS per questo scenario dipende da come hai eseguito il deployment del portale: cloud o Apigee Edge per Private Cloud. Nelle sezioni seguenti vengono descritti entrambi gli scenari.

Configurazione di TLS tra il portale e l'API di gestione Edge

La configurazione dell'API Edge Management determina se la comunicazione può utilizzare TLS o meno. Se l'API Edge Management è configurata per utilizzare TLS, il portale può utilizzare HTTPS. In caso contrario, il portale comunica con Edge su HTTP. Pertanto, in qualità di sviluppatore di un portale, devi solo conoscere la configurazione di Edge per impostare la connessione tra il portale ed Edge.

Per la procedura che utilizzi per configurare la connessione all'API Edge Management, vedi Iniziare a creare il portale per gli sviluppatori.

Versione basata su cloud di Edge

Se il portale si connette alla versione basata su cloud di Edge, l'URL dell'API di gestione Edge è preconfigurato da Apigee per l'utilizzo di TLS. Quando configuri il portale, accedi all'API di gestione Edge utilizzando l'URL https://api.enterprise.apigee.com/v1.

Installazione cloud privato di Edge

Per un'installazione su cloud privato di Edge, il formato dell'URL dell'API di gestione perimetrale è:
http://EdgePrivateCloudIp:8080/v1?
o:
https://EdgePrivateCloudIp:TLSport/v1

dove EdgePrivateCloudIp è l'indirizzo IP del server Edge Management Server e TLSport è la porta TLS per l'API Edge Management. Ad esempio, il numero di porta potrebbe essere 8443 o anche 8080 in base alla configurazione di Edge.

Configurare TLS tra gli sviluppatori e il portale

Il modo in cui configuri TLS tra gli sviluppatori e il portale dipende da come hai eseguito il deployment del portale: cloud o Apigee Edge per Private Cloud.

Portali basati su cloud

Pantheon

Pantheon fornisce il protocollo HTTPS automatizzato senza costi per tutti i siti della sua piattaforma tramite la CDN Pantheon Global e utilizzando Let's Encrypt. Vedi anche HTTPS on Global CDN di Pantheon.

Acquia

Per attivare TLS/SSL utilizzando Acquia, consulta la sezione Attivazione di SSL.

Portali Edge per cloud privato

Tutte le installazioni di cloud privato consigliate da Apigee del portale richiedono che il portale sia dietro un bilanciatore del carico, come mostrato di seguito:

Di conseguenza, per le installazioni on-premise, hai due opzioni per configurare TLS:

  • Configura TLS sul bilanciatore del carico: configura TLS sul bilanciatore del carico stesso e non sul portale. La procedura che utilizzi per configurare TLS dipende quindi dal bilanciatore del carico. Per saperne di più, consulta la documentazione sul bilanciatore del carico.
  • Configura TLS sul portale stesso: se necessario, puoi configurare TLS sul server web che ospita il portale. Per impostazione predefinita, Apigee installa il server web Apache. Per informazioni sulla configurazione di TLS per Apache, consulta Abilitazione di HTTP Secure (HTTPS) .

Devi ottenere il tuo certificato TLS prima di poter eseguire il deployment del portale in un ambiente di produzione.

Configurazione di impostazioni TLS aggiuntive

Puoi modificare il file sites/default/settings.local.php (cloud) o sites/default/settings.php (Private Cloud) per apportare modifiche alla configurazione del protocollo TLS per il portale.

Quando modifichi il file, aggiungi istanze della funzione ini_set() per impostare una proprietà. Per ulteriori informazioni su questa funzione, vedi: ini_set.

Nel file sites/default/settings.local.php (cloud) o sites/default/settings.php (Private Cloud) puoi impostare le seguenti proprietà:

  • cookie_httponly: (consigliato) specifica il cookie come accessibile solo tramite il protocollo HTTP. Imposta questa proprietà come:

    ini_set('session.cookie_httponly', true);
  • session.cookie_secure - (Facoltativo) Specifica che i cookie possono essere inviati solo tramite connessioni sicure. Tuttavia, questo significa che tutti i contenuti devono essere pubblicati tramite HTTPS. Se questa impostazione è abilitata, il sito non funzionerà tramite HTTP. Imposta questa proprietà come:

    ini_set('session.cookie_secure', true);
  • gc_maslifetime e cookie_lifetime: (facoltativo) gc_lifeteime specifica il numero di secondi dopo i quali i dati possono essere potenzialmente ripuliti, mentre cookie_lifetime specifica la durata in secondi del cookie. Imposta queste proprietà come:

    ini_set('session.gc_maxlifetime', 3600);
    ini_set('session.cookie_lifetime', 3600);

Per ulteriori informazioni sulla configurazione del protocollo TLS tra il portale per sviluppatori e i client, vedi Abilitare SSL per la comunicazione sicura HTTPS nel sito della documentazione di Pantheon.

Configurazione di TLS con i bilanciatori del carico

Per ottenere prestazioni migliori, a volte i bilanciatori del carico sono configurati per eseguire la terminazione TLS. Con la terminazione TLS, i bilanciatori del carico decriptano i messaggi inviati su https:// e li inoltrano ai server di backend su http://. In questo modo, i server di backend non si occupano di decriptare i messaggi https:// da soli.

Se i bilanciatori del carico inoltrano messaggi HTTP non criptati ai server nello stesso data center, la sicurezza non è un problema. Tuttavia, se i bilanciatori del carico inoltrano i messaggi tramite http:// a server esterni al data center, ad esempio il portale per gli sviluppatori Apigee, i messaggi non saranno criptati, il che apre un buco di sicurezza.

Se il tuo portale per gli sviluppatori è protetto da bilanciatori del carico che utilizzano la terminazione TLS e vuoi che tutto il traffico sia gestito su https://, le pagine dei siti web dovranno contenere solo link https:// e dovrai aggiungere il seguente codice al file del portale per gli sviluppatori sites/default/settings.local.php (cloud) o sites/default/settings.php (Private Cloud). Poiché il bilanciatore del carico non trasforma automaticamente i contenuti delle pagine HTML, il codice garantisce che tutti i link passati al client inizino con https://.

Per configurare TLS con bilanciatori del carico, aggiungi le seguenti righe al file sites/default/settings.local.php (cloud) o sites/default/settings.php (Private Cloud) :

// Only check for SSL if we are not using PHP from the command line.
if (PHP_SAPI != 'cli') {
  // Assume we can't detect SSL unless proven otherwise.
  $can_detect_ssl = FALSE;

  // Set HTTPS URL of portal
  $base_url = 'https://developers.myCo.com';

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) {
    $can_detect_ssl = TRUE;
  }

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') {
    $_SERVER['HTTPS'] = 'on';
  }

  if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') {
    header('HTTP/1.0 301 Moved Permanently');
    // You could optionally substitute a canonical server name for $_SERVER['HTTP_HOST'] here.
    header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    exit;
  }
}

Per ulteriori informazioni, vedi:

Reindirizzamento del traffico del portale a HTTPS

Puoi reindirizzare tutto il traffico del portale a HTTPS aggiornando il tuo file sites/default/settings.local.php (cloud) o sites/default/settings.php (Private Cloud). Gli aggiornamenti richiesti variano a seconda del reindirizzamento a HTTPS sullo stesso nome host o su più nomi host.

Reindirizzamento a HTTPS sullo stesso nome host

Aggiungi il seguente codice al tuo file sites/default/settings.local.php (cloud) o sites/default/settings.php (Private Cloud) per reindirizzare a tutto il traffico del portale verso HTTPS sullo stesso nome host (ad esempio, *.devportal.apigee.io).

In questo scenario, se uno sviluppatore visita il tuo portale all'indirizzo live-example.devportal.apigee.io, ma deve accedere a un certificato che è stato caricato per devportal.example.com, la richiesta avrà esito negativo.

// Only check for SSL if we are not using PHP from the command line.
if (PHP_SAPI != 'cli') {
  // Assume we can't detect SSL unless proven otherwise.
  $can_detect_ssl = FALSE;

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) {
    $can_detect_ssl = TRUE;
  }

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') {
    $_SERVER['HTTPS'] = 'on';
  }

  if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') {
    header('HTTP/1.0 301 Moved Permanently');
    header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
    exit;
  }
}

Reindirizzamento a HTTPS su più nomi host

Aggiungi il seguente codice al tuo file sites/default/settings.local.php (cloud) o al file sites/default/settings.php (Private Cloud) per reindirizzare a tutto il traffico del portale verso HTTPS su più nomi host.

  // Only check for SSL if we are not using PHP from the command line.
if (PHP_SAPI != 'cli') {
  // Assume we can't detect SSL unless proven otherwise.
  $can_detect_ssl = FALSE;
  // Assume we are not forcing a redirect until proven otherwise.
  $force_redirect = FALSE;

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) {
    $can_detect_ssl = TRUE;
  }

  if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') {
    $_SERVER['HTTPS'] = 'on';
  }

  if ($can_detect_ssl && $_SERVER['HTTPS'] != 'on') {
    // We will force a redirect because HTTPS is required.
    $force_redirect = TRUE;
  }

  // This works on Pantheon only; the constant is undefined elsewhere.
  switch (PANTHEON_ENVIRONMENT) {
    case 'dev':
      $canonical_hostname = 'dev.devportal.example.com';
      break;
    case 'test':
      $canonical_hostname = 'test.devportal.example.com';
      break;
    case 'live':
      $canonical_hostname = 'devportal.example.com';
      break;
    default:
      $canonical_hostname = strtolower($_SERVER['HTTP_HOST']);
      break;
  }
  if ($canonical_hostname != strtolower($_SERVER['HTTP_HOST'])) {
    // We will force a redirect because hostname is not canonical.
    $force_redirect = TRUE;
  }

  if ($force_redirect) {
    header('HTTP/1.0 301 Moved Permanently');
    header('Location: https://' . $canonical_hostname . $_SERVER['REQUEST_URI']);
    exit;
  }
}