EAP-TLS authentication support for PPP ====================================== 1. Intro The Extensible Authentication Protocol (EAP; RFC 3748) is a security protocol that can be used with PPP. It provides a means to plug in multiple optional authentication methods. Transport Level Security (TLS; RFC 2246) provides for mutual authentication, integrity-protected ciphersuite negotiation and key exchange between two endpoints. EAP-TLS (RFC 2716) incapsulates the TLS messages in EAP packets, allowing TLS mutual authentication to be used as a generic EAP mechanism. This patch provide EAP-TLS support to pppd. This authentication method can be used in both client or server mode. 2. Building To build pppd with EAP-TLS support, OpenSSL (http://www.openssl.org) is required. Any version from 0.9.7 should work. You must also have libcurl installed (used to fetch CRLs). The version required is 7.9.8 or newer (because that's the one I used, but an earlier version may work). Configure, compile, and install as usual. 3. Configuration On the client side edit the /etc/ppp/eaptls-client file. Insert a line for each system with which you use EAP-TLS. The line is composed of this fields separated by tab: - Client name The name used by the client for authentication, can be * - Server name The name of the server, can be * - Client certificate file The file containing the certificate chain for the client in PEM format - Server certificate file If you want to specify the certificate that the server is allowed to use, put the certificate file name. Else put a dash '-'. - CA certificate file The file containing the trusted CA certificates in PEM format. - Client private key file The file containing the client private key in PEM format. On the server side edit the /etc/ppp/eaptls-server file. Insert a line for each system with which you use EAP-TLS. The line is composed of this fields separated by tab: - Client name The name used by the client for authentication, can be * - Server name The name of the server, can be * - Client certificate file If you want to specify the certificate that the client is allowed to use, put the certificate file name. Else put a dash '-'. - Server certificate file The file containing the certificate chain for the server in PEM format - CA certificate file The file containing the trusted CA certificates in PEM format. - Client private key file The file containing the server private key in PEM format. - addresses A list of IP addresses the client is allowed to use. 4. Options These pppd options are available: crl-dir