3 Secure Oracle Fusion Applications

This section explains the security features available to all Oracle Fusion applications. It explains the enterprise identity store, identity provisioning, security console, roles, data masking, and customizing security.

The following topics are discussed:

The high-level information presented in this section includes links to other documents where the topic is explained in detail.

3.1 Introduction to Security

Oracle Fusion Applications use the services of the Oracle Platform Security Services (OPSS) to secure applications.

OPSS is a security platform that provides enterprise product development teams, systems integrators, and independent software vendors with a standards-based enterprise-grade security framework for Java SE and Java EE applications. Using OPSS, Oracle Fusion Applications benefit from the same, uniform security, identity management, and audit services across the enterprise.

The intended audience for this section is application security administrators and system security administrators.

Oracle Fusion Applications provisioning sets up the security infrastructure, including:

  • the identity store

  • authorization policies

  • enterprise roles

  • data masking

  • setting protected URIs for the infrastructure to work as expected

For instructions about protected URIs and configuring Oracle ADF applications with Oracle Access Manager SSO, see Integration with Oracle ADF Applications in the Oracle Fusion Middleware Administrator's Guide for Oracle Access Management.

3.2 Configure SSL for Oracle Fusion Applications

SSL provides secure communication between the paths that connect endpoints. For example, the path between Oracle WebLogic Server and an LDAP directory server is secured through SSL.

This section contains the following topics:

3.2.1 Background for SSL Connections in Oracle Fusion Applications

Key connections in Oracle Fusion Applications can be secured either during provisioning or post-provisioning.

This section contains the following topics:

3.2.1.1 Basic Network Topology

Figure 3-1 shows a high-level representation of a two-tier network topology in the typical Oracle Fusion Applications environment:

Figure 3-1 SSL Connections for Basic Network Topology


Description of Figure 3-1 follows
Description of "Figure 3-1 SSL Connections for Basic Network Topology"
  • The diagram shows some representative domains.

  • SOAP is the Oracle Access Protocol used by Oracle Access Manager. LDAP is the LDAP-over-SSL protocol.

Several approaches to configuring SSL are available in the Oracle Fusion Applications environment. Choose one of the following options:

  • Not to enable SSL connections during provisioning.

    If the first option is selected as the starting point, enable SSL Oracle Identity Management first (see End-to-End SSL for Oracle Fusion Applications), followed by the service-to-service connections.

  • Enable SSL connections to certain components during provisioning.

    If the second option is selected as the starting point, protect now, service-to-service connections like those shown in dotted lines (blue) in the diagram; this includes, for example, connections to Oracle Business Intelligence. For details about this wiring, see SSL-enable Oracle Business Intelligence.

    These connections are shown as solid lines (red) in the diagram and include IdM components like Oracle Access Manager and Oracle Internet Directory. Table 3-1 lists these connections.

  • Enable SSL connections post-provisioning.

Consider the following assumptions about this topology:

  • In most environments, the Fusion Applications middleware servers operate on an isolated network within the larger corporate network.

    This means that such components as Oracle HTTP Server (OHS), Oracle WebLogic Server, Oracle Business Intelligence, and others required for the Oracle Fusion Applications instance all run within a single isolated network.

  • Likewise, the Oracle Fusion Applications database runs in either the same isolated network or on its own isolated network that can only be reached with the application's private network.

  • Because most business applications do not face the extranet, the HTTP server (OHS) tier is typically not segregated into its own DMZ.

  • External dependencies for Oracle Identity Management components, represented in the figure by Oracle Access Manager and Oracle Internet Directory servers, are assumed to reside outside this isolated network.

3.2.1.2 Provisioned SSL Connections

As mentioned earlier, Oracle Fusion applications are configured with SSL for client traffic inbound to OHS and traffic to and from the identity management zone. Table 3-1 shows the connections that are SSL-enabled at provisioning:

Table 3-1 Provisioned SSL Connections

Connection Path Protocol Default SSL Connection

Incoming HTTP Traffic (client to HTTP server)

HTTPS

One-way SSL (trust in server)

mod_webgate to Oracle Access Manager

OAP

One-way SSL (trust in server)

Oracle WebLogic Server to LDAP server (Oracle Internet Directory/Oracle Virtual Directory)

LDAPS

One-way SSL (trust in server)

SSL can also be enabled for these connections post-provisioning by following the instructions in End-to-End SSL for Oracle Fusion Applications.

3.2.2 End-to-End SSL for Oracle Fusion Applications

This section provides step-by-step procedures to enable SSL between Oracle HTTP Server (OHS) and Oracle WebLogic Server (WLS). This includes SSL traffic to Oracle HTTP Server, on Oracle Fusion Applications domains, and between Oracle Fusion Applications domains and components in the Identity Management (IDM) domain. SSL is enabled using a self-signed certificate, with one-way SSL communication (server-auth mode).

Procedures for supplementary tasks like keystore and certificate maintenance are also included.

This document contains the following topics:

3.2.2.1 Background and Scope

Keep the following points in mind while working through this section:

  • The procedures apply to Oracle Access Manager version 10g.

  • The procedures are illustrated using the benefits server in HCMDomain but are generally applicable.

  • The configuration tools request passwords when necessary. The examples shown here do not display password input or entry.

  • The procedures typically rely on the self-signed certificates that are created by Oracle Fusion Application provisioning tools, which do not need to be recreated again.

  • APPLTOP is a placeholder that refers to the top-level directory where Oracle Fusion Applications is installed.

Figure 3-2 illustrates the SSL wiring:

Figure 3-2 SSL Connections on Oracle Fusion Applications Domains


This figure shows the SSL wiring on domains.

Two distinct component stacks are pictured here. On the left is the identity management stack with an Oracle HTTP Server on the front end. This server is referred to as the Authentication OHS or Auth OHS. On the right are WebLogic and the application stack, front-ended by an Oracle HTTP Server which is referred to as the Application OHS or Apps OHS.

3.2.2.2 Enable SSL on Oracle Fusion Applications Domains and Apps OHS

The following procedure can be applied to any managed server that must be SSL-enabled.

There are two distinct tasks to perform:

  • Enable SSL on the application's WebLogic managed server.

  • Enable SSL on the OHS which front-ends the Oracle Fusion Applications domain.

The steps in the procedures use the Benefits managed server in the HCMDomain domain as en example.

This section contains the following topics:

3.2.2.2.1 Enable the SSL Listener on the application's WebLogic Managed Server

Complete the following steps to enable the SSL listener:

  1. Log in to the Weblogic Administration Console as the "faadmin" user.

  2. Navigate to Environment, Servers, and then select BenefitsServer_1.

    The Benefits server in HCMDomain is used as an example. Substitute the relevant server in the environment.

  3. Check the "SSL Listener Port Enable" box. Make sure that the SSL listener port number selected is not in use. Remember this port number for later use in the OHS configuration file.

  4. Scroll down the page and click Advanced to view the advanced server options.

  5. Check the WebLogic Plug-In Enabled box so that the server can receive proxied requests.

  6. Click Save.

  7. Stop the managed server.

  8. Restart the managed server to enable the SSL listener.

  9. Repeat Steps 1 through 6 for each managed server in the domain that must be SSL-enabled. For tables of managed servers by domain, see List of Managed Servers for Oracle Fusion Applications Domains.

Figure 3-3 shows a sample configuration:

Figure 3-3 Enable SSL on a Managed Server


This figure shows how to set SSL on a Managed Server.

3.2.2.2.2 Enable SSL on the Oracle HTTP Server for the Oracle Fusion Applications domain

Complete the following steps to enable SSL on the Apps OHS server with an Oracle Fusion Applications domain on the front end:

  1. Locate the configuration file FusionVirtualHost_hcm.conf, which resides in the following directory:

    ohs_instance/CommonDomain_webtier/config/OHS/ohs1/moduleconf
    /FusionVirtualHost_hcm.conf
    

    This file is generated during provisioning. Out-of-the-box, SSL is not enabled and the file must be modified manually.

  2. Update the virtual host file to enable SSL:

    1. Open the FusionVirtualHost_hcm.conf file using a text editor.

    2. Search for the string "External virtual host for hcm".

    3. Include the SSL configuration file in the OHS configuration by adding a line similar to the following, below the "External virtual host for hcm" string; ensuring the correct path:

      include "/root_dir/APPLTOP/instance/CommonDomain_webtier/config/OHS/ohs1/FusionSSL.conf"
      

      For example:

      #External virtual host for hcm
      <VirtualHost appohs.myoutsource.com:10620 >
      ServerName https://hcmppbr.host.example.com
      include "/u01/APPLTOP/instance/CommonDomain_webtier/config/OHS/ohs1/FusionSSL.conf"
      
    4. Scroll down in the file to "Context roots for application HcmBenefits" and change the port number for WebLogicCluster configuration to the SSL listener port specified in the earlier task in Enable the SSL Listener on the application's WebLogic Managed Server.

    5. Next, configure the outbound connection to Oracle WebLogic Server by adding the following two lines:

      SecureProxy On
      WlSSLWallet  ~/fusionapps/wlserver_10.3/server/lib"
      

      Here is an example for the hcmBenefits context root:

      ## Context roots for application HcmBenefits
          <Location /hcmBenefits >
              SetHandler weblogic-handler
              WebLogicCluster fscmh-primary.myvhost.com:9411
              WLProxySSL ON
              WLProxySSLPassThrough ON
              RewriteEngine On
              RewriteOptions inherit
              SecureProxy On
              WlSSLWallet "/u01/APPLTOP/fusionapps/wlserver_10.3/server/lib"
          </Location>
      
      • The port number must match the SSL listen port on the managed server (as shown in Figure 3-3).

      • The directory "~/fusionapps/wlserver_10.3/server/lib" is the location where cwallet.sso resides.

    6. (Optional) This directive assumes that the Web Tier shares the top-level directory with Oracle Fusion Application domains. If, however, the Web Tier is in a DMZ or it cannot share the drive with Oracle Fusion Application domains, do not perform this step. Instead, export all certificates from the wallet in "/root_dir/APPLTOP/fusionapps/wlserver_10.3/server/lib" and import them to the Web Tier wallet.

  3. Save and close the file.

  4. Stop and restart the OHS server:

    /root_dir/APPTOP/instance/CommonDomain_webtier/bin/opmnctl stopall
    /root_dir/APPTOP/instance/CommonDomain_webtier/bin/opmnctl startall
    
3.2.2.2.3 Verify SSL Configuration

Complete the following steps to ensure SSL is operational:

  1. Bring up the application URL and try to log in over the SSL protocol. For the Benefits application example:

    https://hcmppbr.host.example.com/hcmBenefits/faces
    /HcmBenefitsProcessesAdministerBenefitsWorkArea
    
  2. Repeat for other application URLs for that managed server.

3.2.2.2.4 mod_ossl Directives for Inbound SSL Configuration to Oracle HTTP Server

The mod_ossl plug-in enables Oracle HTTP Server to use SSL. This section describes certain key directives for mod_ossl to configure secure inbound client connections to Oracle HTTP Server.

The SSLProtocol Directive

The SSLProtocol directive specifies SSL protocol(s) for mod_ossl to use when establishing the server environment. Clients can only connect with one of the specified protocols.

Context: server configuration, virtual host

Syntax:

SSLProtocol [+-] protocol 

where protocol is one of the following: SSLv3, TLSv1, TLSv1.1, TLSv1.2, ALL

Default: SSLProtocol ALL

Example 1: To specify only SSL version 3.0, set this directive to the following:

SSLProtocol +SSLv3 

Example 2: To specify all protocol types, but not SSL version 3.0, set this directive to the following:

SSLProtocol ALL -SSLv3 

The SSLCipherSuite Directive

The SSLCipherSuite directive specifies the SSL cipher suite that the client can use during the SSL handshake. This directive uses a colon-separated cipher specification string consisting of prefixes and tags to identify the cipher suite.

Context: server configuration, virtual host, directory

Syntax:

SSLCipherSuite cipher-spec 

where cipher-spec is a colon-separated string consisting of prefixes plus allowed or excluded ciphers. The prefixes are shown in Table 3-2:

Table 3-2 Prefixes in SSLCipherSuite

Prefix Description

none

Adds the cipher to the list.

+

Adds the cipher to the list and places it in the correct location in the list.

-

Removes the cipher from the list (it can be added later).

!

Removes the cipher from the list permanently.

Default: ALL:!ADH:+HIGH:+MEDIUM:+LOW

Example: To specify all ciphers except MD5 strength ciphers:

SSLCipherSuite ALL:!MD5 

Table 3-3 lists the available cipher suite tags:

Table 3-3 Tags for Cipher Suite Specification

Function Tag Description

Key Exchange

kRSA

RSA key exchange

Key Exchange

kDHr

Diffie-Hellman key exchange with RSA key

Authentication

aNULL

No authentication

Authentication

aRSA

RSA authentication

Authentication

aDH

Diffie-Hellman authentication

Encryption

eNULL

No encryption

Encryption

DES

DES encoding

Encryption

3DES

Triple DES encoding

Encryption

RC4

RC4 encoding

Encryption

ECC

Elliptic curve cryptography encoding

Data Integrity

MD5

MD5 hash function

Data Integrity

SHA

SHA hash function

Data Integrity

SHA256

SHA256 hash function

Data Integrity

SHA384

SHA384 hash function

Aliases

SSLv3

All SSL version 3 ciphers

Aliases

TLSv1.1

All TLS version 1.1 ciphers

Aliases

TLSv1 .2

All TLS version 1.2 ciphers

Aliases

LOW

All low strength ciphers (export and single DES)

Aliases

MEDIUM

All ciphers with 128-bit encryption

Aliases

HIGH

All ciphers using triple DES

Aliases

AES

All ciphers using AES encryption.

Aliases

RSA

All ciphers using RSA key exchange

Aliases

DH

All ciphers using Diffie-Hellman key exchange

3.2.2.2.5 List of Managed Servers for Oracle Fusion Applications Domains

This section contains tables of the managed servers for each domain, showing which managed servers need to be SSL-enabled using the procedure shown in Enable the SSL Listener on the application's WebLogic Managed Server.

Table 3-4 Managed Servers in the Oracle Fusion Human Capital Management Domain

Managed Server SSL? Application URLs

AdminServer

No

N/A

BenefitsServer_1

Yes

https://hcmppbr.host.example.com/hcmBenefits/faces/ HcmBenefitsProcessesAdministerBenefitsWorkArea

CompensationServer_1

Yes

https://hcmppbr.host.example.com/hcmCompensation/ faces/HcmCompWorkbenchWorkarea

https://hcmppbr.host.example.com/hcmCompensation/faces/ HcmCompAdminWorkarea

https://hcmppbr.host.example.com/hcmCompensation/faces/HcmCompPersonStatementWorkArea

https://hcmppbr.host.example.com/hcmCompensation/faces/SetupMainPage

CoreProcessesServer_1

Yes

https://hcmppbr.host.example.com/hcmCore/faces /MyPortrait

https://hcmppbr.host.example.com/hcmCore/faces /PersonSearch

CoreSetupServer_1

Yes

https://hcmppbr.host.example.com/hcmCoreSetup/faces /HcmWSIntWA

Ess_server1

No

N/A

HCMAnalyticsServer_1

No

N/A

Odi_server1

No

N/A

PayrollServer_1

Yes

https://hcmppbr.host.example.com/hcmPayroll/faces/ ChecklistUI

https://hcmppbr.host.example.com/hcmPayroll/faces/ PayrollAdminWorkArea

https://hcmppbr.host.example.com/hcmPayroll/faces/ PayrollCalculationWorkArea

https://hcmppbr.host.example.com/hcmPayroll/faces /PaymentDistributionWorkArea

https://hcmppbr.host.example.com/hcmPayroll/faces /AccountingWorkarea

https://hcmppbr.host.example.com/hcmPayroll/faces /StatutoryReportsWorkArea

Soa_server1

No

N/A

TalentManagementServer_1

Yes

https://hcmppbr.host.example.com/hcmTalent/faces/ PerformanceWorkArea

https://hcmppbr.host.example.com/hcmTalent/faces/ManageGoalsWorkArea

https://hcmppbr.host.example.com/hcmTalent/faces/ManageProfilesWorkArea

https://hcmppbr.host.example.com/hcmTalent/faces/ FacilitatorOverviewWorkArea

Table 3-5 Managed Servers in the Oracle Fusion Financials Domain

Managed Server SSL? Application URLs

Admin Server

No

N/A

Ess_server1

No

N/A

FinancialAnalyticsServer_1

No

N/A

FinancialCommonServer_1

Yes

https://hcmfinppbr.host.example.com/financialCommon/faces/LegalEntityDashboard

FinancialSearchServer_1

No

N/A

GeneralLedgerServer_1

Yes

https://hcmfinppbr.host.example.com/ledger/faces/ JournalEntryPage

https://hcmfinppbr.host.example.com/ledger/faces/ LedgerWorkArea

https://hcmfinppbr.host.example.com/ledger/faces/ XlaEssMain

PayableServer_1

Yes

https://hcmfinppbr.host.example.com/payables/faces/InvoiceWorkbench

https://hcmfinppbr.host.example.com/payables/faces /ExpenseShell

