У меня есть контейнер докеров, который запускает phpMyAdmin.
Он использует самогенерируемый сертификат позволяет зашифровать через traefik.
Я использую параметр - PMA_ARBITRARY=1, чтобы по умолчанию не было никакой информации о нем, т.е. пользователь должен ввести хост и т. д.
Он отлично подключается к моей удаленной (управляемой) базе данных.
Проблема внутри пользовательского интерфейса, он говорит, что это не SSL. (адресная строка - SSL, но подключение к удаленной базе данных - нет)
У меня есть сертификат для этой удаленной базы данных на моем сервере, где работает экземпляр phpmyadmin. Я протестировал использование этого сертификата, подключившись к локальному программному обеспечению под названием dbeaver, и оно работает с файлом сертификата.
Как я могу отредактировать файл компоновки докеров, чтобы он мог использовать этот файл?
Файл сертификата находится на моем сервере по адресу: ~/приложения/phpmyadmin/ca.certificate.crt
Я использую portainer для развертывания файла компоновки докеров.
Я думаю, что я должен как-то отредактировать файл config.user.inc.php в контейнере докеров, чтобы установить эти значения:
// Use SSL for connection
$cfg['Servers'][$i]['ssl'] = true;
// Enable SSL verification
$cfg['Servers'][$i]['ssl_verify'] = true;
$cfg['Servers'][$i]['ssl_ca'] = '/etc/phpmyadmin/ca.certificate.crt ';
Нужно ли мне добавить следующее в мой файл компоновки докеров? Может ли config.user.inc.php содержать только необходимые части, а остальные нужно перезаписать?
volumes:
- ~/apps/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
- ~/apps/phpmyadmin/ca.certificate.crt :/etc/phpmyadmin/ca.certificate.crt
вот мой текущий файл компоновки докеров:
version: '3.3'
services:
phpmyadmin:
container_name: phpmyadmin
environment:
- PMA_ARBITRARY=1
image: phpmyadmin
restart: unless-stopped
networks:
- traefik
- default
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.phpmyadmin-secure.entrypoints=websecure"
- "traefik.http.routers.phpmyadmin-secure.rule=Host(`phpmyadmin.example.com`)"
networks:
traefik:
external: true
Спасибо
Я не уверен, что можно определить специфичные для сервера параметры, такие как SSL-сертификаты, если вы используете директиву произвольного сервера и не указываете сервер в config.inc.php
; это, вероятно, выходит за рамки целей дизайна, и такое поведение было бы ненадежным. Гораздо лучше явно указать сервер, включая информацию SSL.
В зависимости от специфики вашего экземпляра сервера вам также могут понадобиться $cfg['Servers'][$i]['ssl_key']
, $cfg['Servers'][$i]['ssl_cert']
, $cfg['Servers'][$i]['ssl_ca_path']
и $cfg['Servers'][$i]['ssl_ciphers']
; см. https://docs.phpmyadmin.net/en/latest/config.html#cfg_Servers_ssl для получения подробной информации о каждой из этих директив.
Файл config.user.inc.php
предназначен только для частей, в которых вы хотите переопределить настройки по умолчанию; у вас может быть файл, содержащий всего несколько строк, если этого достаточно.