2010-01-04 18 views
7

Mi chiedevo se qualcuno di voi sa se è possibile in javascript o php verificare se un client ha un certificato client specifico installato nel browser.Verificare se un client certificat è installato nel browser client

Il fatto è che è stato installato un certificato del server, ma per essere riconosciuti dai client, hanno bisogno di 2 certificati client che consentano loro di riconoscere l'autorità dell'emittente del nostro certificato server. Vorremmo testare il browser per questi 2 certificati, se non ci sono, vogliamo proporre al client di scaricarli prima di entrare in modalità https ...

Chiunque può aiutare? Per favore specifica la tua risposta se ne conosci uno.

+1

È necessario solo verificare un certificato sul lato client, il certificato di origine. –

+0

sì, il fatto è che il nostro nuovo certificato server dipende da un'autorità nuova e sconosciuta da tutti i browser. Abbiamo bisogno di browser come firefox per scaricare la nuova CA radice in modo che possano riconoscere il nostro certificato del server. Ma non so come testare se un browser ha già la CA radice o se deve scaricarlo. Non appena ti connetti su https al nostro server, ottieni che il nostro certificato del server non è affidabile perché l'autorità non è nota. A meno che non si installi il certificato client per la CA principale. – Fabien

+0

Questo non è il significato di "certificato client". Volete sapere se un particolare certificato di root è considerato affidabile dal client. È diverso –

risposta

-1

Forzare gli utenti a scaricare e installare un certificato CA di casa è brutto e odioso. Invece, mostra loro l'amore e paga $ 30 per ottenere un certificato SSL firmato da una rispettabile, già affidabile, CA.

+0

Bene ... Stiamo usando un certificato di fiducia, ma recentemente la società ha cambiato la CA e noi li abbiamo già pagati per questo certificato del server, quindi vorremmo usarlo. Proprio come hanno un nuovo certificato di autorità CA ROOT, i browser non aggiornati, non li conosco. Sappiamo tutti che le persone non aggiornano spesso il loro browser ... e Safari, Firefox non funziona tramite l'aggiornamento di Windows ... Quindi cerchiamo di trovare una soluzione. Ma di sicuro, non siamo davvero contenti di questo cambiamento e così del nostro fornitore di certificati SSL. Peccato, era il prezzo corretto e riconosciuto da tutti i browser all'inizio ... – Fabien

+0

Il nostro server certificat è un certificato wildcart ed è molto più di 30 $ :) – Fabien

+0

Ancora sono d'accordo con te, questa è una procedura merda per rendere le persone scaricare e installare ROOT CA authority certificat ... Questo non dovrebbe accadere. Non siamo fortunati. – Fabien

0

cosa dire di un messaggio di avviso che verrà nascosto da un javascript che verrà caricato dal tuo sito https.

nel messaggio di avviso è possibile collegare il sito di aggiornamento di Windows o ovunque i certificati radice aggiornati possono essere scaricati nel browser.

0

PHP è un linguaggio lato server. Se vuoi veramente testare questo, devi farlo con JavaScript e quindi inviare una richiesta AJAX a PHP.

Ma penso che ci sia un'altra soluzione al tuo problema. Normalmente quando un CA cambia il proprio nome, ecc. Di solito hanno nuovi "certificati intermedi" che è possibile utilizzare. (Se disponi di un server httpd di apache, puoi cercare "ca bundle" anche sul loro sito web.) Con questo pacchetto puoi inviare il nuovo certificato CA insieme al tuo certificato.

3

È possibile farlo lato client utilizzando javascript per richiedere un file noto da un'origine protetta (https). se la richiesta non riesce, significa che il client ha rifiutato di accettare il certificato (o un altro errore di rete) a questo punto è possibile visualizzare un messaggio per chiedere all'utente di installare il certificato di origine con un collegamento al certificato di origine.

Questo deve essere eseguito da una pagina non protetta. altrimenti l'utente può rifiutare il tuo certificato e mai caricare la pagina per iniziare e quindi il tuo javascript non funziona mai

Non può essere fatto in PHP perché php (che è lato server) non può determinare se il browser client ha un particolare root ca installed

Tuttavia, non lo farei. ottenere invece un certificato adeguato.

Sembra che non abbia una comprensione sufficiente di come funziona lo SSL in generale. Suggerisco di dedicare del tempo a capire come funziona SSL e come vengono utilizzati i certificati.

DC

per conoscere inviare e ricevere risposte HTTP con javascript leggere questa pagina ..

http://www.w3schools.com/XML/xml_http.asp

Esso può essere utilizzato per inviare e ricevere i dati di testo, non solo xml. È davvero facile da implementare ma devi essere a conoscenza dei problemi di versione del browser.

DC

+0

Confermo di avere una brutta conoscenza dei lavori SSL. Ci sono così tante tecnologie su Internet che non puoi conoscere ed essere specializzato su tutto ciò che è il motivo per cui ho chiesto aiuto. Dal momento in cui abbiamo deciso come soluzione, di inserire una pagina non https sul nostro sito Web, spiegando che è necessario installare nuovi certificati prima di procedere alla successiva pagina protetta. Non è molto bello ma è l'unica cosa che abbiamo trovato per risolvere il nostro problema ... Sulla tua soluzione, mi chiedo come si richiede un file tramite javascript .. c'è qualche funzione di download? usi document.location? La domanda è solo per scopi informali. – Fabien

+0

Ho aggiornato la mia risposta per includere un collegamento all'utilizzo di javascript per caricare un file dal server. questa è la base per la maggior parte delle funzionalità ajax – DeveloperChris

Problemi correlati