Снимаем комментарий с раздела 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.

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

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

Как можно видеть из скриншота, в этой схеме есть один существенный недостаток, а именно мы не можем со 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#
Для создания серверного сертификата, воспользуемся скриптом, который можно скачать по ссылке:
Правим скрипт, изменив переменные в скрипте на свои:
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:

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

И снова правим файл конфигурации «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*
Оставить комментарий или два