Certificado OpenVPN OU autenticação plugin-auth-pam

7

Configurando o servidor OpenVPN, posso ativar a autenticação com base em certificado ou autenticação de nome de usuário / senha usando openvpn-plugin-auth-pam plugin, mas não os dois ao mesmo tempo.

Eu habilito a autenticação de nome de usuário / senha da seguinte forma:

plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so login
client-cert-not-required
username-as-common-name

Mas assim que eu adiciono as seguintes linhas, meus clientes configurados para autenticação de certificado param de trabalhar com as seguintes mensagens no log:

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

Existe alguma maneira de não exigir nome de usuário / senha de clientes que usam autenticação de certificado?

    
por Andrei Tanas 21.05.2014 / 21:06

1 resposta

1

O OpenVPN não suporta vários métodos de autenticação simultâneos. A melhor solução para isso, como mencionado nos comentários, é executar duas instâncias do OpenVPN. É mais complicado executá-lo na mesma caixa, mas é definitivamente capaz de fazê-lo.

No entanto, parece haver algumas soluções alternativas que podem ser adequadas à sua situação.

if you know which certificates require a password and which don't , then the answer is yes. use an 'auth-user-pass-verify' script on the server side to first verify the certificate DN (if you set --username-as-common-name as well then you will know the certificate common name inside the verify script automatically). if it's a certificate for which you know that a password was entered then use pam to verify the username/password. if you know the certificate did not include a password then have the script return '0' to allow access.

Note that there is no way of automaGically determining if the user typed in a certificate password or not - that's outside the openssl handshake and thus not known to the OpenVPN server.

Fonte: link

Você também pode federar os seus pares de chaves gerados pelo OpenVPN em um servidor LDAP local e usar o script mencionado acima para autenticação em relação ao LDAP com o certificado fornecido ou usar as credenciais fornecidas, desde que nenhum certificado tenha sido apresentado.

    
por 08.06.2017 / 20:52