https://hcmfinppbr.host.example.com/payables/faces /PaymentLandingPage

ReceivableServer_1

Yes

https://hcmfinppbr.host.example.com/receivables/ faces/ReceiptsWorkArea

https://hcmfinppbr.host.example.com/receivables/ faces/TransactionsWorkArea

Table 3-6 Managed Servers in the Oracle Fusion Setup Domain

Managed Server SSL? Application URLs

AdminServer

No

N/A

Ess_server1

No

N/A

FunctionalSetupServer_1

Yes

https://hcmcmppbr.host.example.com/setup/faces /TaskListManagerTop

HelpPortalServer_1

No

N/A

HomePageServer_1

Yes

https://hcmcmppbr.host.example.com/homePage /faces/AtkHomePageWelcome

IPM_server1

No

N/A

Search_server1

No

N/A

Soa_server1

No

N/A

UCM_server1

No

N/A

WC_Collaboration

No

N/A

WC_Spaces

No

N/A

Wlcs_server1

No

N/A

Wlcs_sipstate1

No

N/A

Table 3-7 Managed Servers in the Oracle Fusion Customer Relationship Management Domain

Managed Server SSL? Application URLs

AdminServer

No

N/A

ContractManagementServer_1

Yes

https://hcmcrmppbr.host.example.com /contractManagement/faces/ContractsDashboard

CRMAnalyticsServer_1

No

N/A

CRMCommonServer_1

Yes

https://hcmcrmppbr.host.example.com/crmCommon/faces /CdmFoundationResourcesWorkArea

https://hcmcrmppbr.host.example.com/crmCommon/faces /InteractionsDashBoard

Ess_server1

No

N/A

Odi_server1

No

N/A

Soa_server1

No

N/A

Table 3-8 Managed Servers in the Oracle Fusion Supply Chain Management Domain

Managed Server SSL? Application URLs

AdminServer

No

N/A

AdvancedPlanningServer_1

Yes

https://hcmscmppbr.host.example.com /advancedPlanning/faces/ViewCollectedData

https://hcmscmppbr.host.example.com /advancedPlanning/faces/MscCentralEssUi

https://hcmscmppbr.host.example.com /advancedPlanning/faces/testAtpRule

https://hcmscmppbr.host.example.com /advancedPlanning/faces /testManageDataCollectionProcess

CostManagementServer_1

Yes

https://hcmscmppbr.host.example.com/costManagement /faces/ItemCostProfileWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/ManageCostElementWorkArea

https://hcmscmppbr.host.example.com/costManagement /faces/ManageAnalysisGroupsWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/ManageComponentGroupWorkArea

https://hcmscmppbr.host.example.com/costManagement /faces/CostOrganizationsWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/DefaultCostProfileWorkArea

https://hcmscmppbr.host.example.com/costManagement /faces/CostElementGroupWorkArea

https://hcmscmppbr.host.example.com/costManagement /faces/RunControlWorkarea

https://hcmscmppbr.host.example.com/costManagement /CostAccountingWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/ManageCostElementWorkArea

https://hcmscmppbr.host.example.com/costManagement /faces/CostProfilesWorkArea

https://hcmscmppbr.host.example.com/costManagement /faces/ValuationStructureWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/CostProfilesWorkArea

https://hcmscmppbr.host.example.com/costManagement /faces/ValuationStructureWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/CostProfilesWorkArea

https://hcmscmppbr.host.example.com/costManagement /faces/ExpensePoolWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/ValuationUnitsWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/ExpensePoolWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/ValuationUnitsWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/ExpensePoolWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/ReviewAccountingWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/ReceiptAccountingWorkarea

https://hcmscmppbr.host.example.com/costManagement /faces/ReviewDistributionsWorkarea

Ess_server1

No

N/A

GlobalizationServer_1

Yes

https://hcmscmppbr.host.example.com/globalization/faces /IntrastatWorkarea

LogisticsServer_1

Yes

https://hcmscmppbr.host.example.com/logistics/faces /RcvWorkArea

https://hcmscmppbr.host.example.com/logistics/faces /ScmInvWorkArea

https://hcmscmppbr.host.example.comlogistics/faces /WshDeliveriesWorkarea

Odi_server1

No

N/A

OrderOrchestrationServer_1

Yes

https://hcmscmppbr.host.example.com /orderOrchestration/faces /ProcessConstraintWorkarea

https://hcmscmppbr.host.example.com /orderOrchestration/faces /DooOrchManageProcessDashBoard

ProductManagementServer_1

Yes

https://hcmscmppbr.host.example.com /productManagement/faces/ItemDashboard

SCMCommonServer_1

No

N/A

SCM_PDQ

No

N/A

Soa_server1

No

N/A

Table 3-9 Managed Servers in the Oracle Fusion Project Domain

Managed Server SSL? Application URLs

AdminServer

No

N/A

Ess_server1

No

N/A

ProjectsFinancialsServer_1

Yes

https://hcmprjppbr.host.example.com/projectsFinancials/faces/PRJProjectWorkarea https://hcmprjppbr.host.example.com/projectsFinancials/faces/PrjCostWorkArea https://hcmprjppbr.host.example.com/projectsFinancials/faces/CapitalWorkArea https://hcmprjppbr.host.example.com/projectsFinancials/faces/InvoiceWorkareaUI https://hcmprjppbr.host.example.com/projectsFinancials/faces/RevenueWorkArea https://hcmprjppbr.host.example.com/projectsFinancials/faces/ProjectPerformanceDashboard

Soa_server1

No

N/A

Table 3-10 Managed Servers in the Oracle Fusion Procurement Domain

Managed Server SSL? Application URLs

AdminServer

No

N/A

Ess_server1

No

N/A

ProcurementServer_1

Yes

https://hcmprcppbr.host.example.com/procurement/faces /NegotiationWorkarea

https://hcmprcppbr.host.example.com/procurement/faces /PrcPozSuppliersDashboard

Soa_server1

No

N/A

SupplierPortalServer_1

Yes

https://hcmprcppbr.host.example.com/supplierPortal/faces /PrcPosSupplierPortalWorkarea

Table 3-11 Managed Servers in the Business Intelligence Domain

Managed Server SSL? Application URLs

AdminServer

No

N/A

Bi_server1

Yes

https://hcmbippbr.host.example.com/xmlpserver

https://hcmbippbr.host.example.com/analytics

https://hcmbippbr.host.example.com/workspace https://hcmbippbr.host.example.com/rtd

3.2.2.3 Enable SSL between Oracle Fusion Applications Domains and IDM Components

As shown by the topology in Figure 3-4, the Authenticating WebGate handles all the authentication requests on Oracle HTTP Server (OHS) host (identified by authohs.example.com), and also protects Oracle Identity Manager in the IDM domain. This Auth OHS host must be SSL-enabled, communication between the Apps OHS host and the IDM domain, and the Oracle Identity Manager managed server itself using the instructions in this section.

Figure 3-4 SSL to IDM Components


This figure shows the SSL flow in the IDM domain.

This section contains the following topics:

3.2.2.3.1 Create the Identity Keystore

This section explains how to create a new Oracle Identity Manager identity keystore, which is required to process incoming requests, and how to export a certificate from the new keystore.

The steps are as follows:

  1. Log in to the IDM node as the Oracle Identity Manager administrator.

  2. Create a new keystore with a self-signed certificate using the following keytool syntax:

    MW_HOME/jdk6/bin/keytool -genkey -keyalg RSA -alias selfsigned 
    -keystore /root_dir/Certs/oimkeystore.jks  -validity 360 -keysize 1024
    

    It is necessary to specify the keystore password.

    Example:

    [applmgr@myhost u01]$ /u01/oim/jdk6/bin/keytool -genkey -keyalg RSA -alias selfsigned -keystore /u01/Certs/oimkeystore.jks -validity 360 
    -keysize 1024
    
    Enter password: *******
    What is your first and last name?
      [Unknown]:  Mycorp PPBR
    What is the name of your organizational unit?
      [Unknown]:  PPBR
    What is the name of your organization?
      [Unknown]:  Mycorp
    What is the name of your City or Locality?
      [Unknown]:  Anytown
    What is the name of your State or Province?
      [Unknown]: CA
    What is the two-letter country code for this unit?
      [Unknown]: CA
    Is CN=Mycorp PPBR, OU=PPBR, O=Mycorp, L=Anytown, ST=CA, C=CA correct?
      [no]:  yes
     
    Enter key password for <selfsigned>
            (RETURN if same as keystore password):*******
    Re-enter new password: *******
    
  3. Export the self-signed certificate from the new keystore using the following keytool syntax:

    /root_dir/oim/jdk6/bin/keytool -export -v -rfc -alias selfsigned 
    -keystore /root_dir/Certs/oimkeystore.jks -file /root_dir/Certs/oimcert.crt –trustcacerts
    

    Introduce the keystore password when prompted.

    Example:

    /u01/oim/jdk6/bin/keytool -export -v -rfc -alias selfsigned -keystore /u01/Certs/oimkeystore.jks 
    -file /u01/Certs/oimcert.crt –trustcacerts
     
    Enter password: ******* 
     
    Certificate stored in file </u01/Certs/oimcert.crt>
    
  4. Verify that the certificate is exported:

    [applmgr@OIM-node-a1 Certs]$ pwd
    /u01/Certs
    [applmgr@myhost Certs]$ ls -lrt
    -rw-r--r-- 1 applmgr dba 1348 Nov 10 23:54 oimkeystore.jks
    -rw-r--r-- 1 applmgr dba  833 Nov 10 23:56 oimcert.crt
    
  5. Make a note of this certificate as it is required in the next section for Oracle HTTP Server configuration.

3.2.2.3.2 Configure SSL on the Apps OHS Server on the IDM Domain

Take these steps to enable secure communication between the Application Oracle HTTP Server (Apps OHS) and IDM components:

  1. Locate the Oracle Fusion Applications Oracle HTTP Server configuration file "APPLTOP/instance/CommonDomain_webtier/config/OHS/ohs1/FusionSSL.conf", and copy it to "OHS-Instance/config/OHS/ohs1/".

  2. Locate the IDM configuration file "OHS-Instance/config/OHS/ohs1/moduleconf/idm.conf" and copy it to "OHS-Instance/config/OHS/ohs1/moduleconf/idm.ssl.conf".

    Be sure to use the new file name in the target location. Use descriptive file names. For example, it is possible to specify oam.ssl.conf to indicate that SSL for Oracle Access Manager only is being configured.

  3. Add a VirtualHost block to the Oracle Identity Manager configuration file and include the FusionSSL.conf file in the block.

  4. Modify each Location block in the idm.ssl.conf (or similar) file as follows:

    WLProxySSL ON
    WLProxySSLPassThrough ON
    SecureProxy On
    WlSSLWallet "/root_dir/ohsauth/ohsauth_inst/config/OHS/ohs1/keystores/default"
    
  5. Modify all occurrences of "WebLogicPort nnnn" to point to Oracle Identity Manager's SSL managed server port.

  6. After Steps 3 through 5, the configuration file appears like this:

    ##   <start> Entries added as part of SSL configuration ##
    Listen authohs.company.com:4446
     
    <VirtualHost authohs.company.com:4446>
    ServerName https://host.example.com
    include "/root_dir/idm/ohsauth/ohsauth_inst1/config/OHS/ohs1/FusionSSL.conf"
     
    ##   <End> Entries added as part of SSL configuration ##
     
    # OAM Related Entries
      # Admin Server and EM 
       <Location /console>
          SetHandler weblogic-handler
          WebLogicHost host.example.com
          WeblogicPort nnnn <--- Set to Weblogic Admin SSL Port
          WLProxySSL ON
          WLProxySSLPassThrough ON
          WLCookieName    oimjsessionid
          WLProxySSL ON
          WLProxySSLPassThrough ON
          SecureProxy On
          WlSSLWallet "/root_dir/idm/ohsauth/ohsauth_      inst1/config/OHS/ohs1/keystores/default"
          WLLogFile "${ORACLE_INSTANCE}/diagnostics/logs/mod_wl/oam_component.log"
     
       </Location>
    

    Only one Location block is shown in this file fragment. Additional Location blocks, for such components as oamconsole, Oracle Identity Manager admin consoles, and so on, must be similarly configured.

    Note that root_dir/idm/ohsauth/ohsauth_inst1/config/OHS/ohs1/keystores/default is the SSL wallet used by OHS (mod_wl_ohs) containing the trusted certificate for Oracle Identity Manager server.

  7. Create a new Certificate Authority (CA) certificate for signing OHS wallets (Apps OHS and Auth OHS) by following the next steps:

    The order of steps is critical when importing the root CA certificate.

    1. Create an Oracle Wallet with certificates. For details, see the Common Wallet Operations section in the Administering Oracle Fusion Middleware.

    2. If a CA is intended to be used to sign Auth OHS and Apps OHS certificates, obtain the signed certificates from the CA. Here is an example of an Oracle Wallet, certificates and related files for a Microsoft CA:

      [applmgr@myhost Certs]$ pwd
      /root_dir/fa/Certs
      [applmgr@myhost Certs]$ ls -ltr
      total 27
      -rw------- 1 applmgr dba 4976 Jan 12 14:51 ewallet.p12
      -rw------- 1 applmgr dba 5053 Jan 12 14:51 cwallet.sso
      -rw------- 1 applmgr dba 1022 Jan 12 14:51 ohsserver01req.csr --> certificate request
      -rw-r--r-- 1 applmgr dba 2392 Jan 24 15:12 signingCA01.cer  --> cert1 obtained from authority:Microsoft CA
      -rw-r--r-- 1 applmgr dba 1834 Jan 24 15:12 rootca1.cer    --> root (trusted) cert obtained from :Microsoft CA
      -rw-r--r-- 1 applmgr dba 2202 Jan 24 15:12 ohsServer.cer --> cert2 obtained from authority:Microsoft CA
      
    3. Create a Certificate Signing Request (CSR) based on the OHS Oracle Wallet. The CSR is a wildcard certificate as shown in this example:

      [applmgr@myhost Certs]$ /root_dir/fa/APPLTOP/webtier_mwhome
      /oracle_common/bin/orapki wallet display -wallet .
      Oracle PKI Tool : Version 11.1.1.5.0
      Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
       
      Requested Certificates:
      Subject:        CN=*.company.com,<your_organization>,O=<your_company> ,L=<your city>,ST=<your State>,C=US
      User Certificates:
      Trusted Certificates:
      Subject:        OU=Class 1 Public Primary Certification Authority,O=VeriSign, Inc.,C=US
      Subject:        OU=Class 3 Public Primary Certification Authority,O=VeriSign, Inc.,C=US
      Subject:        OU=Class 2 Public Primary Certification Authority,O=VeriSign, Inc.,C=US
      Subject:        CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions, Inc.,O=GTE Corporation,C=US
      
    4. Import the root CA certificate(s) into the wallet using orapki. For a root certificate file rootca1.cer, for example, the syntax is:

      /root_dir/fa/APPLTOP/webtier_mwhome/oracle_common/bin/orapki 
      wallet add -wallet  
      /root_dir/fa/Certs/   
      /root_dir/fa/Certs/rootca1.cer  -trusted_cert 
      
    5. Import the CA's signing certificate into the wallet using orapki. For a signing certificate file signingca01.cer, for example, the syntax is:

      /root_dir/fa/APPLTOP/webtier_mwhome/oracle_common/bin/orapki 
      wallet add -wallet  
      /root_dir/fa/Certs/ 
      /root_dir/fa/Certs/signingCA01.cer  -trusted_cert 
      
    6. Import the OHS server certificate. For a certificate file ohsServer.cer, for example, the syntax is:

      /root_dir/fa/APPLTOP/webtier_mwhome/oracle_common/bin/orapki 
      wallet add -wallet  
      /root_dir/fa/Certs/ 
      /root_dir/fa/Certs/ohsServer.cer  -user_cert  
      
    7. Check if the imported certificates are present in the wallet, using orapki:

      /root_dir/fa/APPLTOP/webtier_mwhome/oracle_common/bin/orapki 
      wallet display -wallet .
              Oracle PKI Tool : Version 11.1.1.5.0
              Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
       
              Requested Certificates:
              User Certificates:
      Subject:        CN=*.company.com,OU=<your_organization>,O=<your_compnay> ,L=<your_city>,ST=<your_state>,C=US
              Trusted Certificates:
              Subject:        CN=rootca1 <--------- The root CA as a trusted cert
              Subject:        OU=Class 1 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
      Subject:        CN=GTE CyberTrust Global Root,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US
              Subject:        CN=signingCA,DC=company,DC=com <---------- The signing CA as a trusted cert
              Subject:        OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
              Subject:        OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
      
    8. Check the listing of wallet files:

      [applmgr@myhost Certs]$ pwd
      /root_dir/fa/Certs/
      [applmgr@myhost Certs]$ ls -ltr
      total 60
      - -rw-r--r-- 1 applmgr dba 2392 Jan 24 15:12 myca01.cer
      -rw-r--r-- 1 applmgr dba 1834 Jan 24 15:12 rootca1.cer
      -rw-r--r-- 1 applmgr dba 2202 Jan 24 15:12 ohsServer.cer
      -rw------- 1 applmgr dba 9816 Jan 24 23:15 ewallet.p12    <-- newly updated
      -rw------- 1 applmgr dba 9893 Jan 24 23:50 cwallet.sso  <-- newly updated
      

      As shown here, both the required wallet files (ewallet.p12 and cwallet.sso) should have updated date stamps; they are used for Apps OHS and Auth OHS.

  8. Restart the Oracle HTTP Server:

    Note that pwd present working directory. It is a linux command used in this particular case to illustrate which directory this is being implemented in.

    [applmgr@myhost bin]$ pwd
    /root_dir/fa/APPLTOP/instance/CommonDomain_webtier/bin
    [applmgr@myhost bin]$ ./opmnctl stopall
    opmnctl stopall: stopping opmn and all managed processes...
    [applmgr@myhost bin]$ ./opmnctl startall
    opmnctl startall: starting opmn and all managed processes...
    
  9. Verify that a virtual server is running on the SSL port configured:

    OHS_instance/bin/opmnctl status –l
    Processes in Instance: CommonDomain_webtier
    --------------+---------------+---------+----------+-----------+------
    ias-component | process-type  |     pid | status   |    uptime | ports
    --------------+---------------+---------+----------+-----------+------
    ohs1          | OHS           |   20088 | Alive    |   0:02:59 | http:10621,https:10622,http:10615,https:10616,http:10605,https:10606,http:10617,https:10618,http:10623,https:10624,https:7046,https:10604,http:10603
    
  10. Repeat Steps 1 through 9 for any additional Apps OHS servers.

