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)

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 scoprire quale server ha generato una CSR
  • Come posso impostare la trasparenza dei certificati se la mia CA non lo support?
  • Problema di installazione del certificato SSL con connessione a desktop remoto
  • Nome del sobject del certificato RDP anche se un gateway
  • La configuration / certificazione SSL di gitlab non è rioutput
  • Perché il mio certificato SSL di wildcard causa un errore di corrispondenza di dominio in un sottodominio di secondo livello?
  • Apache2 non invia certificato SSL installato
  • è la ssl wildcard insicura?
  • 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.