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 hai eseguito il deployment del portale:

  • Cloud: configura TLS da Pantheon o Acquia, l'hosting basato su cloud per il portale.
  • Apigee Edge per Private Cloud: configura TLS on-premise sul server che ospita il portale.
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 usate è archiviato su Edge, dove è possibile eseguire il deployment on-premise come un'installazione su cloud privato. Se necessario, il portale effettua 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 del l'API Edge Management. A seconda di come è configurata l'API Edge Management, l'URL possono utilizzare TLS. Consulta la sezione Creazione di un 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 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 devono essere inviate tramite HTTPS.

    Il modo in cui configuri TLS per questo scenario dipende da come hai eseguito il deployment o Apigee Edge per il cloud privato. Le seguenti sezioni descrivono in entrambi gli scenari.

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

La configurazione dell'API di gestione perimetrale determina se la comunicazione può utilizzare TLS. Se l'API Edge Management è configurata per utilizzare TLS, il portale può utilizzare HTTPS. In caso contrario, il portale comunica con Edge su HTTP. Di conseguenza, in qualità di sviluppatore di portale, solo come è configurato Edge per impostare la connessione tra il portale perimetrali.

Per la procedura che utilizzi per configurare la connessione all'API Edge Management, vedi Creazione di uno sviluppatore portale.

Versione basata su cloud di Edge

Se il portale si connette alla versione basata su cloud di Edge, viene usato l'URL di è preconfigurata da Apigee per l'utilizzo di TLS. Quando configuri il portale, accedi al L'API Edge Management utilizzando l'URL https://api.enterprise.apigee.com/v1.

Installazione cloud privato di Edge

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

dove EdgePrivateCloudIp è l'indirizzo IP di Edge Management Il server 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 sviluppatori e portale

Il modo in cui configuri TLS tra gli sviluppatori e il portale dipende dal modo in cui hai eseguito il deployment o Apigee Edge per il cloud privato.

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.

Edge per privati Portali Cloud

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 e non sul portale. La procedura che utilizzi per configurare TLS in base al bilanciatore del carico. Per saperne di più, consulta la documentazione sul bilanciatore del carico informazioni.
  • Configura TLS sul portale stesso: se necessario, puoi configurare TLS sul il server web che ospita il portale. Consulta Configurazione del portale per l'utilizzo HTTPS per ulteriori informazioni.

Devi ottenere il tuo certificato TLS prima di poter eseguire il deployment del portale in un ambiente completamente gestito di Google Cloud.

Configurazione in corso... impostazioni TLS aggiuntive

Puoi modificare il file sites/default/settings.local.php (cloud) o sites/default/settings.php (privato Cloud) per apportare modifiche alla configurazione di 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: http://php.net/manual/en/function.ini-set.php.

Puoi impostare le seguenti proprietà nella sezione sites/default/settings.local.php (cloud) o sites/default/settings.php (privato Cloud):

  • cookie_httponly: (Consigliato) Specifica il cookie come accessibile solo tramite il protocollo HTTP. Imposta questo 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 tutti i contenuti devono essere pubblicati tramite HTTPS. Se questa impostazione è attiva, il sito non su HTTP. Imposta questa proprietà come:

    ini_set('session.cookie_secure', true);
  • gc_maxlifetime e cookie_lifetime: (Facoltativo) gc_lifeteime specifica il numero di secondi dopo i quali i dati possono essere potenzialmente ripuliti, e cookie_lifetime specifica durata del cookie in secondi. 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 gli sviluppatori e i client, consulta Abilita SSL per la comunicazione HTTPS sicura sul sito della documentazione di Pantheon.

Configurazione in corso... TLS con 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 al backend i server su http://. In questo modo ai server di backend l'overhead associato alla decriptazione dei messaggi https://.

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 ai dati come il portale per gli sviluppatori Apigee, i messaggi non sono criptati e viene aperto buco della sicurezza.

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

Per configurare TLS con bilanciatori del carico, aggiungi le seguenti righe a sites/default/settings.local.php (cloud) o sites/default/settings.php (privato 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 (privato Cloud). Gli aggiornamenti richiesti variano a seconda del reindirizzamento a HTTPS o più nomi host.

Reindirizzamento a HTTPS sullo stesso nome host

Aggiungi il seguente codice a sites/default/settings.local.php (cloud) oppure sites/default/settings.php (Private Cloud) per reindirizzare a tutto il traffico del portale a 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 caricato per devportal.example.com, la richiesta verrà non riuscito.

// 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) oppure sites/default/settings.php (Private Cloud) su reindirizzamento 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;
  }
}