3.2.2.3.3 Configure SSL on the Authentication OHS Server

Complete the following steps to enable SSL on the Authentication Oracle HTTP Server (Auth OHS):

  1. Replace the existing wallet files.

    1. Navigate to the wallet directory located at /root_dir/idm/ohsauth/ohsauth_inst1/config/OHS/ohs1/keystores/default.

    2. Move the existing cwallet.sso and ewallet.p12 files to a backup location.

    3. Copy over the new cwallet.sso and ewallet.p12 files. For example:

      [applmgr@myhost default]$ scp -p 
      applmgr@myhost:/root_dir/fa/Certs/cwallet.sso 
      /root_dir/idm/ohsauth/ohsauth_inst1/config/OHS/ohs1/keystores/default
      applmgr@myhost's password:
      cwallet.sso                                                                              100% 9893     9.7KB/s   00:00
      [applmgr@myhost default]$ scp -p 
      applmgr@myhost:/root_dir/fa/Certs/ewallet.p12 
      /root_dir/idm/ohsauth/ohsauth_inst1/config/OHS/ohs1/keystores/default
      applmgr@myhost's password:
      ewallet.p12                                                                              100% 9816     9.6KB/s   00:00
      [applmgr@myhost default]$
      
  2. Import the certificate for the Oracle Identity Manager's managed server as a trusted certificate, oimcert.crt, into the default Auth OHS wallet:

    1. Confirm that /root_dir/idm/Certs/oimcert.crt is also accessible from the IDM node.

    2. List the contents of the cwallet.sso file for Auth OHS using orapki:

      [applmgr@myhost default]$ /root_dir/idm/oim/oracle_common/bin/orapki 
      wallet display -wallet .
      
    3. Add the Oracle Identity Manager certificate, oimcert.crt, to the Auth OHS SSL wallet:

      [applmgr@myhost default]$ /root_dir/idm/oim/oracle_common/bin/orapki 
      wallet add -wallet 
      /root_dir/idm/ohsauth/ohsauth_inst1/config/OHS/ohs1/keystores/default -cert /root_dir/idm/Certs/oimcert.crt -trusted_cert
      

      A listing of the directory shows the updated files:

      [applmgr@myhost default]$ ls -ltr
      total 23
      drwxr-xr-x 2 applmgr dba     3 Jan 25 12:28 backup
      -rw------- 1 applmgr dba 10557 Jan 25 14:39 cwallet.sso
      -rw------- 1 applmgr dba 10480 Jan 25 14:39 ewallet.p12
      
    4. List the wallet contents using orapki to confirm that the Oracle Identity Manager certificate was imported:

      [applmgr@myhost default]$ /root_dir/idm/oim/oracle_common/bin/orapki 
      wallet display -wallet .
      Oracle PKI Tool : Version 11.1.1.5.0
      Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
       
      Requested Certificates:
      User Certificates:
      Subject:        CN=*.company.com,OU=ABCD,O=Company,L=Anytown,ST=Anystate,C=US
      Trusted Certificates:
      Subject:        OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US
      Subject:        CN=OIM server host,OU=your organization,O=your company,L=your city,ST=your state,C=US
      Subject:        CN=rootca1
      ...
      
  3. Restart the Oracle HTTP Server:

    [applmgr@myhost bin]$ ./opmnctl stopall
    opmnctl stopall: stopping opmn and all managed processes...
    [applmgr@myhost bin]$ ./opmnctl startall
    opmnctl startall: starting opmn and all managed processes...
    
  4. Verify that a virtual server is running on the SSL port you configured:

    OHS_instance/bin/opmnctl status –l
    Processes in Instance: ohsauth_inst1
    --------------+---------------+---------+----------+-----------+------
    ias-component | process-type  |     pid | status   |    uptime | ports
    --------------+---------------+---------+----------+-----------+------
    ohs1          | OHS           |   4650  | Alive    |   0:00:29 | https:4444,https:7779,https:4446,http:7777
    
  5. Configure the load balancer to point to the new SSL virtual host created on the authenticating WebGate. Any load balancer of choice can be used.

3.2.2.3.4 Configure SSL for Oracle Access Manager

This section provides background for configuring 11g WebGates and the Oracle Access Manager server for secure communication.

A WebGate agent must be provisioned to use Oracle Access Manager 11g authentication and authorization services. After installation and registration, Oracle Access Manager 11g WebGates directly communicate with Oracle Access Manager 11g servers through a JAVA-based Oracle Access Manager proxy.

In Oracle Access Manager 11g, credential collection occurs using the HTTP(S) channel, authorization occurs over the Oracle Access Manager Protocol (OAP) channel.

Securing communication between Oracle Access Manager servers and WebGate agents means defining the transport security mode for the NAP channel. There are two options for SSL communication between Oracle Access Manager 11g and Webgate 11g: Simple Mode and Cert Mode.

Oracle recommends enabling the secure sockets layer (SSL) for communication across the HTTP(S) channel to transport credentials and to exchange security tokens. Both functions require signing or encryption with certificates. Oracle Access Manager 11g provides a central facility to manage certificates used across all Oracle Access Manager components, including WebGates.

For WebGate configuration details, see the Registering and Managing OAM 11g Agents section in the Oracle Fusion Middleware Administrator's Guide for Oracle Access Management.

To configure SSL for the OAP channel to Oracle Access Manager 11g, see the Securing Communication section in the Oracle Fusion Middleware Administrator's Guide for Oracle Access Management.

3.2.2.4 Known Issues

This section lists known issues with the SSL configurations described in this document. The following topics are discussed:

3.2.2.4.1 SSL connection Error

Problem

Attempt to connect to Access Server URL: https://hcmssoppbr.domain.com/ returns error:

SSL connection error
Unable to make a secure connection to the server. This may be a problem with the server, or it may be requiring a client authentication certificate that you don't have.
Error 107 (net::ERR_SSL_PROTOCOL_ERROR): SSL protocol error.

This issue is due to a configuration mismatch between client and server configurations.

Solution

Check for configuration issues such as mismatched authentication modes between client and server.

3.2.2.4.2 Issue 3: Webpage Not Available Error

Problem

Attempts to log in to URL:

https://hcmfinppbr.domain.com/financialCommon/faces/LegalEntityDashboard result in this error message:

This webpage is not available
Google Chrome's connection attempt to hcmfinppbr.host.example.com was rejected. The website may be down, or your network may not be properly configured.
 
Issue: Direct URL to Benefits server: https://myhost.example.com:10620/hcmBenefits/faces/HcmBenefitsProcessesAdministerBenefitsWorkArea

Report error:

[2011-10-11T15:44:20.1733-04:00] [OHS] [INCIDENT_ERROR:32] [OHS-2171] [core.c] [host_id: myhost] [host_addr: 10.200.12.63] [pid: 31977] [tid: 1425013056] [user: applmgr] [VirtualHost: hcmsscppbr.domain.com:0]  NZ Library Error: SSL protocol error [Hint: the client probably speaks HTTPS over HTTP protocol]

From the Oracle HTTP Server error log in /root_dir/ohsauth/ohsauth_inst/diagnostics/logs/OHS/ohs1/ohs1.log:

[2011-10-11T16:08:34.3706-04:00] [OHS] [INCIDENT_ERROR:32] [OHS-2171] [core.c] [host_id: myhost] [host_addr: 10.200.12.61] [pid: 28467] [tid: 1349544256] [user: applmgr] [VirtualHost: hcmcrp1sso.domain.com:0]  NZ Library Error: SSL fatal alert

This problem occurs when the browser gets two SSL certificates with the same serial key.

Mozilla Firefox shows the following message:

Secure Connection Failed
...
...
Your certificate contains the same serial number as another certificate issued by the certificate authority.
...

Solution

Complete the following steps to manually delete and recreate the Oracle Identity Manager trust key store with a new certificate substituting actual paths for the samples shown:

/root_dir/oim/jdk6/bin/keytool -list -keystore /root_dir/Certs/oimkeystore.jks
/root_dir/oim/jdk6/bin/keytool -list -keystore /root_dir/Certs/oimkeystore.jks -v
/root_dir/oim/jdk6/bin/keytool -list -keystore /root_dir/Certs/trustkeystore.jks -v
 
/root_dir/oim/jdk6/bin/keytool -delete -keystore trustkeystore.jks -alias authohsoim.example.com
/root_dir/oim/jdk6/bin/keytool -delete -keystore trustkeystore.jks -alias authohsoim2.example.com
/root_dir/oim/jdk6/bin/keytool -import -keystore trustkeystore.jks -alias authohsoim.example.com -file <location of cert.txt> -rfc

3.2.3 Checklist of SSL Connections for IDM Components

This section contains checklists of the SSL connections required by the various IdM components that can operate within the Oracle Fusion Applications environment.

For each component, there is a table listing the server, inbound client connections to that server, and outbound clients from the server, with links to the SSL configuration details for each path.

Table 3-12 shows the connections for Oracle Internet Directory:

Table 3-12 Connections for Oracle Internet Directory

Server Component Inbound Clients to Server Outbound Clients from Server

Oracle Internet Directory - See the Enabling SSL on Oracle Internet Directory Listeners section in the Administering Oracle Fusion Middleware.

Oracle Identity Manager - See the Enabling SSL for LDAP Synchronization section in the Oracle Fusion Middleware Administering Oracle Identity Manager.

Database - See the Enabling Outbound SSL from Oracle Internet Directory to Oracle Database section in the Administering Oracle Fusion Middleware

Oracle Internet Directory - See the Enabling SSL on Oracle Internet Directory Listeners section in the Administering Oracle Fusion Middleware.

Oracle Access Manager - See the Outbound SSL from LDAP Authenticator to LDAP section in the Administering Oracle Fusion Middleware.

Database - See the Enabling Outbound SSL from Oracle Internet Directory to Oracle Database section in the Administering Oracle Fusion Middleware

Oracle Internet Directory - See the Enabling SSL on Oracle Internet Directory Listeners section in the Administering Oracle Fusion Middleware.

Oracle Directory Integration Platform - See the Configuring Oracle Directory Integration Platform for SSL Mode 2 Server-Only Authentication section in the Oracle Fusion Middleware Administrator’s Guide for Oracle Directory Integration Platform.

Database - See the Enabling Outbound SSL from Oracle Internet Directory to Oracle Database section in the Administering Oracle Fusion Middleware

Oracle Internet Directory - See the Enabling SSL on Oracle Internet Directory Listeners section in the Administering Oracle Fusion Middleware.

Oracle Directory Services Manager - See the Logging Into the Directory Server from Oracle Directory Services Manager Using SSL section in the Oracle Internet Directory Administrator's Guide.

Database - See the Enabling Outbound SSL from Oracle Internet Directory to Oracle Database section in the Administering Oracle Fusion Middleware

Oracle Internet Directory - See the Enabling SSL on Oracle Internet Directory Listeners section in the Administering Oracle Fusion Middleware.

Oracle Enterprise Manager - See the Oracle Enterprise Manager Fusion Middleware Control section in the Administering Oracle Fusion Middleware.

Database - See the Enabling Outbound SSL from Oracle Internet Directory to Oracle Database section in the Administering Oracle Fusion Middleware

Table 3-13 shows the connections for Oracle Access Manager:

Table 3-13 Connections for Oracle Access Manager and Oracle Identity Federation

Server Component Inbound Clients to Server Outbound Clients from Server

Oracle Access Manager - Configure SSL for Oracle Access Manager

WebGate - See the Configuring Cert Mode Communication for OAM 11g section in the Oracle Fusion Middleware Administrator's Guide for Oracle Access Management.

Oracle Internet Directory - See the Enable Inbound SSL on an Oracle Internet Directory Listener Using Fusion Middleware Control section in the Administering Oracle Fusion Middleware.

Oracle Access Manager - Configure SSL for Oracle Access Manager

mod_wl_ohs - See the Enable SSL for Outbound Requests from Oracle HTTP Server section in the Administering Oracle Fusion Middleware.

Oracle Virtual Directory - See the Enable SSL for Oracle Virtual Directory Using Fusion Middleware Control section in the Administering Oracle Fusion Middleware.

Oracle Identity Federation - See the Configuring Oracle Identity Federation as an SSL Server section in the Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation.

Oracle WebLogic Server - See the Configuring Oracle WebLogic Server section in the Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation.

LDAP Server - See the Connecting to an LDAP Server over SSL section in the Oracle Fusion Middleware Administrator's Guide for Oracle Identity Federation.

Table 3-14 shows the connections for Oracle HTTP Server (OHS):

3.2.4 SSL-enable Oracle Business Intelligence

It is possible to configure the components of Oracle Business Intelligence to communicate over SSL. For configuration details, see SSL Configuration in Oracle Business Intelligence section in the Security Guide for Oracle Business Intelligence Enterprise Edition.

3.2.5 Enable Secure Sockets Layer on ECSF

Enable Secure Sockets Layer (SSL) on ECSF to secure all connections that transmit passwords. These include connections to Oracle WebLogic Server, the ECSF servlet, and the Oracle SES server.

To enable SSL for ECSF, perform the following tasks:

Task 1   Generate a Certificate for the Oracle WebLogic Server Instance

A certificate that contains the public key of the Oracle WebLogic Server instance hosting ECSF must be generated. This can be either a CA-signed certificate or a self-signed server certificate.

As described later (Task 3), if this is a self-signed certificate, then it must be imported to Oracle SES's truststore. If it is a CA-signed certificate, it likely already exists in the truststore; if not, you must import the CA certificate into Oracle SES's truststore.

Task 2   Enable SSL on the Oracle WebLogic Server Instance

Enabling SSL connections on the Oracle WebLogic Server instance, on which the ECSF application is running, secures the ECSF servlet connections used to access the feeds and the security service.

