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ではコマンドプロンプトで)実行する必要がある.
次に,J/Link がtruststoreファイルを参照するように,Javaコマンドラインを編集する.この編集は,以下の設定を加えて行う.これには生成されたtruststoreファイルの完全パスが必要である.
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 で使えるようにするためには別の方法で設定しなければならないこともあることに注意されたい.
