服务器配置问题

时间:2009-04-15 23:45:47

标签: java mysql security configuration encryption

请原谅我的不理解。我有一个本地mysql服务器,我需要能够通过加载通道从Web主机上运行的Java Web应用程序访问该数据。任何人都可以推荐最好的方法吗?

谢谢! 约书亚

6 个答案:

答案 0 :(得分:2)

您需要设置SSH tunnel

答案 1 :(得分:1)

MySQL确实支持SSL连接。

请查看此文档以获取帮助: http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-using-ssl.html

答案 2 :(得分:1)

SSH端口转发

在这种情况下,可以将db_server:3306转发到web_server:3306。然后看起来好像在端口3306上侦听的Web服务器上本地运行的MySQL数据库。但是,Web服务器上的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 webserver

然后,您可以在Web服务器上测试本地数据库访问。您需要在MySQL数据库中正确设置权限,以获取您正在使用的用户和密码。

web_serv $ mysql -h 127.0.0.1 -P 3306 -u user -p db_name

您可能希望将上面的'ssh'行添加到/etc/rc.d/rc.local(在Red Hat上),以便在重新启动时打开隧道。请记住,如果隧道出现故障,您的Web应用程序将无法访问数据库。

答案 3 :(得分:0)

AFAIK MySQL不支持加密流(如果我错了,请纠正我)。

我能看到的一个解决方案是在MySQL服务器和Web主机之间运行加密隧道,并通过它连接到数据库的连接。

答案 4 :(得分:0)

是的,MySQL支持通过SSL加密连接。

您需要一个使用OpenSSL或捆绑的yaSSL构建的MySQL Server版本。如果您的MySQL服务器不是使用SSL支持构建的,则--ssl及相关选项会出错。

您需要使用mysqld选项和相关选项启动MySQL服务器(--ssl)以指定SSL密钥和证书。有关启用MySQL服务器以支持SSL的更多信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/secure-connections.html

您的Java客户端也必须支持SSL。连接时需要提供客户端证书。有关从Java安全连接MySQL的更多信息,请参阅http://dev.mysql.com/doc/refman/5.1/en/connector-j-reference-using-ssl.html

答案 5 :(得分:0)

这与其他答案基本相同,但无论如何都要进行。使用VPN隧道(如openVPN)加密通信。关于它的最好的部分是透明度。当您使用VPN时,您不再需要考虑它,只需发送安全通信即可。当然,设置它并不是一件容易的事......