SSL接続設定手順

DataSpiderServerとPostgreSQL間でSSL通信を行うには、秘密鍵および自己署名証明書を生成してPostgreSQLへ配置し、自己署名証明書をDataSpiderServerの参照するキーストアへインポートする必要があります。ここでは、OpenSSLを使用した秘密鍵および自己署名証明書の生成、PostgreSQLのSSL設定、DataSpiderServerの参照するキーストアへのインポート手順を説明します。

OpenSSLに関する詳細は、以下のサイトを参照してください。
http://www.openssl.org/

OpenSSLを使用した秘密鍵と自己署名証明書の生成

PostgreSQLとSSL接続を行うために必要な秘密鍵ファイル(server.key)と自己署名証明書ファイル(server.crt)の生成手順を説明します。
  1. 秘密鍵ファイル(server.key)の生成
    openssl genrsaコマンドを使用してserver.keyファイルを生成します。
    openssl genrsa -des3 -out server.key -rand rand.dat 1024
    Loading 'screen' into random state - done
    0 semi-random bytes loaded
    Generating RSA private key, 1024 bit long modulus
    ..................................++++++
    ......................++++++
    e is 65537 (0x10001)
    Enter pass phrase for server.key:<パスフレーズを入力>
    Verifying - Enter pass phrase for server.key:<パスフレーズを入力>

    上記例では、鍵長として1024bitを指定しています。

  2. 証明書の署名要求ファイル(server.csr)の生成
    openssl reqコマンドを使用してserver.csrファイルを生成します。
    ここでは、server.keyファイル生成時に指定したパスフレーズを使用します。
    openssl req -new -key server.key -out server.csr
    Enter pass phrase for server.key:<パスフレーズを入力>
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:<JP>
    State or Province Name (full name) [Some-State]:<Tokyo>
    Locality Name (eg, city) []:<Bunkyo-ku>
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:<Company Name>
    Organizational Unit Name (eg, section) []:<Section Name>
    Common Name (eg, YOUR name) []:<ホスト名を入力>
    Email Address []:(RETURNを押下)

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:(RETURNを押下)
    An optional company name []:(RETURNを押下)

    また、以下の項目の入力が求められます。
    項目 指定する情報 注意点
    Country Name ISO規定の国コードを指定します。 日本は「JP」です。
    State or Province Name 都道府県名を指定します。  
    Locality Name 市区町村名を指定します。  
    Organization Name 組織名を指定します。  
    Organizational Unit Name 組織の部署名を指定します。  
    Common Name ホスト名を指定します。  
    Email Address 入力不要です。  
    A challenge password 入力不要です。  
    An optional company name 入力不要です。  

    入力文字は、全て半角英数字を使用してください。
    記号は以下の半角文字が使用できます。
    スペース( )、ハイフン(-)、ドット(.)、アンダースコア(_)、カンマ(,)、プラス(+)、スラッシュ(/)、括弧(())

  3. 自己署名証明書ファイル(server.crt)の生成
    openssl x509コマンドを使用してserver.crtファイルを生成します。
    openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 365
    Loading 'screen' into random state - done
    Signature ok
    subject=/C=JP/ST=../L=../O=../CN=..(省略)
    Getting Private key

    上記例では、有効期限として365日を指定しています。

PostgreSQLのSSL設定

PostgreSQLのSSLを有効にするための設定手順を説明します。
  1. 秘密鍵ファイルと自己署名証明書ファイルの配置
    上記手順にて生成した秘密鍵ファイル(server.key)と自己署名証明書ファイル(server.crt)をPostgreSQLをインストールしたディレクトリ以下のdataディレクトリにコピーします。
  2. postgresql.confの設定
    PostgreSQLをインストールしたディレクトリ以下のdataディレクトリにあるpostgresql.confをメモ帳などのエディタで開き、「ssl=on」に設定します。
  3. PostgreSQLの再起動
    PostgreSQLを再起動します。
PostgreSQLをインストールしたディレクトリ以下のdataディレクトリにあるpg_hba.confを編集することで、接続方式をSSL接続のみ許可するような設定ができます。
詳細については、以下のサイト(20.1. pg_hba.confファイル)を参照してください。
http://www.postgresql.jp/document/pg826doc/html/

キーストアへのインポート

自己署名証明書ファイル(server.crt)をキーストアへインポートする手順を説明します。
また、keytoolは以下の実行ファイルを使用します。
  1. 自己署名証明書ファイルのコピー
    上記手順にて生成した自己署名証明書ファイル(server.crt)をDataSpiderServerの任意のディレクトリにコピーします。
  2. 証明書のインポート
    server.crtファイルをキーストアにインポートします。
    keytool -import -alias <別名を入力> -file <コピーしたserver.crtファイルのフルパスを入力> -keystore ${dataspider.home}/jre/lib/security/cacerts -storepass changeit