Снимаем комментарий с раздела peap{}:

peap {
	default_eap_type = mschapv2
}

Активируем EAP-TLS:

tls {
	private_key_password = whatever
	private_key_file = ${raddbdir}/certs/cert-srv.pem
 
	certificate_file = ${raddbdir}/certs/cert-srv.pem
 
	CA_file = ${raddbdir}/certs/demoCA/cacert.pem
 
	dh_file = ${raddbdir}/certs/dh
	random_file = ${raddbdir}/certs/random }

Теперь можно перезапустить сервер аутентификации, чтобы задействовать новые параметры.

Аутентификация беспроводных клиентов.

После того как сервер FreeRadius настроен и готов заняться непосредственно своими «обязанностями», произведем настройку аутентификатора и клиента. В моем случае в роли аутентификатора выступает ASUS WL-500gp. На вкладке Wireless-inteface в позиции «authentication Method» выставляем режим — WPA2-Enterprise.

asuswireless

Во вкладке Wireless-RADIUS Setting прописываем адрес сервера аутентификации, порт на котором «слушает» сервер и секретную фразу, которую мы задали при конфигурации FreeRadius.

wirelessradius

Теперь все готово. Запускаем на клиенте менеджер сетей и выставляем параметры подключения в соответствий нашим настройкам выше.

podkluchenie

Как можно видеть из скриншота, в этой схеме есть один существенный недостаток, а именно мы не можем со 100% вероятностью гарантировать, что та точка и сервер аутентификации к которым мы подключаемся, те за которые они себя выдают. В нашем случае используя EAP-PEAP поправит положение только проверка сертификата сервера, а тот в свою очередь, должен предоставить нам сертификат подписанный корневым сертификатом, которому доверяем мы сами. Теперь реализуем все это на практике. Для начала создадим приватный ключ центра сертификации.

root@alexey-laptop:~/ssl# openssl genrsa -des3 -out tsunami-ca.key 2048
Generating RSA private key, 2048 bit long modulus
.+++
...............................................+++
e is 65537 (0x10001)
Enter pass phrase for tsunami-ca.key:
Verifying - Enter pass phrase for tsunami-ca.key:

Файл ключа защищен парольной фразой. Теперь на основе только что созданного ключа создадим самоподписанный корневой сертификат, во время генерации нужно ввести данные владельца сертификата и парольную фразу приватного ключа.

root@alexey-laptop:~/ssl# openssl req -new -x509 -days 3650 -key tsunami-ca.key -out tsunami-ca.crt
Enter pass phrase for tsunami-ca.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
root@alexey-laptop:~/ssl#

Для создания серверного сертификата, воспользуемся скриптом, который можно скачать по ссылке:
http://www.ixbt.com/comm/prac-lan/wpa-eap/misc/sign_cert.sh
Правим скрипт, изменив переменные в скрипте на свои:

ROOTCA="tsunami"
O=
C=
ST=
L=
OU=
EMAIL=

Ставим на скрипт права на исполнение и запускаем с параметрами для создания ключа и сертификата для сервера аутентификации.

root@alexey-laptop:~/ssl# chmod +x  sign_cert.sh
root@alexey-laptop:~/ssl# bash ./sign_cert.sh server_cert radius.tsunami.local

Как только скрипт отработает, сертификат и ключ сервера можно найти в директории certificates:

root@alexey-laptop:~/ssl#  ls -l certificates/
-rw-r--r-- 1 root root 4198 2009-11-18 00:00 radius.tsunami.local.crt
-rw-r--r-- 1 root root 1743 2009-11-17 23:59 radius.tsunami.local.key
-rw-r--r-- 1 root root 1675 2009-11-17 23:59 radius.tsunami.local.key.unsecure

Файлы готовы для транспортировки на сервер, для этого переходим в консоль управления pfSense и включаем доступ по ssh:

enablesshd

Затем подключаемся и копируем файлы сертификатов и ключа в директорию - /usr/local/etc/raddb/certs.

connectpfsense

И снова правим файл конфигурации «eap.conf», только теперь в секции tls изменяем путь до двух сертификатов и ключа, которые только что скопировали.

tls {
 
 
 
private_key_password = whatever
	private_key_file = ${raddbdir}/certs/radius.tsunami.local.key
 
	certificate_file = ${raddbdir}/certs/radius.tsunami.local.crt
 
	CA_file = ${raddbdir}/certs/tsunami-ca.crt
 
	dh_file = ${raddbdir}/certs/dh
	random_file = ${raddbdir}/certs/random
}

Изменяем права на файлы.

# chmod o-r radius*
# chmod o-r tsunami*