Java版のCDataSyncをHTTPSで構成する方法について
はじめに
CData Syncは、複数のデータソースやアプリケーション間でのデータの同期と統合の作業を、スムーズかつ効率的に行うことを可能にすることができます。
データベース・クラウドサービス・SaaSアプリケーションなど様々なデータソースに対応しており、企業内のデータを一元化で、データをシームレスに統合して業務運営を実現することが可能です。
CDataSyncと外部との通信をセキュリティの観点から、HTTPS構成にして運用したい場合、HTTPS構成する方法は幾つかあると思います。
今回の記事では、検証や評価のために容易に構成する想定で、無料のSSL証明書が発行可能なZeroSSLを利用して、CDataSyncをHTTPSで構成する方法について確認してみました。
ZeroSSLとは
ZeroSSLは、SSL証明書を手軽に取得できる便利なサービスです。
ZeroSSLの特徴として、非常にシンプルな画面構成で、使いやすいインターフェースかつ直観的に操作ができ、SSL証明書の取得プロセスを分かりやすくガイドしてくれるため、簡単に証明書を発行ができます。
SSL証明書に必要な情報を入力して、最後にドメインの所有権を確認するための手続きを行い、SSL証明書を発行してくれます。
システム構成
OCI上のシステム構成は、上記の通りです。
CDataSyncの設定は、ブラウザからWebアプリケーションにアクセスする必要があります。
したがって、CDataSyncを実行するインスタンスは、パブリックサブネットに配置します。
パブリックサブネットにインスタンスを配置する際、OCIの仮想ファイアウォールとして、ネットワーク・セキュリティ・グループとセキュリティリストの2種類あります。
ネットワーク・セキュリティ・グループには、個々のVNICに対して設定ができ、インバウンドおよびアウトバウンドのトラフィックをインスタンス単位で適用できるため、細かく制御できます。
セキュリティリストは、サブネット単位で適用されるアクセス制御リストです。サブネット内の全てのリソースに対して、アクセス制御が適用されます。
今回の記事では、前者のインスタンス単位で制御ができるネットワーク・セキュリティ・グループで設定を行います。
また、CDataSyncをHTTPSで構成する場合、HTTPS通信にポート番号8443をデフォルトで使用します。
このため、ネットワーク・セキュリティ・グループをインスタンスに適用する際、ポート番号8443に対してトラフィックを許可する設定をします。
検証サーバ
- OracleLinux9
事前準備
CDataSyncのインストール
LinuxOS環境に、CDataSyncをインストールしておいてください。
CDataSyncのインストール手順は、こちらを参照してください。
Apacheのインストールと起動
ZeroSSLで証明書を発行する際、IPアドレスまたはドメイン名の所有権を確認するために、Webサーバ上の特定のディレクトリに、生成された認証情報を配置することで所有権の確認が行われます。
上記の理由からZeroSSLで所有権を検証する時に、ポート番号80に対して通信を
許可するように、セキュリティ・リストで設定をしておいてください。
本記事ではApacheを利用して、ZeroSSLのサーバ証明書を発行しますので、
Apacheのインストールと起動は、準備しておいてください。
※IPアドレスまたはドメイン名の所有権が正常に確認できたら、Apacheは停止しておいてください。
OCIのファイアウォールの設定
CDataSyncがインストールされているLinuxOS環境で、CDataSyncの規定ポート番号が、外部からアクセス可能にするために、ネットワーク・セキュリティ・グループを構成します。
1.OCIWebコンソール上の
仮想クラウド・ネットワーク」から対象のVCNの名前を選択して、
「ネットワーク・セキュリティ・グループ」を作成をクリックします。
表示された画面で、以下の値を入力し、「作成」をクリックして保存します。
1 2 3 4 5 6 |
【方向】イングレス 【ソース・タイプ】CIDR 【ソースCIDR】0.0.0.0/0 【IPプロトコル】TCP 【ソース・ポート範囲】All 【宛先ポート範囲】8443 |
2.OCIWebコンソールに戻り、対象のインスタンスを選択し、
インスタンスの詳細画面の「ネットワーク・セキュリティ・グループ」の編集リンクをクリックします。
作成済のネットワーク・セキュリティ・グループを選択し、「変更の保存」をクリックします。
ZeroSSLのアカウント作成と証明書の発行
1.ZeroSSLでの証明書発行にはアカウントが必要です。
以下のURLへブラウザでアクセスします。
https://app.zerossl.com/login
2.以下の画面で、入力必須項目の「Account Email」と「Password」を入力します。
3.アカウント作成後、「New Certificate」をクリックします。
表示された画面の「Domains」の入力欄に、
HTTPSでアクセス可能にしたいIPアドレスを入力し、「Next Step」をクリックします。
4.「Validity」のラジオボタンでは、「90-Day Certificate」(無料で利用可能な90日間有効な証明書)を選択し、「Next Step」をクリックします。
5.「CSR&Contact」では、「Auto-Generate CSR」(CSRを自動生成)に選択し、「Next Step」をクリックします。
6.以下の選択画面で、IPアドレスの所有権確認のため、
「HTTP File Upload」を選択し、「Download Auth File」をクリックして、ダウロードした「2F***.txt」のテキストファイルをダウンロードして、ローカルに保存します。
7.HTTPSで構成したいインスタンスに、sshで接続します。
8.ZeroSSLが指定しているドキュメントルートに、
ダウンロードした「Auth File」ファイルに含まれている「2F***.txt」のテキストファイルを、".well-known/pki-validation/"に配置します。
配置ディレクトリは、以下のコマンドで作成します。
1 |
# sudo mkdir -p /var/www/html/.well-known/pki-validation/ |
ディレクトリ作成後、「2F***.txt」のテキストファイルは、以下のコマンドで配置します。
1 |
# sudo cp /var/tmp/2F***.txt /var/www/html/.well-known/pki-validation/ |
9.ブラウザで、http://IPアドレス/.well-known/pki-validation/2F***.txt
でアクセスできることを確認します。
10.ZeroSSLから「Vertify Domain」で所有権の検証します。検証が完了すると、「Download Certificate(.zip)」をクリックできるので、サーバ証明書をダウンロードができます。
zipを展開して、
・ca_bundle.crt(CA中間証明書)
・certificate.crt(サーバ証明書)
・private.key(秘密鍵)の3ファイルが含まれているか確認してください。
サーバ証明書をPKCS#12形式に変換
ZeroSSLで取得したprivate.key・certificate.crtから、OpenSSLコマンドで
PKCS#12形式の証明書を生成します。
PKCS#12形式の証明書を生成するには、OpenSSL実行環境が必要になります。
今回は、OpenSSLをyumコマンドでインストールします。
1.HTTPSで構成したいインスタンスに、sshで接続します。
2.以下のyumコマンドで、opensslをインストールします。
1 2 3 4 5 6 7 |
# sudo yum install openssl Last metadata expiration check: 1 day, hh:mm:ss ago on XX 15 XX 2023 hh:mm:ss PM JST. Package openssl-1:3.0.1-41.0.1.el9_0.x86_64 is already installed. ・・・ (中略) ・・・ Complete! |
3.ZeroSSLで発行したcertificate.crtとprivate.keyを、
CDataSyncがインストールされているディレクトリへWinSCPなどを利用してSFTP転送します。
4.以下のopensslコマンドで、certificate.crtをPKCS#12形式へ変換します。
1 2 |
openssl pkcs12 -export -out <適切な名前>.pfx-inkey private.key -in certificate.crt ※ここではcertificate_zerosslとします |
CDataSyncのSSL/TLS有効設定
最後に、CDataSyncがインストールしているディレクトリ直下にある
sync.properties ファイルを編集して、SSL/TLS通信(HTTPS)を有効化にします。
1.HTTPSで構成したいインスタンスに、sshで接続します。
2.CDataSyncがインストールしているディレクトリに移動します。
今回は、opt直下にCDataSyncをインストールしています。
1 |
# cd opt/ |
3.SSL/TLS通信を有効にするsync.properties ファイルを、以下のviコマンド編集します。
1 |
# vi sync.properties |
4.sync.properties ファイルを以下のように修正します。
1 2 3 4 5 6 7 8 9 |
;; HTTP cdata.http.port=<空欄> ;; TLS cdata.tls.port=8443 cdata.tls.keyStoreType=PKCS12 cdata.tls.keyStorePath=<PKCS#12形式の証明書が配置されているディレクトリを指定> ※ここでは、opt/certificate_zerossl.pfx cdata.tls.keyStorePassword=<OpenSSLコマンドで、PKCS#12形式に変換時に設定したパスワード> |
5.sync.properties ファイルを修正した後、以下のsystemctl コマンドでCDataSyncを再起動します。
1 |
# sudo systemctl restart cdatasync.service |
HTTPS構成の確認
それでは実際にCDataSyncが、HTTPS構成になっているかを確認します。
1.クライアントのブラウザから、https://IPアドレス:8443
でCDataSyncへアクセスして、HTTPS構成になっていることを確認します。
これで、OracleLinux9で動作しているCDataSyncをHTTPSで構成することができました。
まとめ
OracleLinux9で動作しているHTTP構成のCDataSyncを、ZeroSSLで発行した
サーバ証明書でHTTPS構成にしてみました。
有効なサーバ証明書が手元にある場合は、CDataSyncをインストールしている
ディレクトリのsync.properties ファイルを、CDataSyncが推奨している設定に修正するだけで、容易にHTTPS構成ができます。