To enable SSL on Oracle WebLogic Server:

  1. Configure SSL.

    • Select the server on which the ECSF application is running.

    • Make sure that Allow Unencrypted Null Cipher is unchecked (default).

  2. Configure the listen ports to enable the SSL listen port by checking the SSL Listen Port Enabled.

    The SSL Listen Port is usually set as 7002. This port number can be used to access the ECSF servlet through SSL (for example https://mywlsserver.host.com:7002/approot/searchfeedservlet/ConfigFeed). Also note that the protocol in the URL must be https.

  3. Save your changes.

Task 3   Add the Oracle WebLogic Server's Certificate to Oracle SES's Trust Store

When Oracle SES initiates SSL connections to ECSF, the Oracle WebLogic Server instance on which the ECSF Servlet is running sends a digital certificate containing its public key to Oracle SES. If this certificate is a self-signed certificate, then the certificate must be extracted from Oracle WebLogic Server and added to Oracle SES's trust store. (If a CA certificate, ensure that it exists in the SES trust store.)

To add the Oracle WebLogic Server certificate to the Oracle SES trust store:

  1. Use the keytool utility (located in ORACLE_HOME/jdk/bin) to export the Oracle WebLogic Server's certificate from the keystore, for example:

    keytool -export -alias weblogic -keystore JAVA_HOME/jre/lib/security/cacerts -file /temp/weblogic.cer

    where Oracle WebLogic Server's certificate, located in the keystore at JAVA_HOME/jre/lib/security/cacerts, is exported to the weblogic.cer file in the /temp directory; this file now contains the server's certificate.

  2. Navigate to the Oracle SES installation directory, and use keytool to import the Oracle WebLogic Server's certificate into the Oracle SES keystore, for example:

    keytool -import -alias weblogic -file weblogic.cer -keystore ORACLE_HOME/jdk/jre/lib/security/cacerts

    where Oracle WebLogic Server's certificate in the weblogic.cer file is imported into the Oracle SES keystore at ORACLE_HOME/jdk/jre/lib/security/cacerts.

Task 4   Enable SSL for Oracle SES Services

SSL must be enabled on Oracle SES Query and Admin Services. For more information about how to enable SSL, see Oracle Secure Enterprise Search Administrator's Guide.

Since the Oracle SES server's certificate has not been signed by a reputable certificate authority (CA) but instead is a self-signed certificate, the certificate must be extracted from Oracle SES and added to both Oracle WebLogic Server's trust store and ECSF Command Line Administration Utility's trust store using these steps:

  1. Use keytool to add the extracted Oracle SES server's certificate to the trust store that Oracle WebLogic Server is configured to use, for example:

    keytool -import -alias oses -file oses.cer -keystore WLS_keystore

    where Oracle SES server's certificate in the oses.cer file is imported into WLS_keystore, which is the keystore that Oracle WebLogic Server is configured to use.

  2. Add the extracted Oracle SES server's certificate to ECSF Command Line Administration Utility's trust store by modifying the runCmdLineAdmin.bat and runCmdLineAdmin.sh scripts, located in ORACLE_HOME/jdeveloper/ecsf, so that JAVA_HOME points to the path of the keystore that Oracle WebLogic Server is using.

Task 5   Configure Search Engine Instances to Use SSL

After SSL is enabled, reconfigure the search engine instance parameters that contain URLs that point to the ECSF server. These parameters are ECSF_DATA_SERVICE, ECSF_SECURITY_SERVICE, and ECSF_REDIRECT_SERVICE.

The protocol must change from http to https, and the http port must change from 7101 to 7002, the SSL port. For example, change http://wlsserver.com:7101/approot/searchfeedservlet to https://wlsserver.com:7002/approot/searchfeedservlet.

It is important also to reconfigure the search engine instance parameters that contain URLs that point to the Oracle SES server. These parameters are SES_ADMIN_SERVICE and SES_QUERY_SERVICE.

The protocol must change from http to https. For example, change http://sesserver.com:7777/search/api/admin/AdminService to https://sesserver.com:7777/search/api/admin/AdminService. Do not change the port number because the instructions will switch the current port to be an SSL port instead of adding a separate SSL port.

3.3 Provision of Identities

Provisioning as a whole encompasses all the operations required to install, configure, and deploy applications product offerings. Identity provisioning is a subset of this process which populates the users and groups needed for deployment and ongoing administration.

This section contains the following topics:

3.3.1 Identity Provisioning Concepts

During the identity provisioning stage of installation, Oracle Fusion Applications require the existence of certain users with specific privileges. These administrative users are defined in the Security Console.

This section contains the following topic:

3.3.1.1 Define Implementation Users

Implementation users perform the setup tasks in Oracle Enterprise Resource Planning (ERP) Cloud and Oracle Supply Chain Management (SCM) Cloud implementation projects.

Starting on Release 12, the implementation users with their data and provisioning roles, are created using Security Console.

For detailed information on defining implementation users, see topic Define Implementation Users: Overview in the Security Console section within Oracle Help Center (OHC).

3.3.2 Understand Provisioning Steps

The identity provisioning process consists of distinct phases.

  1. In the interview phase, Provisioning Wizard collects the following information:

    • The DN of the user designated as the super user. This user must already exist in the identity store.

    • Whether the system administrators group exists or must be created.

    • If the group exists, the DN of the group.

    • The LDAP authenticator, either Oracle Internet Directory (OIDAuthenticator) or Oracle Virtual Directory (OVDAuthenticator) that will serve as the LDAP identity store.

  2. The next step of the process verifies that the designated super-user exists in the identity store.

    The system administrator group is created if needed, and the super user is made a member of the group.

  3. The application domains are created, the LDAP authenticator is enabled, and the WebLogic domain is started up.

  4. Following configuration, the system administrator groups are assigned the appropriate family-level enterprise roles.

At the end of this process, the super user has:

  • Administrator privileges for all WebLogic domains and all middleware.

  • Function setup privileges for all Oracle Fusion applications.

  • Administration privileges to Oracle Fusion Applications. These do not include transactional privileges.

For more information about identity provisioning and using the interview wizard to create a provisioning plan, see Plan the Topology and Provisioning of the Installation in Oracle Fusion Applications Installation Guide.

3.3.3 Best Practices for the Administrator Groups

While there are logical sets of "super" administrative groups (a set of two per application family, consisting of the super-user administrator and the application administrator) it is possible to choose to distribute these functions among fewer individuals. The recommended best practice is to carefully plan the separation of duties, taking into account the real-world operational needs of the site.

3.3.4 Manage Identities After Deployment

The Security Console makes possible to add, update, and delete user accounts from applications and directories.

Identities can be created and managed when user records are created through activities such as employee hiring and creation of contacts through Oracle Fusion CRM. In addition, identities can also be created and managed administratively through the Security Console.

3.4 Security Console

On Fusion Applications Release 12, the Authorization Policy Manager was removed and replaced by the Security Console.

The Security Console will perform the following tasks:
  • Manages application security in the Oracle Applications Cloud service

  • Security-related tasks pertinent to role management

  • Role analysis

  • User-account management

  • Certificate management

For detailed information on the mentioned tasks, see the following topics in the Security Console section within Oracle Help Center (OHS):
  • Security Console: Overview

  • Setting Up the Security Console: Explained

  • Creating Users: Procedure

  • Creating Roles in the Security Console: Procedure

3.5 Masking Data

Data masking is the ability to replace sensitive data with realistic but false data on test and development databases. Features include:

  • The ability to keep data properties (data type, width, and so on) intact and provide realistic data sets for analysis and testing.

  • Ensuring various constraints like (Primary Keys, Uniqueness, Foreign keys) are maintained, preserving relational integrity.

  • Using user specified formatting rules that ensure custom and packaged applications continue to work after the data is masked.

To learn more about data masking concepts, see the Oracle Data Masking and Subsetting Guide Enterprise Manager JA.

Data masking is an on-going activity for the Oracle Fusion Applications administrator. This section explains how data masks and masking definitions are created and managed with Oracle Enterprise Manager Cloud Control, how to generate a masked database, and related administration tasks

This section contains the following topics:

3.5.1 Data Masking in Oracle Fusion Applications

The Oracle Fusion Applications administrator must take certain considerations into account when implementing data masking for an application. For example, free space requirements must be evaluated to ensure that adequate resources are available to the masking job. The following instructions provide guidelines:

3.5.1.1 Requirements for Data Masking

It is important to be aware of certain background information, prerequisites, and requirements before undertaking data masking operations in the environment.

This section contains the following topics:

3.5.1.1.1 Data Model Descriptions

It is essential to understand the data model for the application data when deciding how and what to mask. For data model descriptions, see the product-specific documentation from Oracle Enterprise Repository for Oracle Fusion Applications.

3.5.1.1.2 Required Versions

Data masking requires the following:

  • Oracle Database 11g Release 1

  • Oracle Enterprise Manager Cloud Control 11 g or Oracle Enterprise Manager Cloud Control 12c

  • Oracle Data Masking and Subsetting Pack

For more information on installing and using Enterprise Manager Cloud Control, see Get Started with Enterprise Manager Cloud Control.

3.5.1.1.3 Preliminary Steps

Certain steps must be performed before using data masking in an Oracle Fusion Applications environment.

MANDATORY: When using DB Plugin 12.1.0.7 and above, the required format libraries are automatically installed. Ensure the DB Plugin version is 12.1.0.7 or above.

Follow the below steps to configure temp spaces:

  1. Apply any required patches. Data masking requires a specific Oracle Database version and patch set. See Patch Database Artifacts in Oracle Fusion Applications Patching Guide for more information.

  2. Install the agent on the database host using Oracle Enterprise Manager.

  3. Discover the database using Oracle Enterprise Manager.

  4. Change the temp spaces used for data masking to "Auto Extend" from Cloud Control Console:

    1. Click Targets, then Databases.

    2. Select the database and log in.

    3. Navigate to Administration, then Storage, then Datafiles.

    4. On the Datafiles page, enter temp in the Object Name search box. Press Go. The temp spaces are displayed:

      Figure 3-5 Datafiles Page



      When configured correctly for masking, as in this example, auto-extend is enabled for the temp spaces.

    5. If setting auto-extend is needed, edit each temp space in turn by selecting its radio button and clicking Edit. Change the value for each space as shown here:

      Figure 3-6 Edit Datafile Page



3.5.1.1.4 Temporary Space Requirements

As shown in Step 3 of Preliminary Steps it is recommended to auto extend the temp files as masking requires additional space for processing. The amount of additional space needed depends on the data. Broadly speaking, masking takes up approximately two times the size of the largest table being masked.

The temp space is needed for two reasons:

  • To perform sort and join operations during masking.

    The space requirement is not straightforward to estimate as it depends on whether sorts and joins go to disk, which in turn depends on how much memory is available on the machine. Try to keep at least as much space as the size of your biggest masked table for sort and join processing.

  • For space taken up in the default user tablespace for temporary masking tables.

    The size of the temp tables is twice the size of all the columns being masked. Since these tables are dropped after processing, the space is released after masking completes.

3.5.1.1.5 Database Free Space Requirements

Ensure that sufficient free space is available to the database before executing the masking job.

Calculate the free space requirements as follows:

largest table being masked +
total size of mapping tables for all columns in that table + 
temporary tablespace (roughly twice the size of the largest mapping table, as
stated under Temporary Space Requirements above)
3.5.1.1.6 Database and Operating System Parameters

The following database configuration is recommended:

memory_target = 26G
pga_aggregate_target = 6G
sga_max_size = 26G
sga_target = 0

Operating System Configuration (All Platforms)

The following operating system configuration is recommended:

  • Memory Address Space: Unlimited. For example, in the /etc/security/limits.conf file:

    oracle soft memlock unlimited
    oracle hard memlock unlimited
    
  • Memory Map Areas: 200000. For example,

    [my@host ~/rhe]$ /usr/local/packages/aime/ias/run_as_root su
    [root@host rhe]# echo 200000 > /proc/sys/vm/max_map_count
    
3.5.1.1.7 Role Requirements

The user executing the data masking script must have the dba role. If Virtual Private Database (VPD) security policies are used or Oracle Database Vault is enabled for the database, the user must be SYS.

Additionally, the user may need to have direct grants to objects for any PL/SQL objects provided to user-defined functions or post-processing scripts.

Optionally, you can grant EXEMPT ACCESS POLICY privilege to the masking user to bypass all VPD policies.

3.5.1.1.8 Custom Field Masks

Oracle Fusion Applications include a set of out-of-the-box masking definitions to mask common sensitive data like employee information and credit card numbers. However, these default mask templates cannot account for custom data such as flex fields since these are specific to the application.

It is possible to update the standard masking definitions to include additional flex fields and custom data. For details about viewing and updating masking templates, see View and Modify Data Masking Definitions.

Important:

Be aware that certain sensitive custom attributes may depend on tables in other product families. For example, Procurement masking is dependent on Oracle Fusion CRM (for Suppliers and related entities, and for Procurement Contract terms and deliverables), on Oracle Fusion Supply Chain Management (for Items), on Oracle Fusion HCM (for Workers and Organizations), on Oracle Fusion Financials (for Ledgers), and on Oracle Fusion Project (for Projects and related entities).

3.5.1.1.9 Production-to-Test Requirement

During the production-to-test process, replace the production user names with dummy user names. This mandatory step is needed to avoid breaking anonymization.

3.5.1.2 Sensitive Data in Oracle Fusion Applications

Oracle Fusion Applications identify the common sensitive data types for each product family.

It is possible to use Oracle Enterprise Manager Cloud Control to view the sensitive attributes specified in the masking definitions. The definitions could be updated with any additional desired sensitive attributes, such as flex fields or other customized fields.

For details about how to view and update masking templates, see View and Modify Data Masking Definitions.

3.5.1.3 Masking Definitions

A masking definition specifies the columns to be masked and the format of the masked data. Out-of-the-box "template" masking definitions are provided for each family of Oracle Fusion Applications.

Masking definitions in XML format masks enable the data masking utility to identify the database tables, columns, and column formats of the data being masked.

3.5.2 Manage the Masking Templates

The Software Library contains a collection of common masking templates for Oracle Fusion Applications which can be imported for use in the environment and modified as needed.

The following sections explain how to obtain and manage the data masking templates:

3.5.2.1 Use Self Update to Obtain the Masking Templates

With auto-download enabled in the Self Update feature, the latest templates appear in the Software Library as they become available.

Otherwise, it is possible to access them manually as follows:

Important:

This procedure requires database plug-in 12.1.0.3 or above.

  1. Log in to Oracle Enterprise Manager Cloud Control.
  2. Navigate to Enterprise, then Provisioning and Patching, then Patches and Updates, and sign in to My Oracle Support.
  3. From the Setup menu, select Extensibility, then select Self Update.
  4. On the Self Update page, scroll down and select Data Masking and Subsetting templates. and click Check Updates.
  5. In the Available Updates table, select the templates to be downloaded and select Download from the Actions menu.

    This action downloads the templates to the Software Library from where it is possible to import them into the environment or save them locally for editing. Click the Readme to understand about the templates.

3.5.2.2 Import Masking Templates from the Library

Import the Application Data Model (ADM) and the masking template file as follows.

  1. Log in to Enterprise Manager Cloud Control (EMCC) using credentials that permit data masking.

  2. Import the Application Data Model (ADM) using EMCC.

    Note:  If there is more than one database, the EMCC method requires that the same job for each database is submitted separately.

    1. Click Action, then Import

    2. Provide the ADM XML file (for example, ADM_Oracle_Fusion_Applications_Rel<x>_Combined_Template.xml). Fill in a name and the fusion database.

    3. If prompted for  database credentials, provide the fusion user credentials.

    4. Warnings indicating that duplicate sensitive types were not imported may be displayed; these warnings can be safely ignored.

  3. Create a verification job.

    1. Using EMCC, navigate to Enterprise then, Quality Management, and then Applications Data Model.

      Note:  If there is more than one database, the EMCC method requires that the same job for each database is submitted separately.

    2. Click the ADM XML file imported and click Verify. (It is also possible to get to this task by navigating to Actions, and then Verify.)

    3. Click Create Verification Job. Provide a job name and a job description.

    4. Click New Credential, and provide the FUSION credentials.

    5. Schedule the job to start immediately, and click Submit.

  4. In EMCC, check the job status.

    1. Navigate to Enterprise, choose Job, and then Activity. Then select All in the Status dropdown.

    2. Click go and check that the job created has completed successfully.

  5. Import the masking template file using EMCC.

    1. Navigate to Enterprise, choose Quality Management, and then Data Masking Definition. The dropdown list contains data masking definitions and formats.

    2. Click Import from the Software Library.

    3. Select the required template and specify appropriate values for the input parameters.

      For the ADM name, specify the name of the Fusion ADM created in Step 1.

      For the database name, specify the fusion database.

      Provide a masking definition name. For example, Oracle Fusion Applications HCM V1.0.

  6. Select the mask definition and click the generate script button.

    Script generation can take several hours. The EMCLI command list_masking_definitions can be used to monitor the status of script generation. The status will be "Script generated" when complete. The script can then be saved or viewed, and the impact report checked.

3.5.2.3 Export Masking Templates from the Library

It is also possible to export a template from the software library (for local editing or other tasks) using these steps:

  1. Log in to Oracle Enterprise Manager Cloud Control.
  2. Navigate to Enterprise Menu, then Quality Management, then Data Masking Definitions.
  3. Click Export from the Software Library.
  4. Select the required template and click Save. Specify a location to which the XML file is saved.

3.5.3 View and Modify Data Masking Definitions

It is possible to modify the default masks provided with Oracle Fusion Applications, and create preferred masking definitions. Use Oracle Enterprise Manager Cloud Control Console to manage and maintain the data masking definitions.

The procedure in this section assumes that the masking template file has been imported. If it have not been done so already, see Manage the Masking Templates.

MANDATORY: Follow the instructions in Requirements for Data Masking before performing the operations described in this section.

View and modify out-of-the-box data masking definitions as follows with Cloud Control Console:

  1. Ensure that the masking template file has been imported. For details about this task, see Manage the Masking Templates.
  2. In Cloud Control, select the Targets drop-down.
  3. Select the Databases option.
  4. Select the database whose mask definition are being configured from the list of databases.
  5. In the Security drop-down, select Data Masking. The Data Masking Definitions page lists the current masks for the database:

    Figure 3-7 Data Masking Definitions Page



  6. Select the desired mask definition to view or update and click Edit.
  7. Log in to the database.
  8. The Edit Masking Definition page appears. It lists the columns included in the mask definition.

    Figure 3-8 Edit Masking Definition Page



  9. Several operations are available on this page:
    • To add another column to the definition, click Add.

    • To modify a column format, click the Format icon.

    • To refine the list of columns, use the Enable, Disable and Search filter options. For example, to remove a column from the mask definition, check the box and click Remove.

  10. To introduce a new column into the definition, for example, click Add. The Add Columns page appears.
  11. To locate the column, enter the schema and table name and click Search.

    In this example, we search the MOO_REVN table in the FUSION schema:

    Figure 3-9 Add Columns Page



  12. Select the checkbox for the MARGIN_AMT column and click Add.

    The Edit Masking Definition page reappears, with MARGIN_AMT added to the column list.

    Unlike the other columns, the format toolbox icon for MARGIN_AMT is displayed in red, which means that no mask format has yet been defined for the column. A format for this column must be specified to complete the definition.

  13. Click on the toolbox icon. The Define Column Mask page appears.

    Figure 3-10 Define Column Mask Page



  14. Now specify a mask format entry for MARGIN_AMT using the drop-down box. Click Add to complete the process.

    In this example we select a random number format and specify the start and end lengths. To see how the masked data will appear in this format, click the Sample icon.

    Figure 3-11 Define Column Mask Page



    It is possible to use the Import Format button to import an existing format entry.

  15. Click OK. Cloud Control checks that the entry is valid for the column's data type. The Edit Masking Definition page reappears, and the MARGIN_AMT column now has a valid mask format.

    Click OK to save the masking definition.

Likewise, starting at the Edit Masking Definition page (Step 8 above), it is possible to modify the definition of an existing column by clicking its Format icon. This is useful, for example, when customizing the properties of a column's format entry, or specifying a different format entry for the column.

3.5.4 Generate and Submit the Masking Script

When modifying a data masking definition by adding or removing columns, or by modifying an existing column's mask format, the SQL masking script must be regenerated to incorporate the changes.

Generate the Masking Script

To generate the script:

  1. Follow Steps 1 through 5 of View and Modify Data Masking Definitions to display the data masking definitions for the database.
  2. After creating or modifying a masking definition, its status is listed as Script Not Generated."

    Select the definition and click Generate Script.

  3. The Schedule Script Generation page appears. Specify generation options, login credentials, and a start time. Specify the necessary values and click Submit.

    Return to the Data Masking Definitions page; the Status column lists the job in progress.

  4. After processing is complete, the job status changes to Script Generated. Click the entry for Most Recent Job Completed to view the job details:

    Figure 3-12 Most Recent Job Completed Summary Page



    From this page, it is also possible to check the details of intermediate steps by clicking their Status entry.

  5. After processing is complete, the following steps may be:
    • Integrate the masking script with the clone database process

    • Schedule execution of the script to perform the masking operation.

3.5.5 Customize Mask Formats

The format library is a collection of common, ready-to-use masking formats that can be used in masking definitions. Oracle Data Masking enables the default mask format library to be extended by tailoring the existing formats, or creating new formats to meet the business needs.

Take these steps to add a new format:

  1. Ensure that the masking template file has been imported. For details about this task, see Manage the Masking Templates.
  2. In Cloud Control, select the Targets drop-down.
  3. Select the Databases option.
  4. Under Related Links, select Data Masking Format Library.

    Figure 3-13 Data Masking Format Library Page



  5. When adding a new format, an existing format as a starting point can be taken. For example, to create a new format for credit card number fields, it is possible to select an existing credit card format and click Create Like.

    Figure 3-14 Create Format Page



  6. Enter a descriptive name for the new format, and use the drop-down list under format entries to select a masking format. A different post-processing function may also be specified, if desired.

Similarly, existing formats can be modified or new formats created on the Format Library page.

3.5.6 Best Practices when Masking Test Databases

Identity data can reside in several repositories: the Oracle Database, the production identity store (an LDAP store), and the Oracle Identity Manager database.

In the current release, when implementing data masking, the identity attributes are only masked (anonymized) in the Oracle Fusion Applications database. To preserve masked values, ensure that these best practices are followed when using the masked data for a test database:

  1. Do not run the Enterprise Scheduler Service (ESS) job to synchronize the LDAP identity store and the Oracle Fusion Applications database, since doing so would reset the identity attributes in the database to their unmasked values.

  2. Set up "dummy" test users to perform the testing.

  3. Do not:

    • Log in to the test database as a real user.

    • Update a user's attributes in either the LDAP identity store or the Oracle Identity Manager database.

    Doing so will reset that user's attributes to their unmasked values, allowing them to see their own masked record in employee self-service, deduce other people's identities by following the hierarchy, and so on.

In short, it is essential to maintain close access control to databases holding live cloned data, and make testers aware of their obligations and responsibilities regarding the data. As far as is possible, the processes around test data based on live data should mirror the processes around the live data itself. In particular, testers must not use privileged access to look beyond what they need to perform the required tests. For example, they must not try to work out to whom the data pertains, or try and find private information to satisfy their own curiosity.

3.5.7 Masking References

To access a detailed data masking tutorial, perform the following steps:

  1. Go to Oracle Technology Network.

  2. Under Essential Links, click Tutorials.

  3. In the search field, enter Replacing Sensitive Data Using the Data Masking Pack and press Return.

  4. Click the link to the lesson to start the tutorial.

3.6 Secure Web Services

Oracle Web Services Manager (WSM) provides a policy framework to manage and secure Web services consistently across the organization. Oracle WSM is available to the following users:

  • Developers, at design time through Oracle JDeveloper

  • System administrators in production environments with Fusion Middleware Control and command-line tools

The Oracle WSM policy framework secures Web services with policies, which describe capabilities and requirements such as whether and how a message must be secured, whether and how a message must be delivered reliably, and so on.

This section contains the following topics:

3.6.1 Configure and Manage Local Policies

A policy subject is the target resource to which the policies are attached. Examples include Web services endpoints, Web service clients, SOA service endpoints, SOA clients, and SOA components.

Directly attaching one or more policies to a policy subject is referred to as Local Policy Attachment (LPA). The key tasks related to LPAs include:

  • Attaching policies to a single Web service endpoint

  • Managing and disabling policies at an endpoint

  • Removing (detaching) policies from a Web service endpoint

  • Troubleshooting Web service security

To locate the procedures for these tasks, see Attaching Policies Locally in the Oracle Fusion Applications Developer's Guide .

3.6.2 Configure and Manage Global Policies

A policy set, which can contain multiple policy references, enables policies to be attached globally to a range of endpoints of the same type. By attaching policies globally in this way, referred to as Global Policy Attachment (GPA), it is possible to ensure that all subjects are secured by default.

The key tasks related to GPAs include the following:

  • Creating and managing policy sets

  • Validating policy sets

  • Enabling and disabling policy sets globally and for specific endpoints

  • Determining what policies are enforced when both LPA and GPA are defined

  • Viewing policies attached to a Web service

  • Troubleshooting Web service security

To locate the procedures for these tasks, see Attach Policies Globally in the Oracle Fusion Applications Developer's Guide .

3.6.3 Web Services Security Profiles

Oracle Web Services Manager supports three Web services security profiles:

  • AuthN Profile

  • SSL Profile - provides transport-level security

  • Message Security Profile - provides message-level security

Out-of-the box, Oracle Fusion applications are provisioned with the AuthN profile. You can move your deployment to a different profile if needed.

3.6.4 Key Exchange with the Domain Hosting Oracle Identity Manager

During provisioning, all Oracle Fusion Applications domains are set up to use a common keystore and credential store, whereas the Oracle Identity Management domain (which includes Oracle Identity Manager) uses a separate keystore, and stores credentials in a logical domain. Provisioning does not set up trust between these keystores. This section explains how to exchange trust with the Oracle Identity Manager domain, enabling Web services security when this domain is involved.

3.6.4.1 Export a Keystore Alias from Application Domain

Take these steps to export the keystore alias:

  1. Navigate to the DOMAIN_HOME/config/fmwconfig directory of the domain.
  2. Run the keytool command to export the alias into a file called orakey.cert using syntax like in this example:
           JAVAHOME/bin/keytool -exportcert -alias orakey -file orakey.cert -keystore default-keystore.jks -storepass keystore-password
    

    This command creates a file called orakey.cert containing the exported orakey alias.

    When using this command, specify the alias name and keystore password applicable to the environment.

3.6.4.2 Import a Keystore Alias into Oracle Identity Manager Domain

Take these steps to import the keystore alias:

  1. Copy the file generated by the export procedure (orakey.cert in the export example) into the DOMAIN_HOME/config/fmwconfig directory of the Oracle Identity Manager domain where the alias will be imported.
  2. Run the keytool command using the following syntax to import the certificate:
    JAVA_HOME/bin/keytool -importcert -alias orakey -file orakey.cert -keystore default-keystore.jks -storepass keystore-password
    

This command imports the alias into the Oracle Identity Manager domain's keystore.

Similar steps are used to export the Oracle Identity Manager key and import it into the other domain.

3.7 Hardening Tasks

This section describes a variety of measures you can take to secure the Oracle Fusion Applications environment. Topics include:

3.7.1 Secure Database Network Traffic

To enhance security for network traffic to the database, Oracle Advanced Security supports data encryption and integrity for both servers and clients.

Oracle Database supports industry-standard algorithms for protecting the confidentiality of Oracle Net Services traffic. These algorithms:

  • Encrypt network data provides data privacy so that unauthorized parties are not able to view plaintext data as it passes over the network.

  • Ensure data integrity so that unauthorized parties are not able to modify data as it passes over the network. Integrity protects against two forms of active attack: Data modification attack and Replay attack.

Oracle Fusion Applications deploys with the following settings for client and server in the sqlnet.ora file:

Encryption Type: REQUIRED

Checksum Level: REQUIRED

These settings mean that the encryption and integrity services are enabled.

The following instructions provide an example of how to confirm that only encrypted data is transferred between the database server and other sources:

  1. On the server, locate the sqlnet.ora configuration file in the following directory of the database Oracle Home:
    ORACLE_HOME/network/admin
    
  2. Using a text editor, look for the following entries (or similar entries) in the sqlnet.ora file:
    SQLNET.ENCRYPTION_SERVER = REQUIRED
    

    To avoid weak protocols and add more seed, include the following lines:

    SQLNET.ENCRYPTION_TYPES_SERVER= (AES256, AES192, 3DES168)
    SQLNET.CRYPTO_SEED = <randomstring_for_this_deployment_up_to_70_characters>
    
  3. Repeat this procedure to configure encryption on the other system.

The sqlnet.ora file on the two systems should contain the following entries:

On the Server

SQLNET.ENCRYPTION_SERVER = [accepted | rejected | requested | required]
SQLNET.ENCRYPTION_TYPES_SERVER = (valid_encryption_algorithm )
SQLNET.CRYPTO_SEED = <randomstring_for_this_deployment_up_to_70_characters>

On the Client

SQLNET.ENCRYPTION_CLIENT = [accepted | rejected | requested | required]
SQLNET.ENCRYPTION_TYPES_CLIENT = (valid_encryption_algorithm )

3.7.2 Disable Unused Components to Minimize Risks

Components not in use in a deployment can represent unnecessary security risks. This section explains how to remove or disable such components.

Debug Utilities in a Workspace Web Application

For troubleshooting purposes, Enterprise Performance Manager (EPM) Workspace is delivered with uncrunched JavaScript files. For security, use these steps to remove these JavaScript files from the production environment:

  1. Create a backup copy of the following directory:
    Oracle_BI1/common/epmstatic/wspace/js/directory
    
  2. Delete all the .js files except DIRECTORY_NAME from each subdirectory of Oracle_BI1/common/epmstatic/wspace/js.

Each subdirectory contains a .js file that bears the name of the directory. For example, Oracle_BI1/common/epmstatic/wspace/js/com/hyperion/bpm/web/common contains Common.js. Remove all .js files except the one that bears the name of the directory, in this case, Common.js.

Operating System Services

The Linux platform provides a variety of operating system services, many of which are not necessary for most deployments. Examples of such services include FTP, TFTP, TELNET and so on.

Be sure to close both the UDP and TCP ports for each service that is being disabled. Disabling one type of port and not the other does not make the operating system more secure.

3.7.3 Hardening Backchannel Network and Services

The back-channel refers to zones and network paths that are not directly accessible to external users or client programs.

In the Oracle Fusion Applications environment, back-channel communication is conducted by:

  • WebGate in Oracle HTTP Server within the Web Tier, using Oracle Access Protocol (OAP) to communicate with Oracle Access Manager

  • Managed and administration servers for the various product families in the Application Tier

  • Database and LDAP servers in the Data Tier

  • Oracle Fusion Web Services

For implementation details for securing back-channel communications, see Secure Web Services.

3.7.4 Configure External Clients with Externally-Facing Web Services

This section explains the Web services policies that external clients can use to further secure communication. The first step is to choose the appropriate mechanism for the client application; the second one is to configure the chosen mechanism.

The policy oracle/wss11_saml_or_username_token_with_message_protection_service_policy contains the following assertions:

  • oracle/wss11_saml_token_with_message_protection_service_template: a SAML-based authentication for inbound SOAP requests in accordance with the WS-Security 1.1 standard.

  • oracle/wss11_username_token_with_message_protection_service_template: a username token authentication for inbound SOAP requests in accordance with the WS-Security 1.1 standard.

  • oracle/wss_saml_token_bearer_over_ssl_service_template: a SAML-based authentication using credentials provided in SAML tokens with confirmation method 'Bearer' in the WS-Security SOAP header; it verifies that the transport protocol provides SSL message protection.

  • oracle/wss_username_token_over_ssl_service_template: a username token authentication using the credentials in the UsernameToken WS-Security SOAP header to authenticate users against the configured identity store; it verifies that the transport protocol provides SSL message protection.

  • oracle/wss_http_token_over_ssl_service_template: HTTP authentication using credentials extracted from the HTTP header to authenticate users against the configured identity store; it verifies that the transport protocol is HTTPS.

3.7.4.1 Choose a Mechanism

To determine the mechanism to use with the client application, consider the following cases:

  1. If the client application provisions user passwords along with user identities, then it can use one of the following three username/password mechanisms along with user identities:
    • If it supports basic WS-security and uses SSL, use oracle/wss_username_token_over_ssl_service_template . In this case, the transport channel is secured with SSL and the SOAP message carries a WS-Security header with a UsernameToken and TimeStamp.

    • If it does not support basic WS-security and uses SSL, use oracle/wss_http_token_over_ssl_service_template. In this case, the transport channel is secured with SSL and the username/password is passed with the standard Http Authorization header for basic authorization.

    • If it does not use SSL, then use oracle/wss11_username_token_with_message_protection_service_template.

  2. Otherwise, if it does not provision user passwords along with user identities but users need be authenticated locally, then it can use one of the following SAML-based mechanisms:
    • If SSL is used to secure the transport channel, then use oracle/wss_saml_token_bearer_over_ssl_service_template.

    • Otherwise, if SSL is not used, then use oracle/wss11_saml_token_with_message_protection_service_template.

3.7.4.2 Set Up Policy Assertions and Configure Mechanisms

To set up policy assertions, several configurations are needed, as explained in the following sections:

3.7.4.2.1 Set Up the Policy Assertions

To set up each of the policy assertions, proceed as follows:

3.7.4.2.2 Configure the Message Encryption Certificate (Client Side)

To configure the message encryption certificate, an external client must get the certificate of the service, which is described in the Web Services Description Language (WSDL).

To extract the certificate from the WSDL, proceed as follows:

  1. Save the WSDL to a local file.
  2. In the saved file, search for the string "X509Certificate" to locate the certificate within the file; the following snippet illustrates this search:
    <dsig:X509Certificate> MIICHTCCAYagAwIBAgIETBwVYjA ... </dsig:X509Certificate>
    
  3. Copy the long string within the tag <dsig:X509Certificate> into a new text file.
  4. Rename or edit the text file as follows:
    • If this certificate is used within a Microsoft client, rename this file with .cer file extension and use it as a certificate file.

    • If this certificate is used within a Java client, change the text file so that the certificate is framed by BEGIN and END, as illustrated in the following sample:

      -----BEGIN
                      MIICHTCCAYagAwIBAgIETBwVYjA ... 
                      -----END
      
  5. Import the certificate into the client's trust store.
3.7.4.2.3 Configure the Token Issuer Trust (Server Side)

If the client application uses ID propagation or federated authentication, the client must authenticate with a SAML assertion from a SAML toke issuer.

To configure trust for the token issuer on the service side, proceed as follows:

  1. Import the SAML token signing certificates into the domain trust store of the service with the use of the utility keytool, as illustrated in the following sample invocation:

    keytool -importcert -file <sts-signing-cert-file> -trustedcacert -alias  <alias>  -keystore default-keystore.jks
    

    I f the SAML token signing certificate is issued from a CA, all the certificates in the certification chain must be imported.

  2. Add SAML Issuer to the list of trusted issuers. Specifically, one needs to add the DN (Distinguished Name) of the signing certificate of the SAML Issuer to the list of trusted DNs. To define a list trusted DNs using EM Fusion Middelware Control, proceed as follows:

    1. Select WebLogic Domain then, Web Services and then, Platform Policy Configuration

    2. In that page, select the tab Trusted STS servers if oracle/wss_saml_token_bearer_over_ssl_service_template if being configured, or the tab Trusted SAML clients, if oracle/wss11_saml_token_with_message_protection_service_template is being configured.

    3. Add the SAML issuer to the Trusted Issuers section of the page.

    4. Select the trusted issuer for which a DN list will be defined and then add the trusted DN in the Trusted STS server's area of the page.

3.7.5 Hardening Web Services

To further the security of Web Services, keep in mind the following adjustments and recommendations:

  • Choose a more secure policy appropriate for all the internal Web services; it is possible to choose to not distinguish between internal and external, and use the same policy for all Web services.

  • When changing the attachment of security policies, note that:

    • The client policy must be changed accordingly.

    • The client and callback policies must be compatible with the service being invoked; otherwise the Web service invocation will not work.

    • In case of exporting setup data, the corresponding Service and Callback policies for all Setup Data services must match the Functional Setup Manager (FSM) Processing Service (MigratorService) and FSM Migrator Callback Service (MigratorCallbackService) policies; these must be the same in all the domains so that FSM export and import are fully functional.

    • Use the same GPA policy across all the domains if the domain-wide GPA policy is changed.

  • If a secure sockets layer (SSL) policy is used, verify the following:

    • The Oracle HTTP Server (OHS) options have been set to propagate the SSL client certificate and settings to the Weblogic Server (WLS) if the SSL terminates at the OHS.

    • The SSL variables and client have been set to go to OHS and then load balancer (LBR) if the SSL terminates at the LBR level.

    • The policies for SAML Token (Sender Vouches) have been configured over SSL for two-way SSL. Other authentication tokens such as username token, and SAML bearer token require only one-way SSL.

3.7.6 More Secure Keys and Certificates

Oracle Fusion Applications provisioning sets up the keystore with self-signed certificates that can be chosen to replace keys and certificates. For example, if there is an enterprise CA, its can be used to generate keys and certificates, but it is essential to:

  • Configure the Web services to accept only a configured list of SAML signers by configuring the trusted distinguished names (DN) list for SAML signing certificates in every domain. The private key configured for Oracle Web Services Manager (OWSM) is used for signing SAML Sender Vouches assertions. The certificates placed in the OWSM keystore are for verifying SAML assertions.

    If the enterprise CA is put in the OWSM keystore, every certificate issued by the enterprise is acceptable for verifying assertion unless Web services is configured to accept only the list of SAML signers. For detailed information, see Configure the Token Issuer Trust (Server Side).

  • Enable hostname verification by setting the value of wsm.ignore.hostname.verification to false. By default, host name verification is turned off in OWSM.

3.8 Password and Certificate Management

FA environments include the following two important administrator roles:

  • The FMWAdmin role, which has privileges to administer and monitor middleware components.

  • The FAAdmin role, which has privileges to do functional setup after the environment has been stood up.

Typically, the above two roles are granted to different users. But in bare-metal environments, during FA Provisioning, both roles can be granted to a single user and it is possible to choose that user to be FAAdmin or a different user in the Identity Store; this user is called the super user. If the super user is different from FAAdmin, then FAAdmin becomes a plain user with no special privileges.

The tools available to manage various passwords and certificates are the following:

  • The Password Reset Tool (PRT)

  • The Password Change Utility (PCU)

  • The Certificate Renewal Utility (CRU)

Password and certificate management tasks include the following typical ones:

  • Changing the FMWAdmin User password

  • Changing the FAAdmin User password with PRT

  • Changing the OAMAdmin User password with PRT

  • Changing the passwords of bind users used by Fusion Applications

  • Regenerating random passwords of application id users with PRT

  • Changing DB schema passwords with PCU

  • Updating certificates with CRU

The above tasks are explained in the following sections:

3.8.1 Change the FMWAdmin Password

During the Oracle Fusion Applications installation, a password for the Oracle Fusion Middleware administration user must be provided; this account is used to log in to Fusion Applications Control and to the Oracle WebLogic Server Administration Console.

In environments where the FMWAdmin user and the FAAdmin user are different users, the password of the FMWAdmin user can be changed using either the Oracle WebLogic Server Administration Console or the WLST command line, as explained in Change the Oracle Fusion Middleware Administrative User Password Using the Command Line, and Change the Oracle Fusion Middleware Administrative User Password Using the Administration Console.

In environments where those two users are the same user (that is, the FAAdmin user), then use PRT to change the password of the FAAdmin user, as explained in Invoke PRT in Interactive Mode.

3.8.1.1 Change the Oracle Fusion Middleware Administrative User Password Using the Command Line

To change the Oracle Fusion Middleware administrative user password (or any other user password) using the command line, invoke the method UserPasswordEditorMBean.changeUserPassword which is extended by the security realm's AuthenticationProvider MBean.

3.8.1.2 Change the Oracle Fusion Middleware Administrative User Password Using the Administration Console

To change the password of the Oracle Fusion Middleware administrative user using the Oracle WebLogic Server Administration Console, proceed as follows:

  1. Navigate to the Oracle WebLogic Server Administration Console.
  2. From the target navigation pane, select Security Realms. The Summary of Security Realms page is displayed.
  3. Select a realm; the settings for the selected realm are displayed.
  4. Select the Users and Groups tab, then the Users tab; select a user, so that the settings for selected user are displayed.
  5. Select the Passwords tab.
  6. Enter the new password twice.
  7. Click Save.

3.8.2 Use PRT to Change Various Passwords

FA installations need periodically to change passwords stored in the Identity Store. The Password Reset Tool meets this need by allowing to:

  • Change the password of the FAAdmin user

  • Change the password of the OAMAdmin user

  • Change the passwords of bind users used by Fusion Applications

  • Regenerate random passwords for all application id users

Application id user passwords are not used for login in, but internally by the system, for example, when wiring connections between components. Application id user passwords are set randomly during provisioning and can be reset randomly with PRT.

PRT changes the password of the FA administration user only if that user is FAAdmin; if the FA administration user has been set (during FA provisioning) to a user different than FAAdmin, then PRT will not change that user's password.

The use of this tool is explained in the following sections:

3.8.2.1 Prerequisites

Before running PRT, make sure that perform a full system backup, and have exclusive access to the whole environment.

Note the following points about PRT execution:

  • The tool is not re-entrant; the system may reach an unstable state if the execution fails; re-running the tool will not fix a possibly unstable state.

  • The tool should be run by just a single user at a given time; it is not designed to be run concurrently.

  • The tool uses the default font type from the following location:

    /usr/share/X11/fonts/TTF
    

    The above location is required to exist. If such a location is not present in the system, then locate the path where the true type fonts are installed and create a symbolic link to the directory /usr/share/X11/fonts/TTF.

    The location of the true type fonts directory varies with systems but, typically, it is found in the following directories:

    • Linux x86-64: /usr/X11R6/lib/X11/fonts/TTF

    • Oracle Solaris: /usr/X11R6/lib/X11/fonts/TrueType

Before using PRT in the Oracle Fusion Applications environment, ensure that:

  • Java is installed on the system and that the JAVA_HOME environment variable is set.

  • ANT is installed on the system and that the ANT_HOME environment variable is set.

  • The password for the orcladmin user (the administrative user for Oracle Identity Management) is known.

Typically, a system outage is scheduled while PRT is running.

3.8.2.2 Invoke PRT in Interactive Mode

To invoke PRT in interactive mode to change passwords of the following users: FAAdmin, OAMAdmin, IDROUser, IDRWUser, or PolicyRWUser; or to regenerate random passwords for all application id users, proceed as follows:

  1. Ensure the Administration Servers for all domains are up.
  2. Navigate to the location of the password-reset-tool utility:

    (UNIX) FA_ORACLE_HOME/lcm/idmpasswordreset/bin, where FA_ORACLE_HOME is the Oracle Fusion Applications Oracle home located at (UNIX) APPLICATIONS_BASE/fusionapps/applications.

  3. If needed, invoke the help option to display the tool's usage:
    (UNIX)./password-reset-tool.sh help
    
  4. Invoke the tool with the reset option, as illustrated below:
    (UNIX)./password-reset-tool.sh reset
    
  5. When prompted, enter the password for the orcladmin user.
  6. When prompted, select one or more of following options, as appropriate:
    • Reset Identity user passwords: enter Y for the users whose password will be changed and N for all other users.

      If the FAAdmin user is not being used as the Oracle Fusion Middleware administrative user, then enter N for Oracle Fusion Middleware administrative user.

      Enter the new passwords for the selected users, and make a note of the new passwords submitted to the tool (those passwords cannot be retrieved in plain text).

    • Reset AppId passwords: enter Y to reset all application id passwords.

  7. Let PRT run to completion without interruption.
  8. After the tool execution has completed successfully, restart all the servers and processes in the environment. The startup procedure should start all the Oracle WebLogic Administration and Managed Servers, and any required processes.

3.8.3 Use PCU to Change DB Schema Passwords

The Password Change Utility (PCU) is the tool that must be used to reset database schema passwords in a provisioned Fusion Application environment.

Using this tool, it is possible to update:

  • Database schema passwords

  • Datasource passwords using the schema users listed under schemas section of the input configuration (INI) file

  • Credential store keys

  • The ESS wallet and the ESS registry password

  • The ESSBase password

  • The BI repository password (and activate the new repository)

  • The ODI password

  • The IIR password.

  • The search schema FUSION_DISCUSSIONS_CRAWLER password for Announcement and Jive Forums User defined sources using searchadmin API

  • In release 12 , for IDM decoupled environments, PCU updates the schema password of FUSION_OPSS in bootstrap wallets in the following location <APPLTOP>/instance/domains/<domainhost>/<domainname>/config/fmwconfig/bootstrap/cwallet.sso

In addition, this tool also allows to:

  • Seed new CSF keys for new schemas and new system user CSF keys

  • Validate passwords stored in the LDAP store

  • Use a complexity check for the submitted passwords.

Details about PCU features and usage are found in the following sections:

3.8.3.1 Use PCU

By default, there are 90-100 database schemas (with user identities and passwords) delivered with a Fusion Applications environment. These should be updated periodically for security purposes, using PCU. The default PCU process will update all schemas (full mode); use subset mode to change the password for only a subset of schemas.

To use PCU, proceed as follows:

  1. Shut down all the admin servers and managed servers.
  2. Navigate to the directory $APPTOP/fusionapps/applications/lcm/util/bin.
  3. Run templateGen, as explained in section Run templateGen. This step creates template.ini files, including either standard_template.ini or subset_template.ini, which are used in the next step, iniGen.
  4. Run iniGen, as explained in section Run iniGen. In this step, the standard_template.ini or subset_template.ini file is copied, edited to include passwords (in non-interactive mode) and used by the system. Alternatively, in interactive mode, the .ini file is used by the system to prompt the administrator to enter and verify passwords individually.
  5. Shut down all Fusion Applications in the environment and make sure that none of the DB schemas are locked.

    For details about starting up or shutting down servers in this and following steps, see Start and Stop an Oracle Fusion Applications Environment.

  6. Run PCU with OFFLINE target, as illustrated in the following line:
    UNIX) echo <master_pwd> | ./schemaPasswordChangeTool.sh -appbase <applications_base> -inputfile <enc_inp_file> -target OFFLINE
  7. Start up all Fusion Application in the environment.
  • PCU can be used to update passwords separately in a DB, in WLS data sources, and in IDM data sources by using different targets; in the STANDARD mode, all these targets are updated.

  • The environment variable JAVA_HOME must be set to a JDK7 folder; the default folder is $APPBASE/fusionapps/jdk.

