Edge for Private Cloud v. 4.16.09
TLS(Transport Layer Security、前身は SSL)は、アプリから Apigee Edge を介してバックエンド サービスに至るまでの API 環境全体で暗号化が適用される、安全なメッセージングを実現する標準的なセキュリティ技術です。
管理 API の環境構成(管理 API の前にプロキシ、ルーター、ロードバランサを使用しているかどうかなど)に関係なく、Edge では TLS を有効にして構成し、オンプレミス API 管理環境でメッセージの暗号化を制御できます。
Edge for Private Cloud のオンプレミス環境では、次のようないくつかの経路で TLS を構成できます。
- Router と Message Processor の間
- Edge Management API へのアクセス
- Edge 管理 UI へのアクセス
- アプリから API へのアクセス
- Edge からバックエンド サービスへのアクセス
以下では、最初の 3 項目に TLS を構成する方法を説明します。ここでは、TLS 証明書と秘密鍵を含む JKS ファイルが作成されていることを前提としています。
アプリから API へのアクセス(上の 4 番目)に TLS を構成する方法については、Private Cloud 用 API への TLS アクセスの構成をご覧ください。Edge からバックエンド サービスへのアクセス(上の 5 番目)に TLS を構成する方法については、Edge からバックエンドへの TLS の構成(Cloud、Private Cloud)をご覧ください。
Edge での TLS 構成の概要については、TLS/SSL をご覧ください。
JKS ファイルの作成
キーストアを JKS ファイルとして表します。このキーストアには TLS 証明書と秘密鍵が格納されます。JKS ファイルの作成方法はいくつかありますが、1 つの方法として openssl および keytool ユーティリティを使用できます。
たとえば、TLS 証明書を含む server.pem という名前の PEM ファイルと、秘密鍵を含む private_key.pem という名前の PEM ファイルがあるとします。次のコマンドを使用して PKCS12 ファイルを作成します。
> openssl pkcs12 -export -clcerts -in server.pem -inkey private_key.pem -out keystore.pkcs12
鍵のパスフレーズ(設定されている場合)とエクスポート パスワードを入力する必要があります。このコマンドにより、keystore.pkcs12 という名前の PKCS12 ファイルが作成されます。
次のコマンドを使用して、これを keystore.jks という名前の JKS ファイルに変換します。
> keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks
JKS ファイルの新しいパスワードと、PKCS12 ファイルの既存のパスワードを入力するよう求められます。JKS ファイルのパスワードは必ず PKCS12 ファイルと同じものにしてください。
Router と Message Processor の間で TLS を構成するなど、キーエイリアスを指定する必要がある場合は、openssl コマンドに「-name」オプションを追加します。
> openssl pkcs12 -export -clcerts -in server.pem -inkey private_key.pem -out keystore.pkcs12 -name devtest
次に、keytool コマンドに「-alias」オプションを追加します。
> keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks -alias devtest
難読化されたパスワードの生成
Edge で TLS を構成する手順において、難読化されたパスワードを構成ファイルに入力しなければならない場合があります。難読化されたパスワードは、パスワードを書式なしテキストで入力する場合よりも安全です。
Java で難読化されたパスワードを生成するには、Edge にインストールされている Jetty .jar ファイルを使用します。次の形式のコマンドを使用して、難読化されたパスワードを生成します。
> IFS= read -rsp Password: passvar; echo; java -cp "/opt/apigee/edge-gateway/lib/thirdparty/*" org.eclipse.jetty.util.security.Password $passvar 2>&1 |tail -2; unset passvar
プロンプトが表示されたら、新しいパスワードを入力します。セキュリティ上の理由から、パスワードのテキストは表示されません。このコマンドを実行すると、パスワードが次の形式で返されます。
OBF:58fh40h61svy156789gk1saj MD5:902fobg9d80e6043b394cb2314e9c6
TLS を構成するときは、OBF で指定された難読化パスワードを使用します。
詳しくは、こちらの記事をご覧ください。