Autenticazione SSL del server Nginx

Ho Nginx che funziona puramente come proxy per un numero diverso di server web. Uno dei nostri clienti ci ha chiesto di utilizzare certificati client e ci ha fornito 3 certificati per le 3 diverse macchine che si connettono a un webservice in esecuzione su uno dei server proxy.

Non avendo mai fatto questo prima di aver trovato le relative impostazioni di nginx e creato un config del sito (parte rilevante di seguito)

  • Avere un certificato ssl legittimo, ma non riesco ad installarlo
  • Come riavviare Nginx su Mac OS X?
  • Shellshock: Come faccio a sapere se il mio server è compromesso + file sospetti per cercare
  • Host predefinito di Nginx SSL: distriggers completamente o ...?
  • Carichi il saldo HTTP sulla base di una percentuale di traffico o di richieste?
  • Nginx: SNI non funziona per nome_server con più argomenti
  • server { listen 443 ssl; server_name service.domain.com; ssl_certificate /etc/nginx/ssl/wildcard/server.crt; ssl_certificate_key /etc/nginx/ssl/wildcard/server.key; ssl_client_certificate /etc/nginx/ssl/client.certificates/client_package.cer; ssl_verify_client on; 

    Ho concatenato i 3 certificati client più un certificato creato da uno sviluppatore (questo è stato auto-firmato) che whereva accedere al sito durante lo sviluppo nel singolo file di cui sopra.

    Il cliente ha ora tentato di accedere al sito, ma non è in grado di farlo. Come prova della configuration ho rimosso il cert di sviluppatore dal file di certificati concatenato e ho confermato di non essere in grado di accedere al sito. Una volta che ho aggiunto il suo cert nel file concatenato (sviluppatore) è stato in grado di accedere correttamente al sito.

    Ho triggersto l'accesso a livello di debug nel registro degli errori e quando il client ha tentato di connettersi Ho il seguente errore.

    Non è richiesto il certificato SSL durante l'elaborazione di SPDY, client: 1x.xx.xx.xx, server: service.domain.com, richiesta: " GET /test.cfm HTTP / 1.1 ", host:" service.domain.com "

    Come potete vedere dalla configuration sopra non ho triggersto SPDY (ma lo faccio su altri siti) e il client mi assicura che stanno inviando i certificati client. Poiché questa è la prima volta che ho fatto questo, voglio assicurarmi che prima di tornare indietro e dire che i miei registri dicono di non submit un certificato client, ho tutto ciò che corregge.

    Per quanto riguarda i certificati inviati a me: tutti e tre sono firmati dalla stessa autorità di certificazione pubblica. Non ho tuttavia tutta la catena in un file concatenato. Quale guida ho trovato la menzione on-line anche con la radice, ma tutti parlano di self-signed che nessuno di questi è. Quindi non sono sicuro che si applichi.

    Per chiarire pure non sto cercando di passare il certificato client al server proxy.

    versione nginx: nginx / 1.8.0
    openssl version: OpenSSL 1.0.1k 8 gen 2015

    Se ci sono ulteriori informazioni necessarie, fatecelo sapere

  • Come faccio a sapere se IP Multicasting è triggersto nella mia networking?
  • Consenti i dati www per eseguire script di shell
  • Debug di problemi di fstab al riavvio
  • Nginx appesa al riavvio
  • Come faccio ad abilitare il flush () di PHP con nginx + PHP-FPM?
  • lavoro cron che ha sparato 8 volte piuttosto che una volta. Tema legale?
  • 3 Solutions collect form web for “Autenticazione SSL del server Nginx”

    La tua configuration è in realtà corretto. Tuttavia, assicurati di non mettere i certificati client effettivi nel file client_package.cer . Questo file deve contenere solo certificati CA attendibili, in realtà dovrebbe contenere la catena completa. È necessario richiedere tutti i certificati root e intermedi dal proprio cliente se non li hanno forniti.

    Ci sono anche pochi casi relativi alla configuration predefinita del server. Si prega di leggere questo e assicurarsi che ciò non influisca su di te.

    Utilizzare la direttiva ssl_trusted_certificate indstead di ssl_client_certificate . Vedi documenti http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_trusted_certificate .

    Ma in each caso, suggerisco di firmare tutti i certificati client con CA ONE ROOT e verificare se il certificato client è firmato con tale CA.

    Se ha risolto il tuo problema, accetta come risposta.

    I certificati Ssl sono dominio jolly o singolo? Forse lo sviluppatore prova ad accedere all'URL del sito web ad esempio test.myapp.com ma il certificato viene rilasciato solo per myapp.com o http://www.myapp.com

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.