Bug 59975
| Summary: | Сервис падает из-за ошибки генерации сертификатов | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Sisyphus | Reporter: | Лавренко Егор Сергеевич <lavrenkoes> | ||||
| Component: | freeradius | Assignee: | Антон Мидюков <antohami> | ||||
| Status: | NEW --- | QA Contact: | qa-sisyphus | ||||
| Severity: | normal | ||||||
| Priority: | P5 | CC: | antohami, grenka, shaba, vsu | ||||
| Version: | unstable | ||||||
| Hardware: | x86_64 | ||||||
| OS: | Linux | ||||||
| Attachments: |
|
||||||
Проверьте, поможет ли добавление в /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). |

Description
Лавренко Егор Сергеевич 2026-07-27 16:10:42 MSK