B 通信の保護
通信を保護するには、次のタスクを実行する必要があります。
B.1 OAMサーバーとWebゲート間に安全な通信を設定するための前提条件
OAMサーバーとWebゲート間の安全な通信の設定を続行する前に、システム・レベル要件が満たされていることを確認します。
-
OAMサーバー・モードがCERTモードの場合、エージェントはCERTモードを使用する必要があります。
-
エージェントの登録中に、少なくとも1つのOAMサーバー・インスタンスがエージェントと同じモードで実行していることが必要です。エージェント登録の後に、OAMサーバーのモードは変更できます。
関連項目:
-
SSL自動化ツールと、WebLogic Server、Oracle HTTP ServerおよびOracle Fusion Middleware用ポートの管理の詳細は、次を参照してください。
『Oracle Fusion Middlewareの管理』を参照してください。
B.2 OAMサーバーとWebゲート間の通信の保護
OAMサーバーとクライアント(Webゲート)間の通信を保護するということは、コンポーネント登録ページ内のNAP (OAPとも呼びます)チャネルに対してトランスポート・セキュリティ・モードを定義することを意味します。
チャネルのセキュリティ・レベルは、次のいずれかに指定されます。
-
オープン: 暗号化されていない通信
オープン・モードでは、WebGateとOAMサーバー間で認証または暗号化は行われません。WebGateはOAMサーバーのアイデンティティの証明を要求せず、OAMサーバーはすべてのWebGateからの接続を受け入れます。オープン・モードは、通信のセキュリティがデプロイメントで問題にならない場合に使用します。
-
簡易: Oracleにより発行された公開キー証明書を使用したSecure Sockets Layer (SSL)プロトコルによる暗号化された通信。
簡易モードは、プレーン・テキストでパスワードを送信したくないといったセキュリティ上の懸念があるものの、独自の認証局(CA)を管理しない場合に使用します。この場合、OAMサーバーおよびWebゲートはOracle CAにより発行および署名された同じ証明書を使用します。
「簡易モード、暗号化およびキーについて」を参照してください。
-
証明書: 信頼されているサード・パーティ認証局(CA)により発行された公開キーを使用したSSLによる暗号化された通信。
証明書モードは、OAMサーバーとWebゲートで異なる証明書を使用し、信頼できるサード・パーティCAにアクセスできる場合に使用します。このモードでは、DESアルゴリズムを使用して秘密キーを暗号化する必要があります。Access ManagerコンポーネントはPEM形式でのX.509デジタル証明書のみを使用します。PEMとはプライバシ強化メールのことであり、パスフレーズが必要です。PEM(プライバシ強化メール)形式は秘密キー、デジタル証明書、および信頼されている認証局(CA)に適しています。推奨するキーストアのフォーマットはJKS (Javaキーストア)フォーマットです。
「証明書モードの暗号化およびファイルについて」を参照してください。
-
HTTP: ユーザー定義の暗号化されていない通信モード。
ユーザー定義パラメータ
OAMServerCommunicationMode
がHTTPに設定されている場合、WebGateはHTTPプロトコルを使用してOAM管理対象サーバーと通信します。 -
HTTPS: Secure Sockets Layer (SSL)プロトコルを介した、ユーザー定義の暗号化された通信モード。
ユーザー定義パラメータ
OAMServerCommunicationMode
がHTTPSに設定されている場合、WebGateはHTTPSプロトコルを使用してOAM管理対象サーバーと通信します。 - OAP: ユーザー定義パラメータ
OAMServerCommunicationMode
がOAP
に設定されている場合、Webゲートは、「オープン」、「簡易」または「証明書」の通信モードを利用し、レガシー・バック・チャネルのプロトコルOAPを使用して、TCPポート経由でOAM管理対象サーバーと通信します。
関連項目:
論理的に、リクエストはAccess Manager資格証明コレクタに送信されます。ただし、Webサーバー・プロキシがWebLogic AdminServerの前にある場合、<LocationMatch "/*">によって、すべてのリクエストがプロキシ経由でルーティングされます。この場合、プロキシを使用した周辺防衛が存在します。
図B-1に、ユーザー認証および認可中にOAMサーバーおよびWebゲートにより使用される通信チャネルを示します。
プロセスの概要: 認証および認可
-
リクエストはWebGateにより捕捉されます。
-
認証(資格証明の集合)がHTTPチャネルを通じて発生します。
-
認可がOAMエージェントのみでNAPチャネルを通じて発生します。
Secure Sockets Layer (SSL)プロトコルを使用することで、HTTP (HTTPS)チャネルを通じた傍受と介入者攻撃の成功を防ぐことができます。SSLプロトコルはほとんどのWebサーバー製品およびWebブラウザの一部として含まれます。SSLはデジタル証明書を含む、効果および秘密キー暗号化システムを使用します。Webサーバーまたはディレクトリ・サーバーに対するSSL通信の有効化についての詳細は、ベンダーのドキュメントを参照してください。
PEM(プライバシ強化メール)形式(BASE64エンコードASCII)は秘密キー、デジタル証明書、および信頼されている認証局(CA)に適しています。OAMサーバーにとっての望ましいキーストア形式はJCEKSで、OAMクライアントの場合はJKS (Java KeyStore)形式です。Access Managerコンポーネントは、DER(バイナリ形式の証明書)形式のみのX.509デジタル証明書を使用します。
参照:
B.2.1 証明書、認証局および暗号化キーについて
デジタル証明書はレジストリに格納でき、そこから認証ユーザーが他のユーザーの公開キーを検索できます。
公開キー・インフラストラクチャにより、デジタル証明書は次のものに基づきWebベースのトランザクションの資格証明を確立します。
-
証明書の所有者の名前
-
証明書のシリアル番号
-
証明書の有効期限
-
証明書の所有者の公開キーのコピー、これはメッセージおよびデジタル署名の暗号化に使用されます
-
証明書を発行する認証局のデジタル署名が提供されて、受信者はその証明書が本物であることを確認できます
暗号化では、公開キーは暗号化キーとして使用される、指定した認証局により提供された値です。公開キーを使用するためのシステムは公開キー・インフラストラクチャ(PKI)と呼ばれます。公開キー・インフラストラクチャの一部として、認証局は登録局(RA)に問合せてデジタル証明書のリクエスタにより提供された情報を検証します。RAがリクエスタの情報を検証すると、CAは証明書を発行できます。
秘密キーは公開キーから導出できます。公開キーおよび秘密キーの組合せは非対称暗号と呼ばれ、メッセージおよびデジタル署名を効果的に暗号化するのに使用できます。
B.2.2 セキュリティ・モードおよびX509Scheme認証について
X509認証スキーム(X509Scheme)では、OAMサーバーSSLポートはサーバー・ポートと異なっていて、クライアント証明書を必要とするよう構成されている必要があります。X509Schemeを使用していると、X509モジュールは資格証明コレクションの後にコールされます。X509SchemeはX509チャレンジ・メソッドとX509認証モジュールを必要とします。資格証明コレクタへの完全修飾URLをX509Scheme内のチャレンジURLとして指定する必要があります。たとえば: https://
managed_server_host:managed_server_ssl_port
/oam/CredCollectServlet/X509
ノート:
相対的なチャレンジURLをX509Schemeで指定した場合、OAMサーバーは指定したサーバー・ホスト/ポートを使用してX509資格証明コレクタの完全修飾URLを構築します。ただし、この構成は動作しません。
関連項目:
B.2.3 Importcertツール
管理者はOracleが提供するimportcert
ツールを、キーストア、キーおよび証明書に関連した様々な手順で使用します。
表B-1は、importcert
コマンドの構文を示しています。
表B-1 importcertコマンドの構文
オプション | 説明 |
---|---|
keystore |
このコマンドを、既存の(または新規)キーストアのパスで続けます。たとえば: /scratch/.oamkeystore or /scratch/clientKey.jks |
privatekeyfile |
このオプションを、秘密キーのパスで続けます。たとえば: /scratch/aaa_key.der |
signedcertfile |
このオプションを、署名済証明書のパスで続けます。たとえば: /scratch/aaa_cert.der |
alias |
このオプションを、キーストア・エントリ別名で続けます。genkeystoreで必要です。 alias |
storetype |
このオプションを、キーストア・タイプで続けます。デフォルトでは、ストア・タイプはJCEKS (OAMサーバー・キーストア)です。たとえば: サーバー・キーストア.oamkeystoreのタイプは次のようになります。 JCEKS クライアント・キーストア/scratch/clientTrustStore.jksおよび/scratch/clientKey.jksを使用できます。どちらも、次のタイプになります。 JKS |
genkeystore |
このフラグは、OAMクライアント証明書を生成する場合に必要です。クライアントでは、別名および別名パスワードのパラメータが表示されません。しかし、importcertツールはキーストア・パスワードを別名パスワードとして設定します。 指定: Yes or No Yesは、証明書を新しいキーストアにインポートします。 Noは、証明書を既存のキーストアにインポートします。 |
OAMサーバーの場合の例 |
- java -cp importcert.jar oracle.security.am.common.tools.importcerts.CertificateImport -keystore <path to .oamkeystore> -privatekeyfile <path to aaa_key.der> -signedcertfile <path to aaa_cert.der> -alias oam.certmode -aliaspassword <password> -storetype <JCEKS> genkeystore <yes> キーストア・パスワードと別名パスワードを、求められたら入力します。 |
OAMクライアントの場合の例 |
- java -cp importcert.jar oracle.security.am.common.tools.importcerts.CertificateImport -keystore <path to clientkey.JKS> -privatekeyfile <path to aaa_key.der> -signedcertfile <path to aaa_cert.der> -storetype <JKS> genkeystore <yes> キーストア・パスワードを、求められたら入力します。 |
B.2.4 Oracle Access ManagementでのTLS 1.3およびTLS 1.2のサポート
OAM 12cでは、Transport Layer Security (TLS) 1.3およびTLS 1.2がサポートされ、インターネット経由の通信にセキュリティを提供しています。このプロトコルを使用すると、クライアント/サーバー・アプリケーションの通信における、傍受、改ざんまたはメッセージ偽造を防止できます。
OAMがTLS 1.3をサポートするのはフロント・チャネルに対してのみです。OAP over HTTPを使用してOAM管理対象サーバーとWebゲートの通信をサポートします。
次の通信モードはサポートされません。
- OAP over TCP
- OHS
- Oracle DatabaseとのOAMバックチャネル通信
- LDAPアイデンティティ・ストアとのOAMバックチャネル通信
OAMは、次のチャネルを介してTLS 1.2をサポートします。
チャネル | TLS 1.2のステータス |
---|---|
フロント |
受信トラフィックがロード・バランサ、WebサーバーまたはWeblogic Server上で終了するため、TLS 1.2は完全にサポートされます。 |
OAPバック |
12c Webgateは、TLS 1.2を完全サポートします。 |
LDAPバック |
TLS 1.2トランスポートは、11.1.2.3.0 BP8でサポートされます。ただし、IDSベースのユーザー・アイデンティティ・ストアを使用する場合、TLS 1.2はサポートされません。 |
JDBCバック |
データベースはWLSデータ・ソースを使用して抽象化されています。データベースへの接続にTLS 1.2を使用するように構成できます。OESはJDBCをデータベース抽象化として使用しており、TLS 1.2を使用するように構成できます。 |
アウトバウンドHTTPS |
アウトバウンド通話はすべてJSSEを使用しており、JDK固有のデフォルトに依存しています。JDK 6 121 UpdateおよびJDK 7 Update 95以降、システム・プロパティjdk.tls.client.protocolsを構成することによってプラットフォームTLSプロトコルを制御できます。 |
TLS 1.2は、JDKでインストールされる暗号化スイートをサポートします。
新しくインストールされた環境の場合
-
12c PS3 OAMサーバーと12c PS3 Webゲートを検討します(最新バージョンのOAMサーバーとWebゲートを使用します)。これらの間のSSL通信では、TLSv1.2プロトコルおよびSHA-2証明書を使用します。
-
12c PS3 OAMサーバーと12CPS2/ R2PS3 Webゲートを検討します(以前のバージョンのWebゲートとOAMサーバーを使用します)。OAMではTLSv1.2およびSHA-2証明書がサポートされますが、12CPS2/ R2PS3 Webゲートではサポートされません。
最新の12c OAMサーバーを、TLS1.2およびSHA2がサポートされない以前のバージョンのWebゲート/OAMサーバーと組み合せて使用するため、次の変更で
java.security
ファイルを更新して、OAMのセキュリティ方針を緩和する必要があります。-
JAVA_HOME/jre/lib/security/
にあるjava.security
ファイルをエディタで開きます。 -
次のキーからTLSv1、TLSv1.1、MD5withRSAを削除します。
キー - jdk.tls.disabledAlgorithms
-
次のキーからMD5を削除します。
キー - jdk.certpath.disabledAlgorithms
-
OAM 12c環境でTLSv1.2を有効化するステップ
OHSでTLSv1.2を有効化します。
12c OHSで次の2つのファイルを更新します。
/scratch/work/TLStest/OHS12c/Oracle_Home/user_projects/domains/base_domain/config/fmwconfig/components/OHS/ohs1/ssl.conf
/scratch/work/TLStest/OHS12c/Oracle_Home/user_projects/domains/base_domain/config/fmwconfig/components/OHS/instances/ohs1/ssl.conf
SSLProtocol -ALL +TLSv1.2
DBでTLSv1.2を有効化します。
次のステップに従ってDBで有効化します。
-
サーバーjnetadmin_sおよびクライアントjnetadmin_cにウォレットを作成します
mkdir root mkdir jnetadmin_s mkdir jnetadmin_c export ORACLE_HOME=/scratch/alice/work/db1427 export T_WORK=$ORACLE_HOME export ROOT_CERT_DIR=$T_WORK/root export TNS_ADMIN_SERVER=$T_WORK/jnetadmin_s export TNS_ADMIN_CLIENT=$T_WORK/jnetadmin_c ./orapki wallet create -wallet $ROOT_CERT_DIR -pwd welcome1 ./orapki wallet add -wallet $ROOT_CERT_DIR -dn "CN=Root,C=US" -keysize 2048 -self_signed -validity 3650 -pwd welcome1 ./orapki wallet export -wallet $ROOT_CERT_DIR -dn "CN=Root,C=US" -cert $ROOT_CERT_DIR/b64certificate.txt -pwd welcome1 ./orapki wallet create -wallet $TNS_ADMIN_SERVER -auto_login -pwd welcome1 ./orapki wallet add -wallet $TNS_ADMIN_SERVER -dn "CN=Server,OU=ST,O=Oracle,ST=California,C=US" -keysize 2048 -pwd welcome1 ./orapki wallet export -wallet $TNS_ADMIN_SERVER -dn "CN=Server,OU=ST,O=Oracle,ST=California,C=US" -request $TNS_ADMIN_SERVER/creq.txt -pwd welcome1 ./orapki cert create -wallet $ROOT_CERT_DIR -request $TNS_ADMIN_SERVER/creq.txt -cert $TNS_ADMIN_SERVER/cert.txt -validity 3650 -pwd welcome1 ./orapki wallet add -wallet $TNS_ADMIN_SERVER -trusted_cert -cert $ROOT_CERT_DIR/b64certificate.txt -pwd welcome1 ./orapki wallet add -wallet $TNS_ADMIN_SERVER -user_cert -cert $TNS_ADMIN_SERVER/cert.txt -pwd welcome1 ./orapki wallet create -wallet $TNS_ADMIN_CLIENT -auto_login -pwd welcome1 ./orapki wallet add -wallet $TNS_ADMIN_CLIENT -dn "CN=Client,OU=ST,O=Oracle,ST=CA,C=US" -keysize 2048 -pwd welcome1 ./orapki wallet export -wallet $TNS_ADMIN_CLIENT -dn "CN=Client,OU=ST,O=Oracle,ST=CA,C=US" -request $TNS_ADMIN_CLIENT/creq.txt -pwd welcome1 ./orapki cert create -wallet $ROOT_CERT_DIR -request $TNS_ADMIN_CLIENT/creq.txt -cert $TNS_ADMIN_CLIENT/cert.txt -validity 3650 -pwd welcome1 ./orapki wallet add -wallet $TNS_ADMIN_CLIENT -trusted_cert -cert $ROOT_CERT_DIR/b64certificate.txt -pwd welcome1 ./orapki wallet add -wallet $TNS_ADMIN_CLIENT -user_cert -cert $TNS_ADMIN_CLIENT/cert.txt -pwd welcome1 ./orapki wallet add -wallet $TNS_ADMIN_CLIENT -trusted_cert -cert $TNS_ADMIN_SERVER/cert.txt -pwd welcome1
-
wallet.oraファイルを作成/編集します
cd jnetadmin_s
vim wallet.ora
内容は次のとおり。
WALLET_LOCATION= (SOURCE= (METHOD=FILE) (METHOD_DATA= (DIRECTORY=/scratch/alice/work/db1427/jnetadmin_s/) ) )
-
sqlnet.oraを編集します
SSL_VERSION=1.2 ssl_client_authentication=false ifile=/scratch/alice/work/db1427/jnetadmin_s/wallet.ora
-
listener.oraを編集します
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = slc03rvu.us.oracle.com)(PORT = 1521)) (ADDRESS=(PROTOCOL=tcps)(HOST=slc03rvu.us.oracle.com)(PORT=5551)) ) ) ADR_BASE_LISTENER = /scratch/work ssl_client_authentication=false ifile=/scratch/alice/work/db1427/jnetadmin_s/wallet.ora SSL_VERSION=1.2 SID_LIST_listener=(SID_LIST= (SID_DESC=(SID_NAME=db1427)(ORACLE_HOME=/scratch/alice/work/db1427)) (SID_DESC=(SID_NAME=db1427)(GLOBAL_DBNAME=db1427.us.oracle.com)) )
-
データベースとリスナーを再起動します
restart DB
lsnrctl stop
lsnrctl start
-
opensslを使用して、TLSv1.2を検証します
openssl s_client -showcerts -tls1_2 -connect slc03rvu.us.oracle.com:5551
WLS JDBC TLSデータ・ソースを追加します。
-
ステップ3で生成したDBサーバー証明書をWLS Demo Trust.jksにインポートします
keytool -importcert -trustcacerts -alias dbroot -keystore $MW_HOME/wlserver/server/lib/DemoTrust.jks -storepass DemoTrustKeyStorePassPhrase -file $ROOT_CERT_DIR/b64certificate.txt
-
wlsコンソール->「サービス」->「データ・ソース」と移動し、TLS接続の詳細を使用して次のJDBCデータ・ソースを更新します。
-
各データ・ソースを開いて、次のように接続プール、更新URLおよびプロパティをクリックします。
URLの例:
jdbc:oracle:thin:/@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCPS)(HOST=slc03sfc.us.oracle.com)(PORT=2484)))(CONNECT_DATA=(SERVICE_NAME=db4758..us.oracle.com))(SECURITY=(SSL_SERVER_CERT_DN="CN=slc03sfc.us.oracle.com")))
プロパティ例:
javax.net.ssl.trustStoreType=JKS javax.net.ssl.trustStorePassword=DemoTrustKeyStorePassPhrase javax.net.ssl.trustStore=/net/slc03sfc/scratch/work/mw4838/wlserver_10.3/server/lib/DemoTrust.jks
-
サーバーを再起動します。
複数のモードを使用してWLS上のOAPチャネルのTLSを有効化します。
「Oracle HTTP Server WebGate for Oracle Access Managerの構成」を参照して、12c証明書および簡易モードを構成します。
jdk.certpath.disabledAlgorithms
オプションからMD5を削除し、$OHS_ORACLE_HOME/user_projects/domains/base_domain/config/fmwconfig/components/OHS/ohs1/ohs.plugins.nodemanager.propertiesファイルに次のプロパティを追加します。 environment.ORACLE_SSL_ALLOW_MD5_CERT_SIGNATURES=1
OAMとユーザー・アイデンティティ・ストア間のTLS1.2通信を有効化します
次のステップに従います:
-
OAMコンソールにログインします。
-
新しいOAM IDストアを作成します。
-
デフォルト・ストアを、作成したIDストアに更新します。
-
LDAP認証モジュールを、作成したIDストアに更新します。
-
すべてのサーバーをシャットダウンし、OUDの証明書をJDKキーストアにインポートします。
openssl s_client -showcerts -connect slc06bku.us.oracle.com:1636 </dev/null2>/dev/null|openssl x509 -outform PEM >cert.pem openssl x509 -outform der -in cert.pem -out cert.der keytool -importcert -alias oud -file cert.der -keystore cacerts -storepass changeit
-
LDAPサーバーへのTLSv1.2接続をサポートするには、
oam-config.xml
ファイルでLDAP_URL
パラメータの後に、LDAP_SSL_PROTOCOL
パラメータを値TLSv1.2
を指定して追加します。oam-config.xml
にパラメータを設定するには:- exportメソッドを使用して、OAM構成ファイルを
/tmp/oam-config.xml
にエクスポートします。詳細は、「OAM構成の更新」を参照してください。 - エクスポート済の
/tmp/oam-config.xml
ファイルで「IdentityStore」セクションを特定し、次の行を検索します:<Setting Name="LDAP_URL" Type="xsd:string">ldaps://myldap.example.com:1636</Setting>
ノート:
LDAP_URL
に、ldaps
プロトコルおよび使用中のディレクトリ・サービス・アイデンティティ・ストアのLDAPSポートが含まれていない場合、LDAPSを使用するように更新します。たとえば、ldap://myldap.example.com:1389
をldaps://myldap.example.com:1636
に更新します。 LDAP_URL
エントリの後にLDAP_SSL_PROTOCOL
パラメータを追加します:<Setting Name="LDAP_SSL_PROTOCOL" Type="xsd:string">TLSv1.2</Setting>
oam-config.xml
ファイルのエントリは、次の例のようになっている必要があります:<Setting Name="LDAP" Type="htf:map"> ... <Setting Name="LDAP_URL" Type="xsd:string">ldaps://myldap.example.com:1636</Setting> <Setting Name="LDAP_SSL_PROTOCOL" Type="xsd:string">TLSv1.2</Setting>
- importメソッドを使用して、更新済の構成を
/tmp/oam-config.xml
からインポートします。詳細は、「OAM構成の更新」を参照してください。
- exportメソッドを使用して、OAM構成ファイルを
-
config/fmwconfig/servers/oam_server1/logging.xml
およびconfig/fmwconfig/servers/AdminServer/logging.xml
に次の行を追加します<logger name='oracle.oam.user.identity.provider' level='TRACE:32'useParentHandlers='false'> <handler name='odl-handler'/> </logger>
-
サーバーを起動して保護リソースにアクセスすると、oam_server1-diagnostic.logへのtlsログインが記録されます。
[2016-08-09T01:46:49.398-07:00] [oam_server1] [TRACE:32] [] [oracle.oam.user.identity.provider] [tid: [ACTIVE].ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 036b5306-7533-4458-ad54-5f5be25adadf-00000106,0] [APP: oam_server] [partition-name: DOMAIN] [tenant-name: GLOBAL] [SRC_CLASS: oracle.security.am.engines.common.identity.provider.impl.ids.IDSLDAPConfigurator] [SRC_METHOD: getIDSInstance] Setting ssl protocol as TLSv1.2
IDSプロファイルを使用してOAM用TLSを有効化します
次のステップに従います:
-
OAMコンソールにログインします。
-
IDSプロファイルを作成します。
-
「IDSプロファイルの同期」をクリックし、デフォルト・ストアを、作成したIDSプロファイルに更新します。
-
LDAP認証モジュールを、作成したIDストアに更新します。
-
wlstを使用してID libovdにTLSパラメータを追加し、
modifyLDAPAdapter(adapterName='IdsProfile', attribute='Protocols', value='TLSv1.2', contextName='ids')
-
ids libovdにキーストアを作成し、
export ORACLE_HOME=/scratch/work/mw169
export WL_HOME=/scratch/work/mw169/wlserver
export JAVA_HOME=/scratch/work/view/nowang_dte8461/bootstrap/java/1.8.0-51-16-150608.1.8.0.51.0016/jdk
./libovdconfig.sh -host slc03sfc.us.oracle.com -port 22899 -userName weblogic -domainPath /scratch/work/mw169/user_projects/domains/WLS_IDM -createKeystore -contextName ids
-
libOVDキーストアにOUD証明書を追加し、
openssl s_client -showcerts -connect slc06bku.us.oracle.com:1636 </dev/null 2>/dev/null|openssl x509 -outform PEM >cert.pem
openssl x509 -outform der -in cert.pem -out cert.der
keytool -import -keystore adapters.jks -storepass weblogic1 -alias oud -file cert.der
-
"-Dssl.debug=true -Dweblogic.StdoutDebugEnabled=true -Djavax.net.debug=all"
をsetDomainEnv.sh
に追加して、oam_server1
出力コンソール・リダイレクト・ファイルからのTLS接続メッセージをログで確認します。 -
すべてのサーバーを再起動し、保護リソースにアクセスします。
B.3 OAP over RESTを使用したOAMサーバーとWebGates間の通信の保護
OAP over RESTでは、HTTP(S)転送を使用してOAMサーバーとWebGates間の安全な通信を確保します。
B.3.1 OAP over REST通信について
OAP over RESTを使用すると、WebGateとOAMサーバー間のHTTP(S)転送メカニズムが有効になります。この転送メカニズムにより、クラウド・デプロイメントとハイブリッド・デプロイメント(一部のコンポーネントがオンプレミスで、その他のコンポーネントがクラウドに移行されている)の両方の運用コストが削減されます。
OAPは、デフォルトでRESTPayloadEncryption
を使用してサーバーに送信されるメッセージを暗号化することで、追加のセキュリティ・レイヤーを提供します。
- 管理対象サーバー
/iam/access/binding/api/v10/oap
にデプロイされたサーバー・フィルタとしてのRESTエンドポイント。 - ワーク・マネージャ・コンポーネント。「OAP over REST用のワーク・マネージャの構成」を参照してください
この12.2.1.4.0リリースのOracle Access Managementでは、OAP over RESTがデフォルトの通信方法です。SSOエージェントを作成するたびに、デフォルトで次の追加パラメータが設定されます。
OAMRestEndPointHostName=host1.com
、OAMRestEndPointPort=443
およびOAMServerCommunicationMode=HTTPS
「マルチデータ・センターでのマスターおよびクローンの設定」も参照してください
B.3.2 OHSでのOracle mod_wl_proxyを使用したロード・バランサの構成
WebGateと管理対象サーバー間のロード・バランサとしてmod_wl_proxy
プラグインを構成し、サーバーの負荷を検出して、クライアントのリクエストを適切に転送します。
mod_wl_proxy
プラグインの構成の詳細は、WebLogicプロキシ・プラグインの構成に関する項を参照してください。
例
host1.comのSSLポート443で実行されているOHSでmod_wl_proxyが構成され、2つの管理対象サーバー・インスタンスがclst1.example.com:24100およびclst2.example.com:24100で実行されているデプロイメントについて考えてみましょう
WebGate構成は次のようになります:
OAMRestEndPointHostName=host1.com
OAMRestEndPointPort=443
OAMServerCommunicationMode=HTTPS
mod_wl_proxy
構成は次のようになります:
<IfModule weblogic_module>
WebLogicCluster clst1.example.com:24100,clst2.example.com::24100
DynamicServerList ON
MatchExpression /iam/access/binding/api/v10/oap
KeepAliveSecs 90
</IfModule>
mod_wl_proxy
は、ロード・バランシングにDyanamicServerList
プロパティを使用し、これにより負荷を動的に検出して、クラスタ内のサーバーの追加または削除を適宜実行します。
mod_wl_proxy
では、次のロード・バランシング・アルゴリズムがサポートされます:
- ラウンドロビン - これは、他のアルゴリズムが指定されていない場合に使用されるデフォルトのロード・バランシング戦略です。ラウンドロビン・アルゴリズムは、クラスタ化されたサーブレットをホストするサーバー・インスタンスのリストを順番に従って周期的にロード・バランシングします。
- 重みベース - このロード・バランシング戦略では、各サーバー・インスタンスに割り当てる相対的な重みを慎重に決定します。
- ランダム - リクエストはランダムにサーバーにルーティングされ、クラスタ内のサーバー・インスタンス間で均等に分散されます。
- アフィニティ・ベース - このアルゴリズムは、標準のロード・バランシング方式(ラウンドロビン、重みベース、ランダムなど)のいずれか1つと組み合せて使用されます。
B.3.3 OAP over REST用のワーク・マネージャの構成
HTTP(S)操作をサポートするために、OAMサーバーではOAP over REST専用のワーク・マネージャwm/OAPOverRestWM
を使用します。
B.3.4 WebGateとAccess Manager間のHTTPおよびHTTPS通信の構成
このトピックでは、WebGateとAccess Manager間のHTTPおよびHTTPS通信の構成方法について説明します。
前提条件:
次のステップを実行したことを確認します:
- プロキシ/ロードバランサ/WebLogicに対してSSLを構成した。詳細は、「Web層でのSSLの構成」を参照してください。
- OHSに対してSSLウォレットを作成し、SSLを有効にした。詳細は、「Fusion Middleware Controlを使用してOracle HTTP ServerのSSLを有効にする方法」を参照してください
OAMサーバーがインストールされてWebGateがプロビジョニングされると、デフォルトで、次の表のパラメータが構成され、値が自動的に移入されます。WebGateのユーザー定義パラメータには、次の必須構成が設定されます:
表B-2 WebGateの「ユーザー定義パラメータ」フィールドの必須構成
パラメータ名 | 説明 |
---|---|
|
エージェントとサーバー間で設定する必要がある通信モードを指定します。WebGateは、構成済のプロトコル(HTTP/HTTPS)を使用して、OAM管理対象サーバーと通信します。 デフォルト値: 許可された値: OAP over RESTに対して一方向または双方向SSLチャネルを有効にするには、 HTTPSの場合、WebGateにバンドルされているデフォルトの信頼できる証明書ファイルが次の場所にあります
aaa_chain.pem が構成されていない場合、デフォルトでcacert.pem になります。
信頼できる証明書を次の場所にコピーする必要があります
|
|
サービスを実行しているサーバーのホスト名、またはRESTエンドポイントを指しているロード・バランサURLを指定します。 デフォルト値: 「Access Managerの設定」で構成したWebGateトラフィック・ロード・バランサの値に基づきます。 |
|
サービスを実行しているサーバーのポートを指定します。 デフォルト値: 「Access Managerの設定」で構成したWebGateトラフィック・ロード・バランサの値に基づきます。 |
ノート:
OAMServerCommunicationMode
がHTTP
またはHTTPS
に設定されている場合は使用されません:
- セキュリティ -
Open
、Simple
およびCert
の各モード - アクセス・クライアント・パスワード
- 最大セッション時間
- Access Managerのプライマリおよびセカンダリ・サーバーのリスト。最大接続プール・サイズと最小接続プール・サイズは、
MaxPoolSize
およびMinPoolSize
設定を使用して指定できます。詳細は、「OAP over REST用の接続チューニング」を参照してください。
次の表に、OAP over RESTに固有のWebGateユーザー定義構成パラメータを示します:
表B-3 WebGateのユーザー定義構成パラメータ
パラメータ名 | 説明 |
---|---|
OAMRestEndPointUrl |
サービスのURLを指定します。 デフォルト値: |
RESTPayloadEncryption |
WebGateエージェント・キーを使用してOAPメッセージを暗号化します。OAP通信モードでは使用されません。 デフォルト値: True 許可された値: True/False |
IdleConnectionTimeout |
接続がクローズされるまでのアイドル時間(秒単位)。 デフォルト値: 60秒 |
MinPoolSize |
オープンしておく接続の最小数。 デフォルト値: 2 |
MaxPoolSize |
WebGateでオープンできる最大接続数。 デフォルト値: 100 |
SSLVerfifyHostname |
このオプションでは、サーバー証明書が実際のサーバーと一致することをWebGateで確認するかどうかを指定します。 デフォルト値: True |
SSLVerifyPeerCert |
このオプションでは、WebGateでピアの証明書の信頼性を確認するかどうかを指定します。 デフォルト値: True |
B.3.4.1 OAP over RESTの双方向SSLの有効化
WebGatesとOAMサーバーの間でOAP over RESTの双方向SSLチャネルを有効にするには、次のステップを実行します
ノート:
この機能は、AIXプラットフォームのIHS WebGateではサポートされていません。- 「WebGateとAccess Managerの間のHTTPおよびHTTPS通信の構成」で説明されている構成を設定します。
- WebGate証明書署名リクエスト(CSR)を生成し、信頼できるCAまたはルートCAによる署名を取得します。
ノート:
生成された証明書および秘密キーは.pem
形式である必要があります。たとえば、- パスフレーズありまたはパスフレーズなしで秘密キーを生成します:
- パスフレーズあり:
openssl genrsa -des3 -passout pass:1234 -out webgate_key.pem 2048
- パスフレーズなし:
openssl genrsa -out webgate_key.pem 2048
- パスフレーズあり:
- 前述の秘密キーを使用してCSRを生成します:
openssl req -out webgate.csr -new -nodes -key webgate_key.pem -sha256
- 署名付き証明書を取得するために、CSRを信頼できるCAに送信します。次の例は、自己署名付きCA証明書を使用したCSRへの署名を示しています:
openssl x509 -req -days 360 -in webgate.csr -CA ../ca.cert.pem -CAkey ../ca.key.pem -CAcreateserial -out webgate_cert.pem -sha256
- パスフレーズありまたはパスフレーズなしで秘密キーを生成します:
- 生成された
webgate_cert.pem
およびwebgate_key.pem
ファイルを$WEBGATE_INSTANCE_DIR/webgate/config/
ディレクトリに配置します。 - パスフレーズを使用してWebGateキーを生成した場合は、マップ名を
WG_Cert_PassPhrase
、マップ・キー名をphrase_key
、キー名をphrase
にして、パスフレーズを$WEBGATE_INSTANCE_DIR/webgate/config/wallet/cwallet.sso
に追加します。mkstore
ユーティリティを使用して、ウォレットでWebGate証明書パスフレーズを設定します(webgate_key.pem
の作成に使用する場合)。JAVA_HOME
を設定します<WebGate_Oracle_Home>/oracle_common/bin/mkstore
に移動します- 次の
mkstore
ユーティリティを実行します:./mkstore -wrl $WEBGATE_INSTANCE_DIR/config/wallet -createUserCredential <mapName> <mapkeyName> <name> <Passphrase>
たとえば:./mkstore -wrl ./ -createUserCredential WG_Cert_PassPhrase phrase_key phrase 1234
- マップとキー・エントリがウォレットに格納されているかどうかを確認します:
./orapki wallet display -wallet wallet/
これにより、シークレット・ストア・エントリが表示されます。たとえば、
WG_Cert_PassPhrase@#3#@phrase_key
ですノート:
双方向SSLを有効にすると、WebGateは"OAP over Rest (HTTPS): 2 way SSL config files are present in webgate instance directory"
を示すINFOレベルのログを出力しますこのログは、
webgate_cert.pem
ファイルとwebgate_key.pem
ファイルの両方がWebGateインスタンス・ディレクトリに追加されている場合にのみ出力されます。
B.3.5 OAP over REST用の接続チューニング
WebGateでは、WebGateとRESTエンドポイント(OAMサーバーなど)間の接続に動的接続プールを使用します。WebGateでオープンされる接続の数は固定ではなく、MinPoolSizeおよびMaxPoolSizeによって制御されます。
MinPoolSize
。これは、WebGateによって確立される最小接続数です。WebGateでは、負荷に関係なく、MinPoolSizeで定義された数の接続を常にオープンしておきます。
MaxPoolSize
。これは、負荷シナリオでオープンする最大接続数です。MinPoolSize
を超過した接続がIdleConnectionTimeout
で定義された指定期間アイドル状態である場合、その接続はWebGateによってクローズされます。
たとえば、WebGateでは、MinPoolSize
を超過した接続がIdleConnectionTimeout
で定義された秒数を超えてアイドル状態になっているかどうかを60秒ごとにチェックします。「はい」の場合、該当する接続はクローズされます。
WebGateとOAMサーバーまたはロード・バランサとの間で確立された接続は、常に永続的です。ただし、一部のサーバーまたはロード・バランサでは、永続的な接続がデフォルトでは許可されません。
そのため、このようなサーバーについては、接続タイムアウトの設定を変更して、WebGateのIdleConnectionTimeout
で定義されている値よりも大きくする必要があります。
たとえば、OHS上で実行されているmod_wl_proxyプラグインの場合は、次の設定をOHSのhttpd.conf
ファイルに追加します:
KeepAlive on
MaxKeepAliveRequests 0
KeepAliveTimeOut 90
また、KeepAliveSecs 90
の設定をmod_wl_proxy.conf
ファイルに追加します:
これが2ノードの管理対象サーバー・クラスタと仮定すると、mod_wl_proxy
ファイルは次の例のようになる必要があります:
<IfModule weblogic_module>
WebLogicCluster den01cbc.us.oracle.com:24100,den02kra.us.oracle.com:24100
WlSSLWallet /scratch/ranjakha/SSL_Certs
DynamicServerList ON
MatchExpression /oam
KeepAliveSecs 90
</IfModule>
B.3.6 OAP over RESTのトラブルシューティング
この項では、OAP over RESTに関連する問題のトラブルシューティング・ステップについて説明します。
B.3.6.1 Libcurl操作の実行時のエラー
デフォルト(OAP over REST)以外の通信方法に切り替えると、WebゲートおよびOAMサーバーでエラーがスローされます。
問題
oracle.security.am.proxy.oam.requesthandler.ObMessageIntegrityFailException: Message Integrity Check Failed
解決策1
この問題を解決するには、必要に応じて、解決策1または解決策2に示されたステップを実行します。
- ブラウザまたはcurlコマンドを使用して、
http(s)://<OAMHOST>:<OAMPort>/iam/access/binding/api/v10/oap
へのアクセスを検証します。ノート:
プロキシがOAM HTTP/HTTPSポートの前面にある場合は、プロキシ設定に/iam
のマッピングが含まれていることを確認します。 - RESTエンドポイントを参照するようにOAMサーバー設定を更新します:
- OAMコンソールにログインします
- 「構成」タブをクリックし、「設定」で「Access Manager」を選択します。
- 必要に応じて、「WebGateトラフィック・ロード・バランシング」の下の「OAMサーバー・ホスト」、「OAMサーバー・ポート」および「OAMサーバー・プロトコル」フィールドを更新します。
- 「適用」をクリックします。
- RESTエンドポイントを参照するようにWebゲート・エージェントを更新します:
- OAMコンソールの「アプリケーション・セキュリティ」タブで、「SSOエージェント」をクリックします。
- 「SSOエージェントの検索」ウィンドウで、必要な12cエージェントを検索し、そのエージェントをクリックします。
- 「ユーザー定義パラメータ」で、次のパラメータが「WebGateトラフィック・ロード・バランシング」で指定されたものと同じデータを参照していることを確認します。
OAMRestEndPointHostName=<hostname> OAMRestEndPointPort=<port> OAMServerCommunicationMode=<HTTP/HTTPS>
- 「適用」をクリックします。
解決策2
- OAMコンソールにログインします
- OAMコンソールの「アプリケーション・セキュリティ」タブで、「SSOエージェント」をクリックします。
- 「SSOエージェントの検索」ウィンドウで、登録済エージェントを検索し、そのエージェントをクリックします。
- 「ユーザー定義パラメータ」から次のパラメータを削除します:
OAMRestEndPointHostName OAMRestEndPointPort OAMServerCommunicationMode
- 「適用」をクリックします。
- 新しく作成したアーティファクト・ファイルをOHS/Webゲートの場所にコピーします。
- ObAccessClient.xmlをキャッシュ・ディレクトリ
$DOMAIN_HOME/servers/<inst>/cache
から削除します - OHS/Webゲート・サーバーを再起動します。
B.4 Oracle Access ManagementでのFIPSモードの有効化
B.4.1 OAMサーバーでのFIPSモードの有効化
OAMサーバーでFIPSモードを有効にするには:
ノート:
-
前提条件として、OAMサーバーをインストールして構成する必要があります。
-
使用されるJDKは、Oracle JDK 1.8.0_271-b09です。
-
詳しいステップは、『Oracle WebLogic Serverセキュリティの管理』の「JavaオプションでのFIPS 140–2モードの有効化」を参照してください。
B.4.2 FIPS用のSAMLフェデレーションの構成
- OAMサーバーでFIPSを有効にします。
- 署名キーのサイズは2048ビット以上である必要があります。そうでない場合は、次のステップを実行して、キー・サイズ2048のキーを生成します。
- 次のコマンドを実行します。
<JAVA_HOME>/bin/keytool -genkeypair -alias samlsigning -keyalg RSA -keysize 2048 -sigalg sha256withrsa -dname cn="ACME SAML Signing" -validity 1000 -keystore $DOMAIN_HOME/config/fmwconfig/.oamkeystore -storetype JCEKS
- 次のコマンドを実行します。
<JAVA_HOME>/bin/keytool -genkeypair -alias samlencryption -keyalg RSA -keysize 2048 -sigalg sha256withrsa -dname cn="ACME SAML Encryption" -validity 1000 -keystore $DOMAIN_HOME/config/fmwconfig/.oamkeystore -storetype JCEKS
- OAM管理コンソール(
http(s)://<oam-admin-host>:<oam-admin-port>/oamconsole
)にログインします。 - 「構成」→「フェデレーション設定」に移動します
- 「キーストア」セクションで、新しいエントリを作成します。
- 「キーストア」セクションで「+」ボタンをクリックします
- 新しいエントリのKeyIDを入力します(たとえば、
saml-signing
) - 新しいキー・エントリの別名をドロップダウンで選択します。このドロップダウンには、
.oamkeystore
のキー・エントリがリストされます(たとえば、samlsigning
) - そのキーの作成時に設定したキー・エントリのパスワードを入力します。
- 必要に応じて、他のエントリに対してプロセスを繰り返します。
- 「適用」をクリックします
- 「一般」セクションで:
- キー・エントリのドロップダウン・リストで署名キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、
saml-signing
を選択します - キー・エントリのドロップダウン・リストで暗号化キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、
saml-encryption
を選択します - 「適用」をクリックします
- キー・エントリのドロップダウン・リストで署名キーを選択します(これらのエントリは「キーストア」セクションで定義されています)。たとえば、
- 証明書またはSAML 2.0メタデータ(あるいはその両方)をパートナに再配布します
- 次のコマンドを実行します。
- URL:
http(s)://<oam-host>:<manage_server_port>/oamfed/idp/metadata?signid=saml_signing&encid=saml_encryption&sigalgm=SHA-256
を使用してメタデータをダウンロードします。signid
およびencid
の値は、前のステップで説明したとおりです。 - 新しいメタデータでパートナを更新します。
- WLSTに接続して次のコマンドを実行します。
getStringProperty("/fedserverconfig/signaturedigestalgorithm")
putStringProperty("/fedserverconfig/signaturedigestalgorithm", "SHA-256")
- サーバーを再起動し、リソースにアクセスします。
B.4.3 OAMクライアントでのFIPSモードの有効化
WebGate
ノート:
Webゲートの場合、OAP over TCPのみがFIPS準拠です。ASDKクライアント
- セキュリティ・プロバイダおよびクラスパスの設定を更新します。次のセキュリティ・プロバイダをjavaセキュリティ・ファイル(
<JAVA_HOME>/jre/lib/security/java.security
)に追加し、それに応じて既存のプロバイダの順序を変更しますsecurity.provider.1=com.rsa.jsafe.provider.JsafeJCE security.provider.2=com.rsa.jsse.JsseProvider
- ASDKクライアントを起動します。IDMドメインからWLSTを使用して
SimpleModeGlobalPassphrase
を取得します。<JAVA_HOME>/jre/bin/java -cp .:<ASDK_HOME>/lib/*:<MW_HOME>/oracle_common/modules/oracle.jps/jps-manifest.jar -Dopss.tenant.mode=JPS_API -Djava.util.logging.config.file= <ASDK_HOME>/log/log.properties -Djava.security.properties=<JAVA_HOME>/jre/lib/security/java.security -Dkeystore_passwd=<SimpleModeGlobalPassphrase> -Djava.security.debug=access TestASDK_OAM11g
簡易モードおよび証明書モードでのASDKクライアントの構成
ASDKクライアントが簡易モードと証明書モードで作動するためには、ASDK構成ディレクトリのpassword.xmlファイルにpasswd
とkeystore_passwd
両方のエントリが含まれている必要があります。
passwd
値は、Webゲート・クライアントが簡易モードおよび証明書モードで作成されると作成されます。たとえば:<?xml version="1.0"?>
<ParamsCtlg xmlns="http://www.acme.com" CtlgName="password">
<ValNameList ListName="">
<NameValPair ParamName="passwd"
Value="9a5cec58ce96dadf07f68a3616a20a3ebfcff90e05e15db8d47f45f84a78f6cf775abf3
2c89beeb75ce3b3045a1e6fd0"/>
</ValNameList>
</ParamsCtlg>
keystore_passwd
値を追加するには、次を実行します。
<OAM_DOMAIN_DIRECTORY>/output/webgate-ssl-SHA-256/
に移動し、password.xmlファイルを開きます。次に、ファイルの内容の例を示します。<?xml version="1.0"?> <ParamsCtlg xmlns="http://www.acme.com" CtlgName="password"> <ValNameList ListName=""> <NameValPair ParamName="passwd" Value="02434507010457010c594505535b0d5f0e5b0d534b45025252500c0557"/> </ValNameList> </ParamsCtlg>
passwd
の値をコピーし、ASDK構成ディレクトリのpassword.xmlのkeystore_passwd
エントリの下に追加します。たとえば、<?xml version="1.0"?> <ParamsCtlg xmlns="http://www.acme.com" CtlgName="password"> <ValNameList ListName=""> <NameValPair ParamName="passwd" Value="9a5cec58ce96dadf07f68a3616a20a3ebfcff90e05e15db8d47f45f84a78f6cf775abf3 2c89beeb75ce3b3045a1e6fd0"/> <NameValPair ParamName="keystore_passwd" Value="02434507010457010c594505535b0d5f0e5b0d534b45025252500c0557"/> </ValNameList> </ParamsCtlg>
- ファイルを保存します。
B.5 Access Managerの証明書モード通信の構成
少なくとも1つのOAMサーバー・インスタンスがエージェントと同じモードで実行されているAccess Manager用の証明書モード通信を構成します。
このトピックでは、Access Manager用の証明書モード通信の構成方法について説明します。次のタスクは証明書モードにのみ適用されます。
ノート:
簡易モードでは、バンドルされたAccess Manager-CA署名付き証明書が使用されて、次のタスクのほとんどは必要ありません。
Prerequisites
エージェントの登録中に、少なくとも1つのOAMサーバー・インスタンスがエージェントと同じモードで実行していることが必要です。それ以外の場合、登録は失敗します。ただし、エージェントの登録後、OAMサーバーの通信モードを変更できます。
タスク概要: OAMサーバーの証明書の追加には次のものが含まれます。
B.5.1 証明書モードの暗号化およびファイルについて
証明書リクエストを作成し、CAに送信する必要があります。証明書が戻されると、それをOAMサーバーにインポート(またはWebGateにコピー)する必要があります。
Webゲートの証明書リクエストによって、リクエスト・ファイルaaa_req.pemが生成されます。これを、OAMサーバーにより信頼されているルートCAに送信する必要があります。ルートCAが戻す証明書は、OAM Webgateのインストールおよび構成の後で、手動でWebgateインスタンス領域にコピーする必要があります。
-
aaa_key.pem (Webゲート・キー・ファイルの予約名。変更できません)
-
aaa_cert.pem (Webゲート証明書ファイルの予約名。変更できません)
-
aaa_chain.pem (Webゲート側のCA証明書の予約名)
証明書モードでのコンポーネントのインストール中に、外部CAから取得した証明書が存在するかどうかを尋ねられます。証明書をまだ所有していない場合、リクエストできます。証明書を受領するまでは、WebGateを簡易モードで構成できます。ただし、証明書が発行されインストールされるまで、OAMデプロイメントは完了できません。
WebゲートをOAMエージェントとして登録するときに証明書モードを選択すると、エージェント・キー・パスワードを入力するフィールドが表示されます。OAM WebGate登録の編集時に、モードがオープンから証明書へ、または簡易から証明書へ変更される場合にのみpassword.xmlが更新されます。証明書モードでは、一度生成されるとpassword.xmlは更新できません。エージェント・キー・パスワードを編集しても、新しいpassword.xmlは生成されません。
B.5.2 OAMサーバー用の証明書リクエストおよび秘密キーの生成
OAMサーバーの秘密キー、証明書およびCA証明書を取得します。
ノート:
動作保証されたツールは、openSSLです。証明書およびキーをPEM形式で生成するには、他のツールではなくopenSSLを使用することをお薦めします。
OAMサーバーの秘密キーおよび証明書を取得するには:
B.5.3 UDMに格納された.OAMKeystoreパスワードの取得
Oracle Enterprise Manager Fusion Middleware Controlコンソールでキーストア資格証明を取得できます。
B.5.4 信頼できる、署名された証明書チェーンをキーストアへインポート
Oracleが提供するimportcertツールは、既存の秘密キー、署名済証明書(公開キー)ファイルを指定のキーストア形式であるJKS (クライアント・キーストア形式)またはJCEKS (OAMサーバー・キーストア形式、たとえば .oamkeystore)へインポートするために使用します。
Access Managerに関連付けられたキーストアはPKCS8 DER形式の証明書のみを受け入れます。
-
PEM形式の証明書が認証局(CA)によって署名されている場合、次の手順ではAccess Managerに付属している
importcert
を使用してこれらの証明書を変換した後にインポートする方法を説明します。 -
PEM形式の証明書がない場合は、証明書リクエストを作成してCAで署名を受けた後で、次の手順を開始してください。
次にJDKバージョン8のkeytoolを使用するためのステップを示します。異なるバージョンのkeytoolの場合、そのJDKバージョンのドキュメントを参照してください。
ノート:
keytoolユーティリティを使用する場合、デフォルトのキー・ペア生成アルゴリズムはDSA (Digital Signature Algorithm)です。ただし、Oracle Access ManagementおよびWebLogic ServerはDSAをサポートしないので、別のキー・ペア生成および署名アルゴリズムを指定する必要があります。
Prerequisites
信頼できる証明書チェーンをキーストアにインポートするには:
-
証明書モードでOAMサーバーを設定する場合、.oamkeystoreを変更する前に、オフラインのWLSTコマンドを使用してアーティファクトをダウンロードします。
downloadAccessArtifacts(domainHome="/new/path/base_domain", propsFile="/path/dbschema.properties") ---- contents of dbschema.properties ---- oam.entityStore.schemaUser=MYPREFIX_OAM oam.entityStore.schemaPassword=Secret oam.entityStore.ConnectString=jdbc:oracle:thin:@dbhost.us.oracle.com:1521/servicename.us.oracle.com
ノート:
管理サーバーが再起動するたびに、変更がDBから取得されます。そのため、downloadAccessArtifactsおよびsaveAccessArtifactsを実行して、証明書モードの変更を保存する必要があります。 -
次のパスでキーツールを探します。
$MW_HOME/jdk8/bin/keytool
-
importcert.zipを解凍して、次のパスでReadMeファイルを探します。
$ORACLE_IDM_HOME/oam/server/tools/importcert/README
-
aaa_chain.pem: テキスト・エディタを使用してaaa_chain.pemファイルを変更して、CERTIFICATEブロック内に含まれるデータを除くすべてのデータを削除してからそのファイルを保存します。
----BEGIN CERTIFICATE----- ... CERTIFICATE ... -----END CERTIFICATE-----
-
次のコマンドと環境に応じた詳細を使用して、信頼された証明書チェーンをインポートします。たとえば:
keytool -importcert -file aaa_chain.pem -trustcacerts -storepass <password> -keystore $ORACLE_HOME\user_projects\domains\$DOMAIN\config\fmwconfig\ .oamkeystore -storetype JCEKS
-
証明書を信頼するかどうか尋ねられたら、「
yes
」と入力します。 -
aaa_cert.pem:
-
TextPadを使用してaaa_certn.pemを編集し、CERTIFICATEブロック内に含まれるデータを除くすべてのデータを削除し、そのファイルを新しい場所に保管して元のファイルを保持します。たとえば:
----BEGIN CERTIFICATE----- ... CERTIFICATE ... -----END CERTIFICATE-----
-
次のコマンドを入力して署名された証明書(aaa_cert.pem)を、openSSLまたは他のツールを使用してDER形式に変換します。たとえば:
openssl x509 -in aaa_cert.pem -inform PEM -out aaa_cert.der -outform DER
-
-
aaa_key.pem:
-
aaa_key.pemを編集し、CERTIFICATEブロック内に含まれるデータを除くすべてのデータを削除し、そのファイルを新しい場所に保管して元のファイルを保持します。たとえば:
----BEGIN CERTIFICATE----- ... CERTIFICATE ... -----END CERTIFICATE-----
-
次のコマンドを入力して秘密キー(aaa_key.pem)を、openSSLまたは他のツールを使用してDER形式に変換します。たとえば:
openssl pkcs8 -topk8 -nocrypt -in aaa_key.pem -inform PEM -out aaa_key.der -outform DER
-
-
キーストアに署名付きDER形式の証明書をインポートします。たとえば:
-
環境に応じた次のコマンド行引数および詳細を使用してaaa_key.derをインポートします。たとえば:
c:\Middleware\idm_home\oam\server\tools\importcert
- java -cp importcert.jar oracle.security.am.common.tools.importcerts.CertificateImport -keystore <> -privatekeyfile <path> -signedcertfile <path> -alias [ -storetype <> genkeystore <> -help]
ノート:
キーストア・パスワードと別名パスワードを、求められたら入力します。Windowsシステムでは、コロン(:)のかわりにセミコロン(;)をコマンド行で使用してください。
-
-
変更の後で、saveAccessArtifacts(domainHome="/mwhome/user_projects/domains/base_domain", propsFile="/path/dbschema.properties")というオフラインのWLSTコマンドを使用してDBに変更をアップロードしてください。
- 「証明書詳細をAccess Manager設定に追加」に進みます。
B.5.5 証明書詳細をAccess Manager設定に追加
証明書をキーストアにインポートした後で、前に指定した別名およびパスワードを、Oracle Access ManagementコンソールでAccess Manager設定構成に追加します。
ノート:
簡易モードには明示的な構成は必要なく、即時可能な状態で提供されます。
証明書詳細をAccess Manager設定に追加する手順
B.5.6 Webゲート用の秘密キーおよび証明書リクエストの生成
openSSLを使用してWebゲートの秘密キー、証明書およびCA証明書を取得します。
WebGateの秘密キーおよび証明書を取得する手順
B.5.7 証明書モード通信での双方向SSLのサポート
証明書モード通信での双方向SSLのサポートでは、SSLハンドシェイクの実行中にユーザー証明書がサーバーと共有されます。そのため、ユーザー証明書をcwallet.sso
に追加する必要があります。
ユーザー証明書は、orapki
ユーティリティを使用して手動でcwallet.sso
に追加する必要があります。『Oracle Fusion Middlewareの管理』のキーストア管理ツールに関する項を参照してください
DN
をノートにとっておきます。
B.5.8 証明書を使用するようにWebゲートを更新
すべての通信モード(オープン、簡易または証明書)で、エージェント登録はOracle Access Managementコンソールから更新する必要があります。
-
エージェントの登録: OAMエージェントの登録時に証明書モードを選択すると、エージェント・キー・パスワードを入力するフィールドが表示されます。
-
エージェントの編集/更新: OAM Webゲート登録の編集時に、モードがオープンから証明書へ、または簡易から証明書へ変更される場合にのみpassword.xmlが更新されます。
エージェント・キー・パスワードを編集しても、新しいpassword.xmlは生成されません。証明書モードでは、一度生成されるとpassword.xmlは更新できません。
前提条件
WebGateエージェント登録の通信モードを更新する手順
B.5.9 WebゲートでOAPの簡易/証明書モード通信にPFSおよび承認済の暗号スイートを使用する方法について
簡易/証明書モードのOAP通信が発生すると、WebGateでは、管理者によって定義された有効な承認済の暗号スイートが必ず使用されます。
管理者は、WebGateのユーザー定義パラメータTLSCipherSuiteを使用して暗号化方式を定義します。簡易/証明書モードのOAP通信に使用されるデフォルトの暗号化方式は、PFS暗号スイートです。PFS暗号スイートでサポートされている暗号スイートは次のとおりです:
表B-4 PFS暗号スイート
暗号名 |
---|
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |
TLS_RSA_WITH_AES_128_CBC_SHA |
管理者が暗号化方式の定義に使用する、サポートされた承認済の暗号スイートを次に示します:
表B-5 サポートされている暗号スイート
暗号名 |
---|
TLS_AES_256_GCM_SHA384 |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 |
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 |
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 |
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 |
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 |
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 |
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 |
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 |
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 |
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 |
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |
TLS_RSA_WITH_AES_128_CBC_SHA |
TLS_AES_128_GCM_SHA256 |
B.6 Access Managerの簡易モード通信の構成
ノート:
エージェントとサーバー間の通信は、Webゲート・モードがOAMサーバー・モードと同じか、それ以上であれば動作します。
OAMエージェントまたは新しいOAMサーバーを登録する際には、簡易モードを指定できます。ただし、グローバル・パスフレーズの変更には、簡易モードを使用するすべてのエージェントと新しいグローバル・パスフレーズの再構成が必要です。
ノート:
エージェントの登録中に、少なくとも1つのOAMサーバー・インスタンスがエージェントと同じモードで実行していることが必要です。それ以外の場合、登録は失敗します。ただし、エージェントの登録後、OAMサーバーの通信モードを変更できます。
最高レベルのセキュリティは証明書モードで、最も低いのはオープン・モードです。エージェント・モードは高くても問題ありませんが、低くしないでください。たとえば、オープン・モードは簡易または証明書モードに更新できます。
この項では、簡易モード通信の構成に必要な情報を提供します。
タスク概要: 簡易モード通信の構成には次のことが含まれます
B.6.1 簡易モード、暗号化およびキーについて
簡易モード暗号化の場合、Access Managerには認証局がその固有の秘密キーとともに含まれ、すべてのWebゲートおよびOAMサーバーにインストールされます。
インストール中に、OAMサーバーの秘密キー-公開キーのペアが生成され、保存されます。OAMエージェントのインストールでも同様にOracle認証局がインストールされます。
インストーラは最初にランダムなグローバル・パスフレーズを生成しますが、これは必要に応じて編集または表示できます。エージェントがSIMPLE(簡易)モードで登録されていると、次のクライアント証明書が生成され、クライアントにより使用されます。
-
aaa_key.pem: 秘密キーが含まれています
-
aaa_cert.pem: 署名された証明書
-
password.xml: ランダムなグローバル・パスフレーズが不明瞭化された形式で含まれています
ノート:
グローバル・パスフレーズを変更すると、「簡易」モードですでに構成されているすべてのエージェントの再構成が必要になります。
B.6.2 簡易モード用のグローバル・パスフレーズの取得
インストール中に簡易モード通信用にAccess Managerによって生成されたランダムなグローバル・パスフレーズを取得します。
「簡易」モード通信用のランダムなグローバル・パスフレーズを取得する手順
B.6.3 簡易モード用Webゲート登録の更新
簡易セキュリティ・モード用に生成されたアーティファクトはグローバル・パスフレーズを使用し、変更はWebゲートに伝播される必要があります。
簡易モード用に既存のWebゲート登録を更新するには、Oracle Access Managementコンソールを使用してWebゲート登録をいったん削除してから、再登録できます(簡易モードを指定し、ポリシーの自動生成を無効にします)。または、ここで説明するように、Webゲート登録を編集してから、アーティファクトをコピーすることもできます。
簡易モード用WebGate登録を更新する手順