Domanda

C'è un modo per un web app java per ottenere informazioni sui certificati di sicurezza installati sulla propria macchina tramite una richiesta HTTP e selettivamente concedere l'accesso se una particolare certifiicate è installato sulla macchina.

In pratica il requisito è, l'applicazione web dovrebbe intrattenere solo su richiesta da un computer portatile società di altro deve negare l'accesso con adeguate testo di errore.

(Questi potrebbero essere vincere computer portatili con determinate certifcates installato sulla propria macchina o possono essere da un certo insieme di indirizzi IP statici.)

È stato utile?

Soluzione

Sì, questo è possibile utilizzando i certificati client HTTPS. L'installazione e la configurazione esatta dipende dal vostro server di applicazioni e requisiti specifici, ma uno scenario comune woul essere di creare una CA (autorità di certificazione) interna all'azienda di rilasciare i certificati di client che possono essere limitati a specifici indirizzi IP dei client e configurare il server di applicazione di HTTPS connettore per richiedere un certificato client e fidarsi certificati rilasciati da una CA.

Dopo la configurazione corretta è stato fatto, il certificato client (s) è / sono messi a disposizione per l'applicazione web attraverso un attributo richiesta servlet:

X509Certificate[] certificates = (X509Certificate[])
    request.getAttribute("javax.servlet.request.X509Certificate");

Altri suggerimenti

Come jambjo detto - si può assolutamente ottenere i certificati client tramite HTTPS con autenticazione del client come ha descritto. Mi consiglia che oltre indirizzi IP statici, un certificato è più difficile da falsificare e permette una maggiore flessibilità se è necessario riconfigurare la rete in modo diverso in futuro.

Un paio di altri pensieri:

  • quasi tutti i server applicazione vi permetterà di impostare un negozio certificato attendibile - l'elenco dei certificati di CA vostra applicazione accetterà per HTTPS client di autenticazione. Limitare questo alla CA che fornisce certificati client - sia un'autorità di certificazione aziendale interna o di un fornitore certificato.
  • La scelta di CA interna o fornitore di CA è una impresa. Un CA interna avrà manodopera per istituire e mantenere, un fornitore di CA vi costerà denaro per certificato. Ci raggiunge un punto compromesso in cui è più conveniente per fare i certificati da soli, ma fino a colpire quel punto, il provider di CA può essere più conveniente.
  • Se si dispone di una CA interna e la regola è che "qualsiasi macchina società (con un certificato) può accedere a questa applicazione", allora il vostro lavoro è fatto l'elenco CA attendibile nel server applicaiton, dal momento che si conosce l'azienda CA non saranno utilizzati per chiunque, ma le persone in azienda.
  • Se si dispone di un provider di CA, potrebbe essere necessario limitare l'accesso di controllo ulteriormente e utilizzando questo codice jambjo fornito per ottenere il certificato e guardare le informazioni al suo interno. In genere, v'è un'organizzazione (O) e componente unità organizzativa (OU) all'interno del soggetto DN (nome distinto) che vi dirà quale organizzazione ha prodotto questo certificato. Dovreste essere in grado di verificare che, per essere sicuri di avere un computer aziendale.
  • E 'valida per fare la O e OU controllando se sapete che il vostro fornitore di CA non potrà mai dare O della vostra azienda e nomi OU a nessuno, ma un membro della vostra azienda. Se questo non è il caso, potrebbe essere necessario controllare rispetto a un archivio di dati back-end (come una directory LDAP) per essere sicuri che l'utente o la macchina dell'utente è noto a voi.
  • E 'anche possibile collegare l'indirizzo IP della macchina al certificato - spesso SubjectAltName (nome soggetto alternativo) viene utilizzato per questo quando è in costruzione il certificato. Io non lo consiglio, perché avrete bisogno di un bisogno di un nuovo certificato se mai cambiare l'indirizzo IP della macchina. Sembra inutilmente complesso per i vostri scopi.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top