3.8.3.2 Validate Password Complexity

The password complexity validation enables the passwords to be set according to complexity policies that define the characteristics a password must have. One policy is the following, for example: the password must contain a combination of at least two numeric characters, two alphabetic characters, and two special characters.

Each schema has its own password complexity validation function; to define a validation function that implements a particular schema policy, the password complexity functions and helper function must be installed in the Fusion Applications environment. If such a function is not defined for a given schema, then PCU uses the standard Java function to validate passwords for that schema.

To find out if a password complexity validation function is defined for a given schema, run the following SQL query:

select p.limit
from dba_users u, dba_profiles p
where u.profile=p.profile
and u.username = <valid_schema_name>
and p.resource_name= 'PASSWORD_VERIFY_FUNCTION';

If the above query returns a NULL limit, then no validation is defined for the schema. Otherwise, if it returns a DEFAULT limit, then run the following SQL query to get the name of the validation function from the DEFAULT profile:

select p.limit
from dba_profiles p
where p.profile = 'DEFAULT'
and p.resource_name= 'PASSWORD_VERIFY_FUNCTION';

The returned non-null p.limit value specifies the name of the password complexity validation function, such as adm_dba_verify_function, for example.

To use a password complexity validation function, the helper function adm_dba_validate_pw must be installed. This function takes the following arguments: the name of the password complexity validation function; the schema name; the new password to validate; and the existing schema password. adm_dba_validate_pw invokes the password complexity validation function and returns TRUE, if the new schema password complies with the password complexity rules; or FALSE, if it does not.

