SSL (Secure Socket Layer)
SSL (Secure Socket Layer)は,サーバとクライアント間の安全なトランザクションのためのプロトコルで,トランザクションの片方または双方の端末の識別に証明書を使います.これはデータベース通信の際に,実際のデータだけでなく,ユーザ名やパスワード等の認証情報を保護するために便利です.
データベースの中には,SSLをサポートしているものとしていないものがあります.お使いのデータベースがSSLをサポートしているかどうかは,データベースのドキュメントをお読みになり,データベースの管理者にお尋ねください.お使いのデータベースがJDBCでSSLを使うように設定できる場合は,SSLを使ってデータベースと
DatabaseLink が通信できるように設定できます.
SSLを確実にサポートしているデータベースのひとつにMySQLがあります.
DatabaseLink はSSLを使ってMySQLデータベースと通信できます.そのためにはデータベースを設定して,証明書の発行とSSL通信ができるようにする必要があります.設定の際は,データベースの管理者にご連絡ください.
SSLを設定してMySQLデータベースを使用するには,一般に以下の4段階が必要です.
3. Javaでtruststoreが使えるように設定する.
サーバの管理者は認証(
CA.cerであるとします)が提供できなければなりません
truststoreファイルを生成する必要がありますが,これはJRE (Java Runtime Environment)の一部である
keytool実行ファイルで行えます.JREは
Mathematica に付属のバージョンが使えます.truststoreファイルを生成するには,以下をシェルで(Windowsではコマンドプロンプトで)実行する必要があります.
keytool -import -file CA.cer -keystore truststore
これでファイル
truststoreが生成されます.
次に,
J/Link が
truststoreファイルを参照するように,Javaコマンドラインを編集します.この編集は,以下の設定を加えて行います.これには生成された
truststoreファイルの完全パスが必要です.
-Djavax.net.ssl.trustStore=c:\java-examples\truststore
-Djavax.net.ssl.trustStorePassword=keystore
webMathematica 等,
Mathematica をWebサーバ内で実行している場合は,サーバのドキュメントに従ってJavaを起動するサーバにこれらの設定を加える必要があります.スタンドアロンで
Mathematica を実行しているときは,
DatabaseLink をロードする前に,以下のように実行してJavaのオプションにこの設定を加えることができます.
Needs[ "JLink`"];
SetOptions[InstallJava, JVMArguments ->"-Djavax.net.ssl.trustStore=c:\java-examples\truststore -Djavax.net.ssl.trustStorePassword=keystore"]
最後に,データベースに接続するURLを変更します.これには,次のようにして「?」を含むパラメータを加えます.
OpenSQLConnection[ JDBC[ "com.mysql.jdbc.Driver",
"databases:1234/conn_test?useSSL=true"], "Username" -> "test"]
すべてのデータベースがSSLをサポートしている訳ではなく,また,SSLをサポートしているMySQL以外のデータベースでも,
DatabaseLink で使えるようにするためには別の方法で設定しなければならないこともあることにご注意ください.