Configuring CSIv2 to secure IIOP communication
The following information covers some of the general cases for configuring both inbound and outbound CSIv2 security for IIOP communication.
Inbound calls allow CICS® Liberty to listen as an object request broker (ORB) on a TCP/IP port for IIOP-RMI requests and call the target EJB method.
Outbound calls are where CICS Liberty makes a request to an ORB to start an EJB method. Outbound calls can be made to the same JVM server the call was made for, or any other Java™ virtual machine (JVM) capable of acting as an ORB.
In the following example, the client is the JVM making the outbound request and the server is the JVM receiving the inbound request. Either one, or both of these, can be the CICS Liberty JVM server. For more information, see Configuring Common Secure Interoperability version 2 (CSIv2) in Liberty.
Configuring CSIv2 to use TLS
- Create a keystore that contains the certificate for the
server.
<keyStore id="iiopKeyStore" ... />
- Create an SSL repertoire (the
SSL
element) that references the keystore.<ssl id="iiopSSL" keyStoreRef="iiopKeyStore" />
- Create an IIOP endpoint with an IIOPS
port.
<iiopEndpoint id="defaultIiopEndpoint" host="host.example.com" iiopPort="2809"> <iiopsOptions iiopsPort="9402" sslRef="iiopSSL" /> </iiopEndpoint>
sslRef
references the
defaultSSLConfig
SSL repertoire.- Create a keystore. You can include a key that allows the keystore to trust a root certificate,
which trusts all the certificates that are signed by that
certificate.
<keystore id="iiopTrustStore" ... />
- Create an SSL repertoire (the
SSL
element) that references the keystore.<ssl id="iiopSSL" trustStoreRef="iiopTrustStore" ... />
- Create an ORB with the CSIv2 client
policy.
<orb id="defaultOrb" nameService="corbaname::host.example.com"> <clientPolicy.csiv2> <layers> <transportLayer sslRef="iiopSSL" /> </layers> </clientPolicy.csiv2> </orb>
Configuring CSIv2 to allow propagation of the user ID from the client to the server
Inbound
- Create an ORB with the CSIv2 server
policy.
<orb id="defaultOrb"> <serverPolicy.csiv2> <layers> <attributeLayer identityAssertionEnabled="true" /> </layers> </serverPolicy.csiv2> </orb>
- Optionally, you can specify one or more identities to be trusted by the
server.
<attributeLayer identityAssertionEnabled="true" trustedIdentities="MYUSER" />
- Create an ORB with the CSIv2 client
policy.
<orb id="defaultOrb" nameService="corbaname::host.example.com:2809"> <clientPolicy.csiv2> <layers> <attributeLayer identityAssertionEnabled="true" /> </layers> </clientPolicy.csiv2> </orb>
- Optionally, you can provide a trusted identity to be authorized by the server.
<attributeLayer identityAssertionEnabled="true" trustedIdentity="MYUSER" trustedPassword="MYPASSWD" />
trustedPassword
can be encoded by using the Liberty
securityUtility
tool.Configuring CSIv2 to use TLS Client Authentication
Inbound
- Create a keystore. You can include a key that allows the keystore to trust a root certificate,
which trusts all the certificates that are signed by that
certificate.
<keyStore id="iiopTrustStore" ... />
- Create an SSL repertoire (the
SSL
element) that references the keystore.<ssl id="iiopSSL" trustStoreRef="iiopTrustStore" ... />
- Create an IIOP endpoint with an IIOPS
endpoint.
<iiopEndpoint id="defaultIiopEndpoint" host="host.example.com" port="2809"> <iiopsOptions iiopsPort="9402" sslRef="iiopSSL" /> </iiopEndpoint>
- Create an ORB with the CSIv2 server
policy.
<orb id="defaultOrb"> <serverPolicy.csiv2> <layers> <attributeLayer identityAssertionEnabled="true" ... /> <transportLayer sslRef="iiopSSL" /> </layers> </serverPolicy.csiv2> </orb>
- Create a keystore that contains the clients
certificate.
<keyStore id="iiopKeyStore" ... />
- Create an SSL repertoire (the
SSL
element) that references the keystore.<ssl id="iiopSSL" keyStoreRef="iiopKeyStore" />
- Create an ORB with the CSIv2 client
policy.
<orb id="defaultOrb"> <clientPolicy.csiv2> <layers> <attributeLayer identityAssertionEnabled="true" /> <transportLayer sslRef="iiopSSL" /> </layers> </clientPolicy.csiv2> </orb>