2009-04-15 13 views
1

私のここでの理解不足はご容赦ください。私はローカルのmysqlサーバーを持っており、Webホスト上で実行されているJava Webアプリケーションから暗号化されたチャンネルを介してそのデータにアクセスできる必要があります。誰もがこれを行うための最善の方法をお勧めしますか?サーバーの設定に関する質問

ありがとうございました! Joshua

+0

はserverfault.comに属しています! –

答えて

0

AFAIK MySQLは暗号化されたストリームをサポートしていません(私が間違っている場合は修正してください)。

私が見ることができる1つの解決策は、MySQLサーバとWebホスト間で暗号化されたトンネルを実行し、それを介してデータベースへの接続をルーティングすることです。

2

SSH tunnelを設定する必要があります。

1

SSHポートフォワーディングこの場合

、1でしポートフォワードDB_SERVER:3306:3306 WEB_SERVERへ。それで、ポート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ウェブサーバを

あなたはその後、Webサーバ上のローカルデータベースへのアクセスをテストすることができます。あなたは使用しているユーザーとパスワードのために、MySQLデータベースの権限を正しく設定する必要があります。

web_serv $のmysql -h 127.0.0.1 -P 3306 -uユーザー-p db_nameの

おそらく(/etc/rc.d/rc.localのに上記の 'sshの' 行を追加したいと思いますRed Hat上で)再起動時にトンネルが開くようにします。トンネルがダウンした場合、Webアプリケーションはデータベースにアクセスできません。

0

はい、MySQLはSSLによる暗号化接続をサポートしています。

OpenSSLまたはバンドルされたyaSSLでビルドされたMySQL Serverのバージョンが必要です。 MySQLサーバがSSLをサポートして構築されていない場合は、--sslおよび関連するオプションでエラーが発生します。

--sslオプションを使用してMySQLサーバ(mysqld)を起動し、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を参照してください。

0

これは基本的に他のすべての回答と同じですが、ここにはとにかく行きます。通信を暗号化するには、openVPNなどのVPNトンネルを使用します。それに関する最も良い点は、透明性です。 VPNを利用しているときは、これ以上考える必要はなく、安全な通信を送信するだけです。もちろん、それを設定するのは簡単な部分ではありません...

関連する問題