3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Open Liberty ベースのPod から Db2 on CloudへのSSLでの接続方法

Last updated at Posted at 2021-07-02

Open Liberty、あるいはWebSphere LibertyベースのPod(Javaアプリ搭載)からDb2 on IBM Cloud へのDBアクセスにて、SSLでのDB接続する部分の設定について記載します。

数々の記事を見ながらcloudやkubernetes環境の自習を進めていたのですが、ある時点からDb2 on CloudへのDB接続方法がLiteプランではSSL接続に限定されるようになったようで、この設定に若干時間を費やしてしまったので、設定方法をシェアします。

1. WebSphere Liberty ベースのPodの前提

1.ベースとなる WebSphere Liberty イメージをDocker Hub から取得します。
2.単純なDBアクセスするアプリ(warファイル)、server.xml、JDBCドライバーファイル、DBサーバーのSSL証明書ファイルを、取得したイメージに組み入れて、新たなイメージを作成します。
3.作成したイメージをIBM Cloud上のワーカーノードにデプロイします。

当記事は、上の2.の「関連ファイルの入手と設定」について記述し、イメージ作成やデプロイ方法はここでは割愛します。他の記事を参照ください。

2. DB接続情報の確認

接続情報(ホスト名、ポート番号、データベース名、ユーザーID、パスワード)とSSL証明書ファイルをweb consoleから取得しておきます。

1. IBM Cloudのダッシュボードの左上のメニューから「リソース・リスト」を選択
図1.png

2.「Services」をクリックして開き、接続したいDb2の名前をクリック
図2.png

3.「サービス資格情報」をクリック
図3.png

4.表示されたサービス資格情報をクリックして、内容を表示する。
図4.png
様々な形式でユーザーIDとパスワード情報が書いてありますが、
-uと-pの値や
図5.png
usernameとpasswordの値が
接続時に使用するユーザーDとパスワードになります。

5.「管理」をクリックし「Go to UI」ボタンのクリックにより、Db2 Webコンソールを開く。
図6.png

  左上のメニューをクリックし、「管理」をクリックする。
  「Linux」の手順を参照する。
図7.png

「接続構成リソース」から以下の情報を取得する。

ホスト名
ポート番号
データベース名

3. SSL証明書の取得

同じページにある「SSL証明書のダウンロード」ボタンをクリックしてをSSL証明書をダウンロードする

4. JDBCドライバーの入手

Db2 にアクセスするための JDBC ドライバーです(db2jcc4.jar )。

同じページにある「Linuxドライバー・パッケージのダウンロード元」のリンクから、記載されているファイル名のドライバー・パッケージをダウンロードします。

ダウンロードの詳細な手順は割愛しますが、 IBM ID が必要になりますのでご留意ください。
このファイルを何度か展開し、中にある db2jcc4.jar ファイルを取得します。

5. server.xmlの編集

これは、WebSphere Liberty のメインの設定ファイルで、この中で各種設定を行っています。
今回はDBへのSSL接続に関連する部分のみ記述します。

<?xml version="1.0" encoding="UTF-8"?>
<server description="Default server">

    <!-- Enable features -->
    <featureManager>
        <feature>jdbc-4.2</feature>
        ・・・略・・・
    </featureManager>
    
     <dataSource id="dataSource01" jndiName="jdbc/ds1">
        <properties.db2.jcc
            serverName="xxxxxxxxxxxxxxxxxx"
            portNumber="31198"
            databaseName="bludb"
            user="xxxxxx" 
            password="xxxxxxxx"
            sslConnection="true"
            sslCertLocation="/config/ssl/xxxxxxxx.cer"
        />
        <jdbcDriver libraryRef="DB2JCCLib"/>
    </dataSource>
    <library id="DB2JCCLib">
           <fileset dir="/config/jdbc/" includes="db2jcc4.jar"/>
    </library>

</server>

・feature
 利用する機能を設定するところで、今回はjdbc-4.2を追加しています。
・dataSource
  ・jndiNameはアプリケーション側で指定したJNDI名を設定します
  ・serverName、portNumber、databaseName、user(ユーザー名)、passwordは先ほどDBの資格情報で確認したものを設定します。
  ・sslConnectionをtrueに、sslCertLocationでDBサーバーのSSL証明書の保管場所を示します。
   SSL証明書を組み入れてDockerイメージを作成しますが、その時に指定するパスを設定します。
 ・JDBCドライバーも同様に、libraryのfilesetでDockerイメージを作成時に指定したパスを設定します。

*SSL証明書は、kdb作成等の設定が必要かと調査していましたが、ダウンロードした証明書(cerファイル)をそのまま指定して接続できました。

以上です。

参考にさせていただいた投稿

@shimauma_Zzzzzさん、ありがとうございます。

[IKS + Db2 on IBM Cloud で DBアクセスアプリを動かしてみた(1.概要)]
(https://qiita.com/shimauma_Zzzzz/items/9a513abdf02d11fff55b)

参考資料

[Open Liberty server.xmlでのData Source]
(https://www.openliberty.io/docs/21.0.0.6/reference/config/dataSource.html)
[Database connections with TLS]
(https://openliberty.io/blog/2021/06/04/database-ssl-primer.html)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?