вопросы конфигурации сервера - PullRequest
1 голос
/ 16 апреля 2009

Прошу прощения за мое непонимание здесь. У меня есть локальный сервер MySQL, и мне нужно иметь доступ к этим данным по зашифрованному каналу из веб-приложения Java, работающего на веб-хосте. Кто-нибудь может порекомендовать лучший способ сделать это?

Спасибо! Joshua

Ответы [ 6 ]

2 голосов
/ 16 апреля 2009

Вам необходимо настроить SSH-туннель .

1 голос
/ 16 апреля 2009

Переадресация портов SSH

В этом случае можно перенести db_server: 3306 на web_server: 3306. Тогда это выглядело бы так, как если бы база данных MySQL работала локально на веб-сервере, прослушивающем порт 3306. Однако localhost: 3306 на веб-сервере действительно безопасно перенаправляется на localhost: 3306 на сервере базы данных.

Чтобы настроить это, вам понадобится пара ключей без пароля, позволяющая автоматически запускать SSH-туннель. Сделайте следующее:

db_serv$ ssh-keygen -t rsa
db_serv$ scp .ssh/id_rsa.pub webserver:
web_serv$ cd ~; mkdir .ssh
web_serv$ cat id_rsa.pub >> .ssh/authorized_keys2
web_serv$ chmod -R go-rwx .ssh; rm id_rsa.pub
db_serv$ ssh webserver

Последняя команда должна разрешить вам SSH с сервера базы данных без ввода пароля. Пара ключей выполняет аутентификацию.

Команда для открытия туннеля SSH:

db_server $ ssh -f -q -N -R3306: db_server: 3306 веб-сервер

Затем вы можете проверить доступ к локальной базе данных на веб-сервере. Вам нужно будет правильно установить разрешения в базе данных MySQL для пользователя и пароля, которые вы используете.

web_serv $ mysql -h 127.0.0.1 -P 3306 -u пользователь -p db_name

Возможно, вы захотите добавить строку 'ssh' выше в /etc/rc.d/rc.local (в Red Hat), чтобы туннель открывался при перезагрузке. Помните, что если туннель не работает, ваше веб-приложение не может получить доступ к базе данных.

1 голос
/ 16 апреля 2009

MySQL поддерживает SSL-соединения.

Проверьте этот документ для помощи: http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-using-ssl.html

0 голосов
/ 16 апреля 2009

Это в основном то же самое, что и любой другой ответ здесь, но здесь все равно идет. Используйте VPN-туннель, такой как openVPN, для шифрования связи. Лучшая часть об этом - прозрачность. Когда вы находитесь в VPN, вам больше не нужно об этом думать, просто отправляйте безопасные сообщения. Конечно, его настройка - НЕ легкая часть ...

0 голосов
/ 16 апреля 2009

Да, MySQL поддерживает зашифрованные соединения по SSL.

Вам нужна версия MySQL Server, которая была построена либо с OpenSSL, либо с yaSSL в комплекте. Если ваш MySQL сервер не был построен с поддержкой SSL, --ssl и связанные параметры приведут к ошибкам.

Вам необходимо запустить MySQL Server (mysqld) с параметром --ssl и соответствующими параметрами, чтобы указать ключ SSL и сертификат. См. http://dev.mysql.com/doc/refman/5.1/en/secure-connections.html для получения дополнительной информации о включении MySQL Server для поддержки SSL.

Ваш Java-клиент также должен поддерживать SSL. Вам необходимо предоставить сертификат клиента при подключении. См. http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-using-ssl.html для получения дополнительной информации о создании безопасных подключений к MySQL из Java.

0 голосов
/ 16 апреля 2009

AFAIK MySQL не поддерживает зашифрованные потоки (поправьте меня, если я ошибаюсь).

Одним из решений, которое я вижу, было бы создание зашифрованного туннеля между сервером MySQL и веб-хостом и маршрутизация соединений с базой данных через него.

...