3.8.3.3 Run templateGen

templateGen generates template files used by PCU, and needs to be run just once. templateGen is run in either full or subset mode. In full mode, it generates a list of six templates, one of which the administrator must copy and use in subsequent steps. In subset mode, it generates only one template.

3.8.3.3.1 Run templateGen in Full Mode to Change All Schema Passwords

Use full mode (the default) when all 90-100 database schemas delivered with Fusion Applications need to be changed. Note that full mode would also change any custom schemas that may have been added to the own Fusion Applications environment.

In full mode, templateGen has the following syntax. Note that the optional argument is shown in between square brackets. Also, if outputdir is not specified, the generated files are located in $APPLICATION_CONFIG/lcm/admin/pcu.

tempateGen Full Mode Syntax:

(UNIX)./templateGen.sh -appbase <APPTOP> [-outputdir <location of generated files>]
(WINDOWS) cd <APPTOP>\fusionapps\applications\lcm\util\bin          
templateGen.cmd -appbase <APPTOP> [-outputdir <location of generated files>]

The tool generates the following template files:

  • standard_template.ini: This is the template used in the subsequent iniGen step.

  • csf_template.ini

  • validation_template.ini

  • system_user_template.ini

  • standard_template.properties

  • csf_template.properties

MANDATORY: In local domain configurations, the BIDomain section of templates is not auto-populated and must be manually filled in.

After generating standard_template.ini, proceed to Run iniGen.

3.8.3.3.2 Run templateGen in Subset Mode to Change Only Specified Schema Passwords

Subset mode is used when the passwords for only certain schemas will be changed. Sample use cases include:

  • Running PCU on all schemas except certain custom schemas created. In this case, exclude certain schema names.

  • The company policy calls for updating database passwords once annually, but the DBA wants to update the SYS password every two months. In this case, override a single (SYS) schema.

    IMPORTANT:

    Exclude means to change all passwords except the designed exclusions.

    Override means to change only the listed schema passwords.

The syntax for excludelist or overridelist arguments supports specifying the necessary schemas in one of two ways: If the number of schemas is small, it is possible to itemize the schema names in a comma-separated list. If the number is unwieldy, it may be more practical to create a text file that lists the schemas together, and then add the text file in place of the comma-separated list of schemas. List each schema on a separate line in the text file.

Here are examples of each method:

  • Exclude a comma-separated list: ./templateGen.sh -appbase /u01/APPLTOP -loglevel finest -excludelist FUSION_BI,FUSION_DQ,FUSION

  • Exclude a list of schemas in a text file: ./templateGen.sh -appbase /u01/APPLTOP -loglevel finest -excludelist /u01/APPLTOP/instance/lcm/admin/pcu/exclude_schemas.txt

  • Specify one schema only: ./templateGen.sh -appbase /u01/APPLTOP -loglevel finest -overridelist FUSION_RO

  • Specify a list of schemas in a text file: ./templateGen.sh -appbase /u01/APPLTOP -loglevel finest -overridelist /u01/APPLTOP/instance/lcm/admin/pcu/override_schemas.txt

Running one of these four arguments results in the file subset_template.ini being generated in /u01/APPLTOP/instance/lcm/admin/pcu

After generating subset_template.ini, proceed to Run iniGen.

3.8.3.4 Run iniGen

PCU requires an encrypted INI file that specifies the new database schema passwords and other important information about the Fusion Applications installation. This file is generated by iniGen using template files produced by templateGen.

The default location for the generated file is the directory $APPTOP/instance/lcm/admin/pcu, and the default name of the generated file has the format input<time-in-millis>.ini, such as input1335820380736.ini. However, it is possible to specify other location and name using the (optional) tool argument -outputfile.

iniGen can execute in interactive or non-interactive mode. During an interactive execution, it is required to provide a password for the encryption program which uses the PBE algorithm to encrypt passwords.

