Я думаю, вам следует использовать wpa _supplicant вместо NetworkManager.
Есть несколько сообщений, описывающих эту ошибку, например здесь . Какой-то пост заключил его как решенный, а какой-то - как нерешенный. Мне просто не удалось понять, как настроить NetworkManager для работы с моим USB-накопителем Wi-Fi.
Я использую CentOS7 3.10.0 -514.10.2.el7.x86 _64 и TP -link TL -WDN5200 usb wifi stick с mt7610u внутри.
sudo wpa_passphrase xdhtc >> /etc/wpa_supplicant.conf # type in the passphrase and hit enter
sudo wpa_supplicant -B -Dwext -ira0 -c/etc/wpa_supplicant.conf # -B background
sudo dhclient ra0
Вы также можете попробовать iw вместо wpa _supplicant, если ваш чип Wi-Fi поддерживает nl80211.
Вы также можете убедиться, что NetworkManager не управляет этой беспроводной сетью. Я попытался позволить NetworkManager и wpa _просителю работать параллельно. Работать они будут без больших проблем, но состояние интерфейса явно не синхронизируется. Поэтому я добавляю эти строки в /etc/NetworkManager/NetworkManager.conf
, чтобы настроить NM игнорировать мое соединение Wi-Fi:
[main]
plugins=keyfile
[keyfile]
unmanaged-devices=interface-name:ra0
Я поместил этот скрипт под ~/.config/autostart/
, чтобы Wi-Fi запускался вместе с ОС, и настроил только один ip через это беспроводное соединение.
sudo wpa_supplicant -B -Dwext -ira0 -c/etc/wpa_supplicant.conf
sudo dhclient ra0
sudo ip r add xx.xx.xx.xx via 192.168.2.1 dev ra0
sudo ip r del default via 192.168.2.1 dev ra0
Подскажите, пожалуйста, есть ли какой-нибудь элегантный способ решить эту проблему.
Вы можете ознакомиться с любым из нескольких онлайн-руководств по этой теме.
В основном вы обычно активируете TLS, а затем добавляете правило авторизации, для которого потребуется сертификат клиента:
SSLVerifyClient require
Это приведет к сбою доступа, и браузер попросит клиента выбрать один из доступных сертификатов, которые должны быть уже установлены в клиентской операционной системе или браузере . Как только выбранный сертификат будет загружен в клиент, он будет автоматически отправлен на сервер.
Теперь добавление также SSLOptions +StdEnvVars
укажет Apache извлечь информацию из сертификата, что позволит вам различать пользователей.
Теперь у вас есть эта ценная информация в среде, и вы можете использовать ее для дальнейшей аутентификации либо в приложении, либо в Apache.
Переменные окружения, которые вам нужны, вероятно, SSL_CLIENT_S_<something>
. SSL_CLIENT_S_DN_CN
— общее имя в сертификате клиента. Затем вы можете ограничить параметры клиентов, как хотите:
SSLRequireSSL
SSLOptions +StdEnvVars +ExportCertData +OptRenegotiate +FakeBasicAuth
SSLVerifyClient require
SSLRequire %{SSL_CLIENT_I_DN_CN} eq "Issuer DN's Common Name"
and %{SSL_CLIENT_S_DN_O} eq "Subject DN's Organisation"
and %{SSL_CLIENT_S_DN_CN} eq "Leonardo Serni"
Обратите внимание, что, как правильно указал @UlrichSchwarz, вы должны принудительно использовать центр сертификации . В противном случае любой мог бы сам -подписать сертификат, подтверждающий что угодно , и вам было бы все равно.
Таким образом, вам следует создать собственный ЦС и использовать этот для создания подписанных сертификатов, которые затем будут распространяться среди ваших клиентов.
UPDATE:I переменные относятся к (I )ssuer, а S относятся к (S )субъекту, что то есть тот, кто выполняет аутентификацию (, то есть ваш клиент ). Вы можете найти полный список и их значение в документации по mod_ssl
.