OutSystemsプラットフォームでSSL証明書をインストールする方法(Linux)
この記事は、オンプレミスまたはプライベートクラウドのインフラに適用されます。
OutSystems PaaS環境には、outsystemsenterprise.comドメインの有効なSSL証明書がデフォルトで含まれています。環境のドメインをカスタマイズする場合は、こちらの記事をご覧ください。
SSL証明書は、組織の詳細に暗号化キーをバインドします。こうした証明書をアプリケーションサーバーにインストールすると、HTTPSプロトコルがアクティベートされます。これにより、Webサーバーと訪問者のWebブラウザとの間に暗号化されたチャネルが確立されるため、盗聴や改ざんの心配なく個人情報を送信できます。
このドキュメントでは、OutSystemsアプリケーションをセキュアな接続経由で使用できるように、SSL証明書をリクエストしてアプリケーションサーバーにインストールする方法の手順について説明しています。これは、.NET/WindowsスタックとJava/Linuxスタックの両方に適用されます。
これらの手順では、複数のIPアドレスを使用している場合でも、同じ名前でのみサーバーにアクセスできるシナリオに重点を置いています。2つ(またはそれ以上)の異なる名前(およびIPアドレス)(1つは内部ネットワーク用、もう1つは外部ネットワーク用)でサーバーにアクセスできるようにする必要がある場合は、これらの手順を名前ごとに繰り返すか、マルチドメイン証明書を使用する必要があります。このようなシナリオでは、OutSystems Supportに連絡してサポートを依頼してください。
このドキュメントの内容を理解するには、サーバーの管理(コマンドラインの使用を含む)および証明書の管理に精通していることが前提となります。
Linuxでの証明書のリクエスト
サーバーに証明書をインストールするには、最初にPKCS#10証明書署名リクエストを発行する必要があります。すでに証明書があり、インストールするだけでよい場合は、このセクションをスキップします。
root権限を持つユーザーとして、すべてのコマンドを実行する必要があります。
- rootとしてログインするか、または通常のユーザーとしてログインして権限をrootに昇格させます。
- 以下のコマンドを実行します。
source /etc/sysconfig/outsystems
alias keytool="$JAVA_HOME/bin/keytool"
以下のコマンドは、ご利用のアプリケーションサーバーとそのバージョンによって異なります。このため、変数を使用して適切に説明します。
- アプリケーションサーバーがJboss 6 EAPまたはJBoss 7 Communityの場合は、以下のコマンドを実行します。
KEYSTORE=$JBOSS_HOME/standalone/configuration/server.keystore
ASUSER=jboss
- アプリケーションサーバーがWildfly 8の場合は、以下のコマンドを実行します。
KEYSTORE=$WILDFLY_HOME/standalone/configuration/server.keystore
ASUSER=wildfly
- アプリケーションサーバーがWebLogicの場合は、以下のコマンドを実行します。
KEYSTORE=$MW_HOME/wlserver/user_projects/domains/outsystems_domain/server.keystore
ASUSER=wls_outsystems
- 以下のコマンドを実行して、ドメインのJavaキーストアと鍵ペアを作成します(キーストアが存在する場合はパスワードの入力が求められます。キーストアが存在しない場合はキーストアが作成された後にパスワードの入力と再入力が求められます)。
keytool -genkey -keyalg RSA -alias <your_server_friendly_name> -keysize 2048 -keystore $KEYSTORE
- keytoolは証明書に必要ないくつかの情報の入力を求めます。
- 以下のコマンドを実行して、ドメインの証明書署名リクエスト(CSR)を生成します。
keytool -certreq -keyalg RSA -alias <your_server_friendly_name> -file certreq.csr -keystore $KEYSTORE
- 選択した.csrファイル名とその保存場所を忘れないようにしてください。認証局からの証明書を注文する際に、このファイルとその内容が必要になります。
証明書の取得
証明書リクエスト(.csrファイル)を生成したら、アプリケーションサーバーにインストールする前に証明書を実際に取得する必要があります。すでに証明書があり、インストールするだけでよい場合は、このセクションをスキップします。
こうした証明書を取得するには、以下の方法があります。
- 認証局に連絡する
- 自社の認証局がある場合は、そこに連絡する
- 自己署名証明書をインストールする(これは本番システムでは推奨されません。ただし、セキュリティが有効になっているときにアプリケーションがどのように動作するかを確認するだけであれば、興味深い代替手段です(このドキュメントでは、このオプションについて詳しく説明しません))
証明書を取得したら、アプリケーションサーバーにインストールする必要があります。以下のセクションでは、OutSystemsプラットフォームでサポートされているアプリケーションサーバーごとに、インストール方法の手順を説明します。これらの手順は、すでにプラットフォームをインストールしていることを前提としています。
証明書のインストール
証明書を取得したら(前のセクションを参照)、アプリケーションサーバーへのインストールに進みます。
root権限を持つユーザーとして、すべてのコマンドを実行する必要があります。
(ルート証明書と)中間証明書のインポート
認証局からルート証明書や1つまたは複数の中間証明書を提供された場合は、それらの証明書をインストールしてからサーバー証明書をインストールする必要があります。こうすることで、サーバー証明書を検証する適切な証明書パスを確保できます。中間証明書ごとに、これらの手順を繰り返す必要があります。
- rootとしてログインするか、または通常のユーザーとしてログインして権限をrootに昇格させます。
- 以下のコマンドを実行します。
source /etc/sysconfig/outsystems
alias keytool="$JAVA_HOME/bin/keytool"
- 以下のコマンドを実行して、信頼できる証明書のリストにルートCA証明書を追加します。
keytool -import -trustcacerts -alias root -file <path/to/root.crt> -keystore $JAVA_HOME/jre/lib/security/cacerts
- cacertsキーストアのパスワードを変更していない場合、デフォルトのパスワードはchangeitです。
- 以下のコマンドを実行して、信頼できる証明書のリストに中間CA証明書を追加します(複数の中間証明書を追加する必要がある場合は、必ず別名とパスを変更してください)。
keytool -import -trustcacerts -alias intermediate -file <path/to/intermediate.crt> -keystore $JAVA_HOME/jre/lib/security/cacerts
- cacertsキーストアのパスワードを変更していない場合、デフォルトのパスワードはchangeitです。
サーバー証明書とそのチェーンのインポート
- rootとしてログインするか、または通常のユーザーとしてログインして権限をrootに昇格させます。
- 以下のコマンドを実行します。
source /etc/sysconfig/outsystems
alias keytool="$JAVA_HOME/bin/keytool"
以下のコマンドは、ご利用のアプリケーションサーバーとそのバージョンによって異なります。このため、変数を使用して適切に説明します。
- アプリケーションサーバーがJboss 6 EAPまたはJBoss 7 Communityの場合は、以下のコマンドを実行します。
KEYSTORE=$JBOSS_HOME/standalone/configuration/server.keystore
ASUSER=jboss
- アプリケーションサーバーがWildfly 8の場合は、以下のコマンドを実行します。
- KEYSTORE=$WILDFLY_HOME/standalone/configuration/server.keystore
- ASUSER=wildfly
- アプリケーションサーバーがWebLogicの場合は、以下のコマンドを実行します。
- KEYSTORE=$MW_HOME/wlserver/user_projects/domains/outsystems_domain/server.keystore
- ASUSER=wls_outsystems
- 以下のコマンドを実行して、キーストアにルートCA証明書をインポートします。
keytool -import -trustcacerts -alias root -file /path/to/rootCA.crt -keystore $KEYSTORE
- 以下のコマンドを実行して、キーストアに中間CA証明書をインポートします(複数の中間証明書をインポートする必要がある場合は、必ず別名とパスを変更してください)。
keytool -import -trustcacerts -alias intermediate -file /path/to/intermediate.crt -keystore $KEYSTORE
- 以下のコマンドを実行して、キーストアにサーバー証明書をインポートします(別名が、CSRを作成したときに使用したものと同じであることを確認してください)。
keytool -import -trustcacerts -alias <your_server_friendly_name> -file /path/to/yourserver.crt -keystore $KEYSTORE
- 以下のコマンドを実行して、キーストアの所有者が適切であることを確認します。
chown $ASUSER:$ASUSER $KEYSTORE
証明書を使用するアプリケーションサーバーの構成
Jboss 6 EAP / JBoss 7 Communityの場合
- rootとしてログインするか、または通常のユーザーとしてログインして権限をrootに昇格させます。
- 以下のコマンドを実行します。
source /etc/sysconfig/outsystems
- ファイル$JBOSS_HOME/standalone/configuration/standalone-outsystems.xmlを編集し、以下のようなエントリを追加します(存在する場合は既存のエントリを更新します)。
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
<ssl password="<パスワード>"
certificate-key-file="${jboss.server.config.dir}/server.keystore"
ca-certificate-file="${jboss.server.config.dir}/cacerts.truststore"/>
</connector>
- Jbossを再起動し、以下のコマンドを実行します。
/etc/init.d/jboss-outsystems restart
Wildflyの場合
- rootとしてログインするか、または通常のユーザーとしてログインして権限をrootに昇格させます。
- 以下のコマンドを実行します。
source /etc/sysconfig/outsystems
- ファイル$WILDFLY_HOME/standalone/configuration/standalone-outsystems.xmlを編集し、security-realms要素の下に以下を追加します(すでにある場合は更新します)。
<security-realm name="SecureApplicationRealm">
<server-identities>
<ssl>
<keystore path="server.keystore"
relative-to="jboss.server.config.dir"
keystore-password="<パスワード>" />
</ssl>
</server-identities>
</security-realm>
さらに、http-listenerの後のundertowサブシステム内に以下を追加します。
<https-listener name="https" socket-binding="https"
security-realm="SecureApplicationRealm"/>
- Wildflyを再起動し、以下のコマンドを実行します。
/etc/init.d/wildfly-outsystems restart
WebLogicの場合
- WebLogicの管理コンソールを開きます。通常は、http://<管理サーバー>:7001/consoleでアクセスできます。
- [Change Center]パネル(画面左上)で、[Lock & Edit]をクリックします。
- [Domain Structure](画面左)にあるoutsystems_domainで、[Environment]をクリックしてから[Servers]をクリックします。
- [Summary of Servers]パネルで、ご利用のサーバーを探し、その名前をクリックします。
- [General]タブで、[SSL Listen Port Enabled]にチェックが付いていることと、使用しているポートが[8443]であることを確認します。
- [Keystores]タブで、以下を確認します。
- [Keystores]が[Custom Identity and Java Standard Trust]に設定されていること。
- [Custom Identity keystore]が、上記のサーバー証明書をインポートしたパスを指していること(デフォルトでは、/opt/Oracle/Middleware/wlserver/user_projects/domains/wlserver/user_projects/domains/outsystems_domain/server.keystoreのようになります)。
- [Custom Identity Keystore Passphrase]([Confirm Custom Identity Keystore Passphrase])が設定されていること。
- [Save]をクリックします。
- [Change Center]パネル(画面左上)で、[Activate Changes]をクリックします。
- rootとしてログインするか、または通常のユーザーとしてログインして権限をrootに昇格させます。
- 以下のコマンドを実行します。
/etc/init.d/weblogic-outsystems restart
HTTPSを使用するためのアプリケーションの構成
上記の手順に従って証明書をインストールしたら、HTTPSを使用してOutSystemsアプリケーションにアクセスできます。ただし、すべてのアクセスを強制的にHTTPからHTTPSにリダイレクトするには、以下の手順を実行します。
- P9 Bali以前のバージョンでは、Webフロー、Web画面、連携でHTTP Securityプロパティを設定する必要があります(詳細については、こちらのヘルプをご覧ください)。
- OutSystems 10以降では、 Webアプリケーションで従来のように(フローレベルまたは画面レベルで)この動作を制御できるだけでなく、環境全体(環境内のすべてのWebアプリケーションに適用)または特定のWebアプリケーションにおいても制御が可能です。LifeTimeがインストールされている場合は、LifeTimeで実行されます。LifeTimeが利用できない場合は、Service Centerで実行されます。
注記: モバイルアプリケーションでは常にHTTPSを使用しているため、この動作を制御できません。