During a non-interactive execution, start by editing a copy of the template file, as follows. In the entry master_password=ignore_me, replace ignore_me with a master password which will be used for the encryption; in all other properties that contain text token (#text#) or password token (#password#), replace those tokens with the appropriate values. Once the editing is finished, create an encrypted version of the file using some standard encryption tool. The recommended encryption tool is the provided lcmcrypt, but its use is not required. For details about lcmcrypt, see section Encrypt and Decrypt with lcmcrypt.

Note the following important points:

  • This document explains how to perform encryption and decryption using lcmcrypt only.

  • In a non-interactive execution, ensure that the input file is synchronized with the template file.

The following lines illustrate how to run iniGen in two modes of execution.

In interactive mode:

 ./iniGen.sh -appbase <APPTOP> -outputfile <ini file location>
 ./iniGen.sh -appbase <APPTOP> -template <template file location> -outputfile <ini file location>

In non-interactive mode:

step 1:
echo <password> | ./lcmcrypt.sh -encrypt -inputfile <file that needs encryption> -nonInteractive
step 2:
echo <password> | ./lcmcrypt.sh -decrypt -inputfile <file that needs decryption> -nonInteractive | ./iniGen.sh -appbase <APPTOP> -nonInteractive   
 

3.8.3.5 Run PCU Offline

Running PCU offline allows changing passwords without bringing down the IDM administration server.

To invoke PCU offline, proceed as follows:

  1. Shut down all administration and managed servers except for the IDM administration server; for details, see Start and Stop an Oracle Fusion Applications Environment.
  2. Navigate to the directory $APPTOP/fusionapps/applications/lcm/util/bin.
  3. (Optional) Run PCU with VALIDATE_SCHEMAS target, as illustrated in the following line, to ensure that the existing system is in good shape:
    (UNIX)./schemaPasswordChangeTool.sh -appbase /APPTOP/ -inputfile std_enc.ini -target VALIDATE_SCHEMAS
    

    Alternatively, it is possible to run the appropriate SQL queries against FA and IDM to perform the same health-check operation.

  4. Run templateGen, as explained in section Run templateGen.
  5. Run iniGen, as explained in section Run iniGen.
  6. Invoke PCU offline, as illustrated in the following line:
    (UNIX) echo <master_pwd> | ./schemaPasswordChangeTool.sh -appbase <applications_base> -inputfile <enc_inp_file> -target OFFLINE
    
  7. Start all the managed and administration servers in all FA and IDM domains. For details, see Start and Stop an Oracle Fusion Applications Environment.
  8. (Optional) Run PCU with VALIDATE_SCHEMAS target, as illustrated in the following line:
    (UNIX)./schemaPasswordChangeTool.sh -appbase /APPTOP/ -inputfile std_enc.ini -target VALIDATE_SCHEMAS
    

    Alternatively, the appropriate SQL queries could be run against FA and IDM to perform the same health-check operation.

3.8.3.6 Additional PCU Features

This section describes additional optional uses of PCU in the following section:

3.8.3.6.1 Run PCU from a Directory other than APPTOP

PCU can be run from a directory (other than the APPTOP directory) by using the -codebase optional argument. If unspecified, the directory defaults to APPTOP; otherwise, it loads the PCU binaries and configurations from the specified directory.

MANDATORY: The only modes for which this feature is supported are CSF and CSF_CUSTOM. In particular, PCU in STANDARD mode must be run from the APPTOP directory.

The following procedure describes how to run PCU from a directory other than APPTOP.

  1. Set the environment, as illustrated in the following lines:
    setenv CODE_BASE <codebase location>
    setenv ZIP_LOCATION <locn where pcubundle.zip is located>
    setenv JAVA_HOME "/scratch/aime/work/APPTOP/fusionapps/jdk6"
    mkdir -p $CODE_BASE/fusionapps/applications/lcm
    cd $CODE_BASE/fusionapps/applications
    cp $ZIP_LOCATION/pcubundle.zip 
    $CODE_BASE/fusionapps/applications
    unzip pcubundle.zip
    cd lcm/util/bin/
    
  2. Run templateGen as illustrated in the following line:
    ./templateGen.sh -appbase $APP_BASE -codebase $CODE_BASE
    
  3. Run iniGen in one of the modes illustrated in the following lines:

    Interactively:

    ./iniGen.sh -appbase $APP_BASE -codebase $CODE_BASE
    

    Non-interactively:

    cat /APPTOP/instance/lcm/admin/pcu/standard_plain.ini | ./iniGen.sh 
      -appbase $APP_BASE -nonInteractive
      -outputfile /APPTOP/instance/lcm/admin/pcu/standard_encrypted.ini 
      -codebase $CODE_BASE
    
  4. Invoke schemaPasswordChange as illustrated in the following lines:
    echo <password> | ./schemaPasswordChangeTool.sh -appbase $APP_BASE -inputfile /APPTOP/instance/lcm/admin/pcu/csf_encrypted.ini -codebase $CODE_BASE
    
    echo <password> | ./schemaPasswordChangeTool.sh -appbase $APP_BASE -inputfile /APPTOP/instance/lcm/admin/pcu/system_user_encrypted.ini -codebase $CODE_BASE
    

3.8.3.7 Encrypt and Decrypt with lcmcrypt

Oracle provides lcmcrypt, a tool to perform encryption and decryption on all platforms. When encrypting, lcmcrypt reads the specified file and encrypts the file contents using the password supplied; then it generates an encrypted file (.enc extension) in the same directory as that of the input file and deletes the text file (provided as input). When decrypting, lcmcrypt reads the supplied encrypted file and decrypts the file contents using the password supplied. The decrypted text is output to STDOUT and a text file is not generated.

The following lines illustrate the use of lcmcrypt to encrypt a file:

echo pa55w0Rd | ./lcmcrypt.sh -encrypt -inputfile $APPTOP/instance/lcm/admin/pcu/standard_slcac574.ini --nonInteractive

The following lines illustrate the use of lcmcrypt to decrypt a file:

echo pa55w0Rd | ./lcmcrypt.sh -decrypt -inputfile $APPTOP/instance/lcm/admin/pcu/standard_slcac574.ini.enc --nonInteractive

echo pa55w0Rd | lcmcrypt.cmd -decrypt -inputfile %APPTOP%\instance\lcm\admin\pcu\standard_slcah286.ini.enc -nonInteractive

3.8.4 Use CCU to Change Common User Passwords

Oracle Fusion Applications Release 12 introduces robust support for Pluggable Databases by separating management of local schema passwords from management of common schema passwords.

Local schema passwords are managed by the schema password change tool (PCU), which is the same tool that manages all schema passwords in Release 11 and lower. In Release 12, PCU only changes the passwords for local schemas. It continues to run on the FA middle tier and continues to store local schema passwords in Credential Store Framework (CSF) on the FA middle tier.

Common schema passwords are managed by a new Release 12 utility called Common User Password Change utility (CCU). CCU runs on one of the DB hosts and stores common user passwords in a wallet file in the DB oracle home called the Database Credential Store wallet file (the DBCS wallet file). After running CCU on one DB host, the DBCS wallet file must be copied to the DB oracle homes on the other DB hosts so that all DB hosts have the same contents in their DBCS wallet files.

During the upgrade to Release 12 common user credentials are copied from CSF into the DBCS wallet file.

Any program that needs a common user credential can either run on the DB host or require as input a local wallet file containing the required common user credentials.

This new Release 12 architecture applies for all configurations:

  • Both SaaS and non-SaaS

  • Both 11g and 12c database versions

  • For the 12c database, it applies to both non-CDB and CDB/PDB databases.

3.8.4.1 Categories of DB Users

Starting in Oracle Fusion Applications Release 12, DB users are divided into the following two groups for both non-CDB and CDB/PDB:

  • Common users

  • Local users

Common Users

The common users are all the default schemas created as part of the database install.

FA also creates some additional common users such as C##DVOWNER and C##DVACCTMGR which are Data Vault related common users in CDB/PDB that do not exist in non-CDB.

Some important common users include: SYS, SYSTEM, C##DVOWNER, and C##DVACCTMGR.

Local Users

The local users are all the Fusion Apps and middleware schemas created by Provisioning.

Some important local users include: FUSION, FUSION_RUNTIME, FUSION_RO, and the four LCM admin schemas (LCM_*_ADMIN).

Table 3-15 Key Schemas

Schema User Type Store Location

SYS

Common

DBCS wallet

SYSTEM

Common

DBCS wallet

Other Common Schemas

Common

DBCS wallet

FUSION

Local

CSF

FUSION_RUNTIME

Local

CSF

FUSION_RO

Local

CSF

Other Local Schemas

Local

CSF

3.8.4.2 Prerequisites and General Steps for Running CCU

CCU is a Java program and needs a fairly recent version of Java in order to run successfully. To make sure CCU has a reasonable version of JAVA to work with, follow these instructions:
  1. Download and install the latest JAVA version from Oracle on all DB host

  2. Set the JAVA_HOME environment variable pointing to it, or specify its location using the javahome argument to cpcu.sh. as follows:

echo welcome123! | ./cpcu.sh -pcubundle /scratch/aime/manskhan/pcubundle.zip -dbcswalletdir /scratch/aime/wallet -jdbcconnectstring jdbc:oracle:thin:@cdrmdb.us.oracle.com:1619/ems1198 -javahome /net/slc07rsb/scratch/aime/work/APPTOP/fusionapps/jdk6/ -oraclehome /slot/ems10923/oracle/db/tech_st/11.2.0/ -skipsys

General Instructions for Running CCU

  1. Copy Common User Password Change Utility manually to a temporary staging directory on one of the DB host and run it to change passwords of common users.
  2. After running CCU, the updated DBCS wallet needs to be manually copied from the RAC node where CCU was executed, to the other RAC node(s).
  3. Run the CCU command with the skipsys option. If you run it without the skipsys, it will cause the SYS password in the CSF to be out of sync. Note that the above command will not change the SYS password to avoid causing an inconsistency with the CSF.

Common users are not referenced by any pod-level configuration files and are not used during normal applications runtime or standard LCM activities.  Therefore, common user passwords can be changed while the Fusion Apps environments are running in production.

3.8.4.3 Run CCU

CCU resides in the pcubundle.zip file. To run CCU, perform the following steps:
  1. Download the patch 24948508 from My Oracle Support and explode the patch zip in a stage directory on the DB host. After the unzip, the pcubundle.zip is located at the following location inside the stage directory:
    24948508/files/sysman/metadata/swlib/pcu/11.12.0.0.0/upgradeemdp/components/pcubundle.zip
    

    To run CCU manually, the EM patch does not need to be applied. To CCU as an EM job, the patch needs to be applied.

  2. Copy pcubundle.zip to the DB host.
  3. Create a staging directory on the DB host.
  4. Unzip pcubundle.zip into the staging directory.
  5. Go to the lcm/util/bin subdirectory in the staging directory.
  6. Execute cpcu.sh from the lcm/util/bin subdirectory in the staging directory.
    The following example shows the unzip and run processes:

    cd $INSTALL_DIR

    rm -rf lcm

    cp $CCU_BUNDLE_ZIP.

    unzip pcubundle.zip

    cd lcm/util/bin/

    echo welcome123! | ./cpcu.sh -pcubundle $CCU_BUNDLE_ZIP -dbcswalletdir /scratch/aime/wallet -jdbcconnectstring jdbc:oracle:thin:@cdrmdb.us.example.com:1619/ems1198 -javahome /net/slc07rsb/scratch/aime/work/APPTOP/fusionapps/jdk6/ -oraclehome /slot/ems10923/oracle/db/tech_st/11.2.0/ -skipsys

    Where

    • INSTALL_DIR: Installation directory.

    • CCU_BUNDLE_ZIP: Path to the pcubundle.zip.

    After following the instructions above, the CCU wrapper script (cpcu.sh) performs the following operations:
    • Installs CCU in home directory (~) in code base setup.

    • Creates cdb.properties in $CODE_BASE config.

    • Accesses DBCS wallet to read driver schema password.

    • Sets up (cascade delete and create) the common user driver schema user.

    • Generates cdb template.

    • Runs iniGen and iniadapter to generate encrypted INI file with random passwords.

    • Changes common user passwords in the database.

      • Runs in the ROOT container for CDBs.

    • Updates DBCS wallet with latest passwords.

    The CCU code is a subset of the PCU code, therefore both have a similar user interface. The big differences are that CCU runs on the DB host and requires the -cdb argument.

    After cpcu.sh runs successfully, the password file on the current host needs to be regenerated. Then the updated DBCS wallet and the newly generated password file must be manually copied from the RAC node where cpcu.sh was ran, to the other RAC node(s) by following these instructions:

  7. Find the DBCS wallet file on the DB host where cpcu.sh was ran.
    The wallet file is an auto-open wallet always named cwallet.sso, and found at $ORACLE_HOME/dbs/dbcs/<db_unique_name>/wallet/cwallet.sso.

    Where <db_unique_name> is actually a service name available as a parameter on the database which may also be available in the environment variable $ORACLE_UNQNAME.

  8. Copy it to the corresponding directory in the Oracle home for the other DB host(s).
    This will be almost the same path name, as above, except that the Oracle home and <db_unique_name> are probably different on the other DB host(s).
  9. Generate the password file using the following command:
    ${ORACLE_HOME}/bin/orapwd file=${ORACLE_HOME}/dbs/orapw${SID} password=${SYS_PWD} entries=5
    
    You can look up the sys password by using the following command:
    ${ORACLE_HOME}/bin/mkstore -wrl $ORACLE_HOME/dbs/dbcs/<db_unique_name>/wallet/ -viewEntry SYS
    
  10. Copy or replace the orapw file in all other RAC instances to the same directory to ensure the binary equivalence of password files. The orapw file (password file) in the current DB host is located at ${ORACLE_HOME}/dbs/orapw${SID}.

3.8.4.4 Backup and Restore Features

CCU will read the DBCS wallet and create an encrypted INI file with the passwords from the DBCS wallet if the passwords are present for schemas; or random passwords will be considered if they are not present. This way full list of common users are handled. This approach is analogous to the P2T backup on the PDB. Restore then restores the passwords from the encrypted file.

3.8.4.4.1 Run Backup on the DB Host
Complete the following steps to run backup on the DB host:
  1. Copy the pcubundle.zip to the DB host.
  2. Derive the JDBC connect string.
  3. Set up CCU in codebase mode.
  4. Set up the common user driver schema on the DB.
  5. Run the backup steps.

    Example of backup:

    # export necessary properties

    export STAGE_DIR=~

    export APP_BASE=$STAGE_DIR/cdbpcu

    export MASTER_PASSWORD=password # This is an illustration, you need to pass password in a secure way

    export ZIP_LOC=$STAGE_DIR

    export CODE_BASE=$APP_BASE/instance/tmp/pcu

    export CDB_JDBC_CONNECT_STRING="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.242.158.67)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.242.158.68)(PORT=1521))(LOAD_BALANCE=YES)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=fdat)))"

    export INPUT_WALLET=~/manskhan/wallet/cwallet.sso

    export ENCRYPTED_FILE=$CODE_BASE/fusionapps/applications/lcm/util/config/cdb_backup_encrypted.ini

     

    # set up pcu bundle in codebase mode on the database host + setup common driver schema

    cd $STAGE_DIR

    rm -rf lcm

    rm -rf $APP_BASE

    cp $ZIP_LOC/pcubundle.zip .

    unzip pcubundle.zip

    cd lcm/util/bin/

    # For non-cdb, -inputwallet should contain DVOWNER and DVACCTMGR creds. For CDB, not required, an empty wallet should be passed nonetheless

    echo $MASTER_PASSWORD | ./cpcu.sh -setup -pcubundle $ZIP_LOC/pcubundle.zip -jdbcconnectstring $CDB_JDBC_CONNECT_STRING -inputwallet $INPUT_WALLET -oh $ORACLE_HOME

    cd $CODE_BASE/fusionapps/applications/lcm/util/bin/

    pwd 

     

    ### BACKUP

    cd $CODE_BASE/fusionapps/applications/lcm/util/bin/

    ./templateGen.sh -cdb -appbase $APP_BASE -loglevel finest -codebase $CODE_BASE

    export ENCRYPTED_FILE=$CODE_BASE/fusionapps/applications/lcm/util/config/cdb_backup_encrypted.ini

    echo $MASTER_PASSWORD | ./iniGen.sh -cdb -appbase $APP_BASE -codebase $CODE_BASE -nonInteractive -templatefile $CODE_BASE/fusionapps/applications/lcm/util/config/cdb_template.ini -outputfile $ENCRYPTED_FILE -backup

    P2T and Cloning processes require this backup and restore feature as during these processes several updates and changes can be done, and the restore feature enables going back to the previous state.

    The steps of backup-restore, mirror the steps of backup-restore on the PDB except that the -CDB argument is passed. Note that Steps 1, 2, 3, and 4 are common to both backup and restore.

3.8.4.4.2 Run Restore on the DB Host
Complete the following steps to run the restore feature on the DB host:
  1. Copy pcubundle.zip to the DB host.
  2. Derive the JDBC connect string.
  3. Set up CCU in codebase mode.
  4. Set up the common user driver schema on the DB.
  5. Run the restore steps including the DBCS Wallet copy-over to the other DB host.
On-Premise environments are non-CDB, therefore, JDBC connect string can be the same value as the DB_CONNECT_STRING from the $APPTOP/instance/fapatch/FUSION_env.properties.

To restore the common user passwords to their backed-up values:

  1. Run CCU.

  2. Specify the INI file created by CCU backup as the CCU input file.

Restore example:

# export necessary properties

export STAGE_DIR=~

export APP_BASE=$STAGE_DIR/cdbpcu

export MASTER_PASSWORD=password # This is an illustration, you need to pass password in a secure way

export ZIP_LOC=$STAGE_DIR

export CODE_BASE=$APP_BASE/instance/tmp/pcu

export CDB_JDBC_CONNECT_STRING="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.242.158.67)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=10.242.158.68)(PORT=1521))(LOAD_BALANCE=YES)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=fdat)))"

export INPUT_WALLET=~/manskhan/wallet/cwallet.sso

export ENCRYPTED_FILE=$CODE_BASE/fusionapps/applications/lcm/util/config/cdb_backup_encrypted.ini

 

# setup pcu bundle in codebase mode on the database host + setup common driver schema

cd $STAGE_DIR

rm -rf lcm

rm -rf $APP_BASE

cp $ZIP_LOC/pcubundle.zip .

unzip pcubundle.zip

cd lcm/util/bin/

# For non-cdb, -inputwallet should contain DVOWNER and DVACCTMGR creds. For CDB, not required, an empty wallet should be passed nonetheless

echo $MASTER_PASSWORD | ./cpcu.sh -setup -pcubundle $ZIP_LOC/pcubundle.zip -jdbcconnectstring $CDB_JDBC_CONNECT_STRING -inputwallet $INPUT_WALLET -oh $ORACLE_HOME

cd $CODE_BASE/fusionapps/applications/lcm/util/bin/

pwd 

 

### RESTORE

cd $CODE_BASE/fusionapps/applications/lcm/util/bin/

echo $MASTER_PASSWORD | ./schemaPasswordChangeTool.sh -cdb -appbase $APP_BASE/ -codebase $CODE_BASE -inputfile $ENCRYPTED_FILE -loglevel finest

### COPY DBCS WALLET from DB Host #1 to DB Host #2

# This step will be executed after every P2T restore so that both the DBCS wallets are in sync across RAC nodes

P2T and Cloning processes require this backup and restore feature as during these processes several updates and changes can be done, and the restore feature enables going back to the previous state.

The steps of backup-restore, mirror the steps of backup-restore on the PDB except that the -CDB argument is passed. Note that steps 1, 2, 3, and 4 are common to both backup and restore.

3.8.4.4.3 Backup Copies of the DBCS Wallet File

The Common User Password Change Utility always creates a backup copy of the DBCS wallet file prior to making any changes to it so that it will be possible to recover in case the wallet gets corrupted.

CCU creates backup copies of the DBCS wallet file in the directory:

$ORACLE_HOME/dbs/dbcs/<db_unique_name>/backup/<timestamp>/<wallet_file>

The name of the <timestamp> subdirectory that contains a backup copy of the DBCS wallet file is based on the time CCU is run.

Here are some sample <timestamp> subdirectory names:

A backup taken at Apr 20 10:42 will be stored in a folder 2016_04_20_10_42_53.

[oracle@slc03php ~]$ ls -lart /u01/app/oracle/product/11.2.0/dbhome_1/dbs/dbcs/ORCL800/backups/

total 188

drwxr-xr-x 2 oracle oinstall 4096 Apr 20 10:34 2016_04_20_10_34_37

drwxr-xr-x 4 oracle oinstall 4096 Apr 20 10:34 ..

drwxr-xr-x 2 oracle oinstall 4096 Apr 20 10:42 2016_04_20_10_42_53

drwxr-xr-x 2 oracle oinstall 4096 Apr 20 10:48 2016_04_20_10_48_47

drwxr-xr-x 2 oracle oinstall 4096 Apr 20 10:52 2016_04_20_10_52_54

drwxr-xr-x 2 oracle oinstall 4096 Apr 20 11:43 2016_04_20_11_43_18

drwxr-xr-x 2 oracle oinstall 4096 Apr 20 11:44 2016_04_20_11_44_03

drwxr-xr-x  2 oracle oinstall 4096 Apr 20 11:44 2016_04_20_11_44_38

3.8.4.5 Run utilities

This section describes a way of setting up pcubundle.zip on the db host like on the FA host.
  1. Download the pcubundle.zip from $REPO//installers/pre_install/pcubundle.zip
  2. The codebase setup for PCU will install this wrapper script in the following way:

    # please change accordingly

    setenv ZIP_LOC "$REPO//installers/pre_install/pcubundle.zip"

    setenv APP_BASE "/APPTOP"

    setenv CODE_BASE "$APP_BASE/instance/tmp/pcu"

    setenv APPTOP "/APPTOP"

    setenv JAVA_HOME "/scratch/aime/work/APPTOP/fusionapps/jdk6"

    mkdir -p $CODE_BASE/fusionapps/applications/lcm

    cd $CODE_BASE/fusionapps/applications

    echo "Zip location.. $ZIP_LOC/pcubundle.zip"

    cp $ZIP_LOC/pcubundle.zip $CODE_BASE/fusionapps/applications

    cd $CODE_BASE/fusionapps/applications/lcm

    rm -rf util

    rm -rf credstoreutil

    cd ..

    unzip pcubundle.zip

    cd lcm/util/bin/

    #scripts can be run from this directory

    MANDATORY: The process described in this section must be done before running any of the utilities listed below.

    • DBCS Wallet Retrofit Utility

      Runs on the FA middle tier.

      AS part of the DBCS Wallet Retrofit process, the user extracts the credentials for all common users plus the TDE wallet password (if any) from CSF on the FA middle tier to a temporary wallet file. Then the user runs CCU on one of the DB hosts in a special mode which merges the contents of the temporary wallet into the DBCS wallet, creating the DBCS wallet if it does not already exist. Finally the user then copies the updated DBCS wallet file to the other DB host.

      Sample Command Lines:

      1. On the FA mid-tier, create a wallet by looking up the common user credentials from CSF. The following command will produce a password-protected wallet at the output wallet location.

        cd <codebase>/fusionapps/applications/lcm/util/bin;

        echo <wallet-password> | ./csfLookup.sh -appbase <appbase> -codebase <codebase> -common -schemalist ALL -outputwallet <ouput-wallet-location> -ccumerge -loglevel finest

      2. Move the wallet onto the DB host RAC node 1 to a certain location, call it input wallet location. On the DB host, run the following commands:

        On the DB host, download the Automated Release Updates (ARU) patch for 24948508 and explode the patch zip in a stage directory. After the unzip. The pcubundle zip is located at the following location inside the stage directory:

        24948508/files/sysman/metadata/swlib/pcu/11.12.0.0.0/upgradeemdp/components/pcubundle.zip

        On the DB host, run the following commands:

        touch <codebase>/fusionapps/applications/lcm/util/config/ORACLE_UNQNAME.pcu

        echo "ORACLE_UNQNAME=<oracle unique name>" > <codebase>/fusionapps/applications/lcm/util/config/ORACLE_UNQNAME.pcu

        export ORACLE_UNQNAME=<oracle unique name> It is important to consider that <oracle unique name> in the above command should be replaced with the db unique name of that particular db.

        export PCU_BUNDLE_ZIP="<patch-unzip-location>/24948508/files/sysman/metadata/swlib/pcu/11.12.0.0.0/upgradeemdp/components/pcubundle.zip"

        export CDB_JDBC_CONNECT_STRING="jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=<ip-address>)(PORT=<port>))(ADDRESS=(PROTOCOL=TCP)(HOST=<ip-address>)(PORT=<port>))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<oracle unique name>)))" Please note the in database connect string, replace references fusiondb.oracleoutsourcing.com and fusiondb2.oracleoutsourcing.comwith actual IP addresses as shown above cd <codebase>/fusionapps/applications/lcm/util/bin;

        echo <wallet-password> | ./dbcsUpdate.sh -appbase<appbaselocn> -codebase<codebase> -inputwallet <input wallet location> -jdbcconnectstring <jdbc connect string> -loglevel finest

        The tool deletes the input wallet that is transferred. After the tool is complete, verify the creation of the DBCS wallet with the following commands:

        $ORACLE_HOME/bin/mkstore -wrl $ORACLE_HOME/dbs/dbcs/$ORACLE_UNQNAME/wallet -list

        $ORACLE_HOME/dbs/dbcs/$ORACLE_UNQNAME/wallet -viewEntry SYS

      3. Copy the DBCS wallet in RAC node 1 from $ORACLE_HOME/dbs/dbcs/<oracle unique name>/wallet to RAC node 2 at $ORACLE_HOME/dbs/dbcs/<oracle unique name>/wallet

    • Common User Cache Utility

      Common User Cache Utility runs on the middle tier. It is intended for use during the upgrade. The end result to running this utility is to cache the SYS password in CSF so that the upgrade can just look up the value from CSF.

      On the mid-tier, run the following command:

      echo emUserPassword | ./commonUserCacheWrapper.sh

      -appbase <appbase on midtier>

    • DBCS Wallet Helper Utility

      Runs on the DB host.

      The DBCS Wallet Helper Utility is a shell script wrapper over a Java program. The Java program takes a command from the command line and executes it against the DBCS wallet file. The following commands are supported:

      • # create/update the DBCS wallet entry for schema

      echo <schema-password> | ./walletTool.sh -write

      -oraclehome <oracle home>

      -schema <schema name>

      • # read wallet

        ./walletTool.sh -read

        -schema <schema name>

      • # list all wallet creds

        ./walletTool.sh -read

    • CSF Lookup Utility

      Runs on the FA middle tier.

      The CSF Lookup Utility is actually a general credentials lookup utility. It can be used to look up credentials for local and common users in CSF.

      Sample Command Lines:

      echo <walletpassword> | ./csfLookup.sh -appbase <appbase>

      -codebase <codebase>

      -outputwallet <wallet location where wallet to be created>

       -local

      -schemalist <ALL or comma separated schemas>

      -outputwallet is the location of the wallet file on the local file system that the CSF Lookup utility will create. The output wallet is encrypted with the wallet password passed in to the CSF Lookup utility on standard input. The output wallet contains the requested common or local user credentials in the format <name> <value>, where <name> is the schema name and <value> is the schema password.

    • DBCS Lookup Utility

      Runs on the DB host.

      The DBCS Lookup Utility is a shell script wrapper over a Java program. The Java program reads the requested credentials from the DBCS wallet on the DB host and writes them to a temporary wallet file.

      Sample Command Lines:

      echo <password> | ./dbcslookup.sh -appbase <appbase>

      -codebase <codebase>

      -outputwallet <wallet location where wallet to be created>

      -schemalist <ALL / comma separated schema's>

      -auto

    • CSF Cleanup Utility

      Runs on the FA middle tier.

      The CSF Cleanup Utility is a shell script wrapper over a Java program. The Java program removes all common users and the TDE wallet password (if any) from CSF. In Release 12, the CSF Cleanup Java program does not remove the credentials for the SYS schema from CSF. The CSF Cleanup Utility will be modified in a future release to also remove the credentials for the SYS schema.

      Sample Command for CSF Cleanup Utility:

      csfClean.sh -appbase <appbase>

      -codebase <codebase>

3.8.5 Update Certificates with the Certificate Renewal Utility

The Certificate Renewal Utility (CRU) updates weblogic and OWSM self signed certificates.

The utility details are explained in the following sections:

3.8.5.1 About CRU

CRU updates and replaces old self-signed certificates with new self-signed certificates. WLS certificates will be updated with 10 years validity (configurable) and OWSM certificates are updated with 5 years validity by default. The utility updates the following keystores/certificates:

  • OWSM self signed certificate under KSS (Key Store Service).

  • fusion_trust.jks and host_fusion_identity.jks located in either WL_HOME/server/lib or APPLICATIONS_CONFIG/keystores.

  • Oracle wallet cwallet.sso file present under WL_HOME/server/lib or APPLICATIONS_CONFIG/keystores.

In a multi-host environment, there are as many host_fusion_identity.jks files as there are hosts.

3.8.5.2 Locate CRU

CRU is located at:

(UNIX) APPLICATIONS_BASE/fusionapps/applications/lcm/facertsutil

CRU uses the properties file located at:

(UNIX)
APPLICATIONS_BASE/fusionapps/applications/lcm/facertsutil/config/crutil.properties

CRU logs can be located at:

APPLICATIONS_BASE/instance/lcm/logs/certsutil/

3.8.5.3 Use CRU for fa/weblogic Certificates

Before using CRU for fa/weblogic certificates, proceed as follows:

  1. If SSL is not enabled:

    1. Stop all the Administration Servers, either manually or using the fastartstop utility.

    2. Stop the Node Manager.

  2. If SSL is enabled:

    1. Stop all the Administration Servers.

    2. Stop middle tier components; however, the database and identity management components can continue running.

  3. Navigate to the location of fusion_trust.jks, either:

    (UNIX) APPLICATIONS_CONFIG/keystores
    

    or

    (UNIX) WL_HOME/server/lib
    
  4. Run keytool to check the validity of current certificates in the keystore as illustrated in the following sample invocation:

    keytool -list -keystore fusion_trust.jks 
            -alias fa-internal.example.com_fusion -v 
    

    keytool will request the store password.

  5. Ensure that the properties file is configured with the correct paths required during utility execution.

    Here is an example of a properties file:

    # For all the paths append _path as suffix so that the validation 
    # will be done at the time of loading the properties
     
    # Best practice to use '/' as path separator 
     
    # fusion trust, cwallet_sso and *_fusion identity keystore locations
    # Old path
    #wlks_path=/scratch/aime/work/APPTOP/fusionapps/wlserver_10.3/server/lib
    # New path with flex clone changes
    wlks_path=%appnconfig_path%/keystores
     
    # Instance specific files FUSION_env and FUSION_prov properties files
    # Old path
    #fusion_props_path=/scratch/aime/work/APPTOP/fusionapps/applications/admin
    # New path with flex clone changes
    fusion_props_path=%appnconfig_path%/fapatch
     
    # path to get list of all domains configured on different hosts 
    # for default and owc_discussions keystore files
    domainks_domains_path=%appnconfig_path%/domains
    domainks_nm_path=%appnconfig_path%/nodemanager
     
    # Certificate validity period configured for 10 years by default.
    # This value can be changed as per the renewal requirement
    validity_period=3650
     
    # location of faInst.loc file
    fainst_loc_path=%appbase%/fusionapps/faInst.loc
     
    # Path of intermediate config property file generated by this utility
    # which stores information of all the domains that needs to be updated
    # generated with name "domains.properties"
    config_prop_path=%appnconfig_path%/lcm/admin/certsutil/
     
    # hosts for which nodemanager.domains do not exist
    # delimiter is ':' 
    skip_hosts_for_nm=appohs.oracleoutsourcing.com
     
    # Domains for which domain certs do not exist
    # delimiter is ':' 
    skip_domains_for_domain_certs=OSNDomain
     
    # This is the host from which we consider default_keystore.jks
    # Note: It is just a standard to always pick default_keystore.jks from admin host
    # This is optional and can be left empty if no standard host should be considered for default keystore
    admin_host=
    

    Note the following points:

    • appbase and appconfig_path are variables used to replace the actual paths implicitly.

    • Paths can be hard coded explicitly if they do not match the requirement.

To execute CRU to update fa/weblogic certs, proceed as follows:
  1. Navigate to:
    (UNIX) APPLICATIONS_BASE/fusionapps/applications/lcm/facertsutil/bin
    
  2. Set the JAVA_HOME environment variable to:
    (UNIX) APPLICATIONS_BASE/fusionapps/jdk6
    
  3. Run the certificate renewal utility using one of the following syntax:
    (UNIX)
    ./facertsutil.sh -inputfile path_to_properties_file -appbase APPLICATIONS_BASE
    
    For example:
    ./facertsutil.sh -inputfile ../config/crutil.properties -appbase APPLICATIONS_BASE
    
After using CRU for fa/weblogic certs, proceed as follows:
  1. Navigate to the location of fusion_trust.jks, either:
    (UNIX) APPLICATIONS_CONFIG/keystores
    

    or

    (UNIX) WL_HOME/server/lib
    
  2. Run keytool to check that certificate validity was extended by the period specified in the properties file:

    keytool -list -keystore fusion_trust.jks 
            -alias fa-internal.example.com_fusion -v 
    

    keytool will request the store password.

  3. If SSL is not enabled:

    1. Start the Node Manager.

    2. Start all the Administration Servers either manually or using the fastartstop utility.

  4. If SSL is enabled:

    1. Start all middle tier components.

    2. Start all the Administration Servers.

3.8.5.4 Use CRU for OWSM Certificates

For Rel10 or newer, run the Certifcate Renewal Utility for OWSM certificate renewal (notice the extra paramter -owsm true):

  1. Navigate to: (UNIX) APPLICATIONS_BASE/fusionapps/applications/lcm/facertsutil/bin

  2. Set the JAVA_HOME environment variable to: (UNIX) APPLICATIONS_BASE/fusionapps/jdk6

  3. Run the certificate renewal utility using one of the following syntax: (UNIX) ./facertsutil.sh -inputfile path_to_properties_file -appbase APPLICATIONS_BASE -owsm true

    For example:./facertsutil.sh -inputfile ../config/crutil.properties -appbase APPLICATIONS_BASE -owsm true
    • Use the following WLST commands to verify the validity period of OWSM certificates in the key store service (KSS):

      1. Invoke WLST: APPLICATIONS_BASE/fusionapps/oracle_common/common/bin/wlst.sh

      2. connect("FAAdmin", FAAdminPassword, "t3 ://<fa admin host>:<fa admin port>")

      3. svc=getOpssService(name='KeyStoreService')

      4. svc.getKeyStoreCertificates(appStripe='owsm', name='keystore', password='', alias='orakey', keypassword='')

      5. svc.listExpiringCertificates(days=xxxx,autorenew=false)