9.4. Настройка TLS-соединения с СУБД
Процедура одинакова для всех компонентов (eCA-CA, eCA-RA, eCA-VA). Компонент-зависимые значения: в тексте используется плейсхолдер <COMP>, значения — в таблице.
| Компонент | Плейсхолдер <COMP> | Служебные каталоги |
|---|---|---|
| eCA-CA | aecaCa | /opt/aecaCa/ |
| eCA-RA | aecaRa | /opt/aecaRa/ |
| eCA-VA | aecaVa | /opt/aecaVa/ |
Для настройки TLS-соединения компонента с СУБД необходимо:
-
выполнить настройку СУБД в соответствии с подразделом Настройка СУБД;
-
выполнить настройку компонента в соответствии с подразделом Настройка компонента.
Настройка СУБД
Заголовок раздела «Настройка СУБД»Настройка на хосте СУБД не зависит от компонента.
На хосте с установленной и настроенной СУБД отредактируйте файл /var/lib/pgsql/15/data/postgresql.conf (или /var/lib/jatoba/[версия]/data/postgresql.conf, если используется СУБД Jatoba)2, указав:
-
в параметре “ssl” значение “on”;
-
в параметре “ssl_cert_file” абсолютный путь к файлу сертификата сервера СУБД3;
-
в параметре “ssl_key_file” абсолютный путь к файлу закрытого ключа сервера СУБД4;
-
в параметре “ssl_ca_file” абсолютный путь к файлу цепочки сертификатов издателя сертификата СУБД5.
Указанные выше файлы должны иметь метку доступа “600”, установить которую можно с правами суперпользователя с помощью команды chmod 600 путь_к_файлу для каждого файла.
Владельцем всех указанных выше файлов необходимо назначить пользователя “postgres”, выполнив с правами суперпользователя команду chown postgres:postgres путь_к_файлу для всех перечисленных файлов.
Указанные файлы должны располагаться в каталоге, к которому имеет доступ пользователь postgres (например, /tmp). В случае использования ОС РЕД ОС, РОСА “ХРОМ” 12 Сервер или SberLinux OS Server на хосте СУБД указанные выше файлы должны располагаться в каталоге /var/lib/pgsql (или /var/lib/jatoba, если используется СУБД Jatoba). При этом указанные выше файлы должны быть скопированы в нужный каталог, а не перемещены.
Пример значений отредактированных параметров конфигурационного файла СУБД postgresql.conf:
# - SSL -ssl = onssl_cert_file = '/tmp/cert.pem'ssl_key_file = '/tmp/key.key'ssl_ca_file = '/tmp/chain.pem'На хосте СУБД перезапустите СУБД, выполнив с правами суперпользователя команду systemctl restart postgresql (или systemctl restart jatoba-[версия], если используется СУБД Jatoba).
Настройка компонента
Заголовок раздела «Настройка компонента»На хосте компонента отредактируйте конфигурационный файл /opt/<COMP>/scripts/config.sh, указав в параметре конфигурации БД use_tls значение true, а в параметре root_cert_path — абсолютный путь к файлу сертификата корневого издателя из цепочки сертификатов сервера СУБД6.
Указанный файл сертификата корневого издателя должен иметь метку доступа “600” (chmod 600 путь_к_файлу).
Владельцем файла необходимо назначить пользователя “aeca” (chown aeca:aeca путь_к_файлу).
Указанный файл должен располагаться в каталоге, к которому имеет доступ пользователь aeca (например, /tmp). В случае использования ОС РЕД ОС, РОСА “ХРОМ” 12 Сервер или SberLinux OS Server на хосте компонента файл сертификата корневого издателя должен располагаться в каталоге /opt/<COMP> (или в его подкаталогах).
Кроме того, в случае использования ОС РЕД ОС, РОСА “ХРОМ” 12 Сервер или SberLinux OS Server на хосте компонента необходимо дополнительно выполнить команду restorecon -Rv "путь к файлу сертификата корневого издателя".
Примените изменения конфигурационного файла путём выполнения с правами суперпользователя команды bash /opt/<COMP>/scripts/install.sh и дальнейшего выбора действия “[Update]”.
По завершении выполнения указанной команды дальнейший обмен данными компонента с СУБД будет осуществляться только по протоколу TLS. Если в СУБД, к которой выполняется подключение, отключён TLS, компонент не будет выполнять обмен данными с такой СУБД. При этом компонент сможет установить соединение с СУБД только в случае, если её сертификат издан издателем, путь к сертификату которого указан в конфигурационном файле, и только в случае, если имя хоста сервера СУБД соответствует указанному в сертификате.
Footnotes
Заголовок раздела «Footnotes»-
Указанное в сертификате доменное имя сервера СУБД (или IP-адрес) должно соответствовать значению параметра
database_hostконфигурационного файла компонента. ↩ -
Путь к файлу может отличаться в зависимости от версии PostgreSQL или Jatoba. ↩
-
Файл сертификата сервера СУБД может быть скачан из пользовательского интерфейса компонента. Например, в карточке локального субъекта сервера СУБД. ↩
-
Файл закрытого ключа сервера СУБД может быть получен из контейнера закрытого ключа сервера СУБД путём выполнения команды
openssl pkcs12 -in container.p12 -out key.key -nocerts -nodes, гдеcontainer.p12— путь к контейнеру закрытого ключа сервера СУБД, аkey.key— путь к файлу для сохранения закрытого ключа. ↩ -
Файл цепочки сертификатов издателя сертификата СУБД может быть скачан в карточке Центра сертификации, выпустившего сертификат сервера СУБД. ↩
-
Если сертификат сервера СУБД выпущен подчинённым Центром сертификации, необходимо указать путь до сертификата корневого Центра сертификации. ↩
