Created attachment 21920 [details] journalctl error.log Система (обновленная до Sisyphus): Alt Server 11.1 x86-64 Версия пакета: freeradius-3.2.8-alt2 Описание ошибки: В условиях истекших сертификатов freeradius было обнаружено, что сервис не может самостоятельно выполнить их перегенерацию Например, на давно развернутой системе (Alt Server в редакции Domain пакет freeradius предустановлен): # openssl x509 -in /etc/raddb/certs/server.pem -noout -dates notBefore=Apr 20 09:03:31 2026 GMT notAfter=Jun 19 09:03:31 2026 GMT При запуске сервиса radiusd.service возникает ошибка: sh[1543]: ERROR:There is already a certificate for /C=FR/ST=Radius/O=Example Inc./CN=Example Server Certificate/emailAddress=admin@example.org ... sh[1560]: make: *** [Makefile:95: server.crt] Error 1 Шаги для более быстрого воспроизведения: 1. Установить пакет: # apt-get install freeradius 2. Имитировать ситуацию, когда файлы сертификатов отсутствуют: # cd /etc/raddb/certs && rm -f server.pem server.key server.crt server.csr 3. Запустить сервис: # systemctl start radiusd.service Ожидаемое поведение: Сервис корректно запустился: При обнаружении отсутствия файлов сертификатов или их невалидности, скрипт должен предварительно выполнять полную очистку старого состояния CA перед запуском новой генерации. Реальное поведение: Сервис падает с ошибкой (полный лог ошибки во вложении) Дополнительно: 1. В P11 также возникало падение с истекшими сертификатами: sh[1595]: C=FR, ST=Radius, L=Somewhere, O=Example Inc., emailAddress=admin@example.org, CN=Example Certificate Authority sh[1595]: error 10 at 1 depth lookup: certificate has expired sh[1595]: C=FR, ST=Radius, O=Example Inc., CN=Example Server Certificate, emailAddress=admin@example.org sh[1595]: error 10 at 0 depth lookup: certificate has expired sh[1595]: error server.pem: verification failed sh[1594]: make: *** [Makefile:107: server.vrfy] Error 2
Проверьте, поможет ли добавление в /lib/systemd/system/radiusd.service строки ReadWriteDirectories=/etc/raddb/certs --- a/.gear/altlinux/freeradius-service +++ b/.gear/altlinux/freeradius-service @@ -27,6 +27,7 @@ ProtectKernelModules=true ProtectKernelTunables=true SystemCallArchitectures=native ReadOnlyDirectories=/etc/raddb +ReadWriteDirectories=/etc/raddb/certs ReadWriteDirectories=/var/log/radius [Install]
Нет, данное исправление не помогло, ошибка не изменилась
>Шаги для более быстрого воспроизведения: >1. Установить пакет: > # apt-get install freeradius >2. Имитировать ситуацию, когда файлы сертификатов отсутствуют: > # cd /etc/raddb/certs && rm -f server.pem server.key server.crt server.csr >3. Запустить сервис: > # systemctl start radiusd.service В p11 это работало?
Нет, в p11 это не работало, была следующая ошибка: systemd[1]: Starting radiusd.service - FreeRADIUS high performance RADIUS server.... sh[1655]: openssl req -new -out server.csr -keyout server.key -config ./server.cnf ... sh[1656]: req: Can't open "server.key" for writing, Read-only file system sh[1655]: make: *** [Makefile:91: server.csr] Error 1 systemd[1]: radiusd.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
(Ответ для Лавренко Егор Сергеевич на комментарий #4) > Нет, в p11 это не работало, была следующая ошибка: … > sh[1656]: req: Can't open "server.key" for writing, Read-only file system Тут как раз понятно, что не работает — в p11 запуск ExecStartPre=/bin/sh /etc/raddb/certs/bootstrap выполнялся из того же radiusd.service, в котором указано ReadOnlyDirectories=/etc/raddb. Хотя можно отключить эти ограничения для конкретной команды, добавив префикс "+" вместо заведения отдельного сервиса: ExecStartPre=+/bin/sh /etc/raddb/certs/bootstrap Сразу после установки пакета эта проблема не проявляется, поскольку сертификаты генерируются в скрипте %post в процессе установки. В freeradius-3.2.8-alt2 вызов bootstrap вынесен в отдельный сервис radiusd-bootstrap.service, поэтому ограничения вида ReadOnlyDirectories=/etc/raddb, указанные в radiusd.service, на процесс bootstrap в любом случае не действуют. Автоматическая перегенерация сертификатов в случае истечения их срока действия, судя по всему, в апстримном raddb/certs/Makefile просто не реализована — там проверяется только наличие файлов. Хотя это может быть и сознательным решением, поскольку эти сертификаты в любом случае не предназначены для реальной работы. Ошибка при генерации нового server.crt при наличии старых файлов CA, вероятнее всего, может быть устранена изменением настроек — в файлы /etc/raddb/certs/*.cnf в секцию [CA_default] нужно добавить параметр: unique_subject = no (По умолчанию "openssl ca" не разрешает создавать сертификаты с повторяющимися DN.) Ещё, возможно, при перегенерации ca.key и ca.pem старые файлы serial и index.txt нужно удалять (смена ключа в любом случае будет означать, что это другой CA).