Certificato OpenVPN o authentication plug-in-auth-pam

Configurazione del server OpenVPN, posso triggersre l'authentication basata su certificati o l'authentication di nome utente / password utilizzando openvpn-plugin-auth-pam , ma non entrambi contemporaneamente.

Abilito l'authentication username / password come segue:

  • openssl errore di authentication client: tlsv1 alert unknown ca: ... numero di allarme SSL 48
  • C'è una soluzione per eseguire l'authentication OpenVPN con Google ID?
  • Trucco Apache .htaccess per autenticare una sola volta per tutti i sottodomini?
  • Perché la mia authentication di public key ssh funziona solo con una connessione autenticata con password simultanea
  • Squid registra i nomi utente NTLM solo per alcune richieste
  • qual è la migliore configuration multi-server con OpenVPN
  •  plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so login client-cert-not-required username-as-common-name 

    Ma non appena aggiunto le seguenti righe, i miei clienti configurati per l'authentication del certificato smettono di lavorare con i seguenti messaggi nel registro:

     TLS Error: Auth Username/Password was not provided by peer TLS Error: TLS handshake failed 

    C'è un modo per non richiedere username / password dai client che utilizzano l'authentication del certificato?

    One Solution collect form web for “Certificato OpenVPN o authentication plug-in-auth-pam”

    OpenVPN non support più methods di authentication concorrenti. La soluzione migliore per questo, come indicato nei commenti, è quella di eseguire due istanze di OpenVPN. È più complicato eseguirlo sulla stessa casella, ma è sicuramente capace.

    Tuttavia, ci sembrano alcune soluzioni alternative che possono essere adatte alla tua situazione.

    se sai quali certificati richiedono una password e che no, allora la risposta è sì. utilizzare uno script "auth-user-pass-verify" sul lato server per verificare prima il certificato DN (se si imposta anche nome-nome-nome-comune, allora si conosce il nome comune del certificato nello script di verifica automaticamente ). se si tratta di un certificato per cui sappiamo che una password è stata inserita allora utilizzare pam per verificare il nome utente / la password. se si conosce che il certificato non includeva una password, quindi lo script restituisca '0' per consentire l'accesso.

    Si noti che non esiste alcun modo per determinare automaticamente se l'utente ha digitato una password di certificato o no – che è al di fuori della stretta di mano openssl e quindi non è noto al server OpenVPN.

    Fonte: https://openvpn.net/archive/openvpn-users/2007-12/msg00179.html

    Puoi anche essere in grado di federare i pacchetti di chiavi generati da OpenVPN in un server LDAP locale e utilizzare lo script di cui sopra per l'authentication contro LDAP con il certificato fornito o utilizzare le credenziali fornite in assenza di alcun certificato.

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