For more advanced capability, such as private key archival,
high-availability features, applet and symmetric key versioning,
customizing certificate profiles, see the section below "Advanced
Smartcard Management with Certificate System".
1. Product binaries
All product binaries for all CS subsystems currently are delivered in a
single package - either a tar.gz or RPM format.You can install the token management software, and complete all the
instructions in this guide without actually having any smartcards on
hand, but you will need smartcards later for testing.
The Certificate System Token Management capability has been tested
with Axalto e-gate Cyberflex 32k tokens. Small quantities of tokens for
testing are available directly from the Axalto website
(http://scmegastore.com)
3. Certificate AuthorityThe CS architecture is modular, in that subsystems can, (and should)
be placed on separate hosts. This allows for stronger separation of
system roles, and more flexibility in terms of firewalling and
controlling access. However, such a separation is a deployment
decision, and is in no way mandated by CS. For a test deployment, for
example, it is acceptable to run all subsystems on a single host.
It is not necessary to run any CS component as root. This is only
required if a subsystem needs to listen on a privileged port (such as
80 or 443). If this is the case, it is recommended to install as root
and run as root (dropping privileges to the 'nobody' user has been seen
to cause some problems).
You will need to submit a certificate request to the CA during the
installation process:
- choose 'send the request to a remote CS now'
- specify the host/port of the CA
- approve the request in the CA agent interface
- go back to the wizard and press next twice
- select 'the certificate is at the CS where your request was
sent' - TKS will pick up the certificate automatically
TPS files are in the
<server-root>/bin/cert/tps
directory.
A setup program to help configure the TPS is provided. Run the TPS
setup program now, with the following commands:
cd <server-root>/bin/cert/tps/setup
perl create.pl
For reference, an example create.pl has been reproduced in appendix A
of this document.
NOTES:
When you are asked to submit the certificate request for the TPS's
System Certificate to the CA, submit it to the CA's SSL EE port, under
the 'Manual Server Certificate Enrollment' profile. Then login to the
agent interface, view the request, and add the requested OID's to the
extended key usage field. (this enables the certificate to be used for
SSL client-auth from the TPS to the CA, TKS, or DRM)
When you are asked to paste in a CA certificate, you can retrieve this
from the CA's EE 'retrieval' tab. Click 'import ca certificate chain',
then 'Display certificates in the CA certificate chain for importing
individually into a server'.
When you are asked to paste in the TPS Agent Certificate, you can
simply re-use the Agent certificate you created for the CA. Find the
Certificate using the CA's EE retrieval tab 'List Certificates'
interface. (if you used the defaults, your certificate will be called
"CN=CS Agent, UID=admin, C=US")
The TPS Agent Interface is a web-based user interface to TPS, which
allows certain
privileged operations to be performed. You will use this your agent
certificate to
authenticate to the TPS agent port with SSL client-auth.
Make a note of the URL's printed at the end of the create.pl output.
STEP 4: Configuring TPS/CA/TKS Trust relationships
Configuring the CA to accept requests from the TPS
You must configure the CA with the TPS's credential, so that the CA
will issue certificates if they are submitted by the TPS. To do this,
follow the following steps:
1. Start the console, and open the CA window
2. Add a special "agent" user:
- click Configuration -> Users and Groups -> Users -> Add
- At "Edit User Information", enter all info (phone number
and email are optional), including full name (e. g. "TPS Trust
Entity"). Select the "Certificate Manager Agents" group.
- Select the TPS user, Click Certificates, Import the TPS
system (SSL) certificate
Configuring the TKS to trust the TPS
1. Open the TKS console window
2. Add a special "agent" user:
- click Configuration -> Users and Groups -> Users -> Add
- At "Edit User Information", enter all info, including full name
("TPS Trust Entity"). Select the 'Token Key Service Manager Agents"
group.
- Select the TPS user, Click Certificates, Import the TPS system
(SSL) certificate
STEP 5: Verification
Now, start the TPS system by running the
<server-root>/tps-xxxx/start program.
Verify that the TPS is running by visiting the TPS Agent page with you
browser. You'll need to authenticate with the Agent Certificate.
Next, you can perform an enrollment using the ESC Application.
Instructions
for this are in the Enterprise Security Client Guide.
Advanced Smartcard Management with Certificate
System
Server-side Generation and Archival of Encryption
Keys
The Global Platform environment prevents the removal of private keys
from the smartcard. In the case of keys used for encryption, it is
often necessary to back up the key material for later recovery. This
necessitates generating of the keys in an external entity, followed by
importing the keys into the smartcard.
In the case of Certificate System, the keys are generated in the DRM
subsystem, where archival also (optionally) takes place. The TPS, TKS
and DRM must all be configured appropriately, as described below:
The TPS setup script will handle step 4 of this script, if the DRM was
configured at the time create.pl was run.
STEP 1: Set up a DRM
Follow the regular DRM setup instructions in the main CS
Administrator's Guide
STEP 2: Configuring the DRM to trust the TPS
In this 7.1 release, the DRM key recovery policy is
set so that 1-of-n recovery agents can recover a key. In this case, the
TPS is set as one of the recovery agents.
1. Open the DRM console window
2. Add a special "agent" user:
- click Configuration -> Users and Groups -> Users -> Add
- At "Edit User Information", enter all info, including full name
("TPS Trust Entity"). Select the 'Data Recovery Manager Agents"
group.
- Select the TPS user, Click Certificates, Import the TPS system
(SSL) certificate
STEP 3: Set up TKS with DRM transport key
After generating the keys on the DRM, the DRM will encrypt the keys
with a Key Transport Key (KTK) before sending to the smartcard. This
key is
generated on TKS and transmitted to the DRM (via the TPS). In order to
accomplish this securely, the KTK is encrypted with the public key in
the DRM's transport certificate.
Install the DRM's transport certificate into the TKS:
Create a file with the DRM Transport Certificate (retrieve this from
the CA)
On the TKS host:
cd <server-root>/alias
../bin/cert/tools/certutil -d .
-P <cert-db-prefix> -A -n
"DRM Transport" -t ",," -a -i <certfilename>
cd
<server-root>/cert-tks/config
edit the CS.cfg file, modifying the following line:
tks.drm_transport_cert_nickname=DRM Transport
Restart TKS:
cd <server-root>/cert-tks
./restart-cert
STEP 4: Configure TPS to do key generation and
archival
1) TPS must be configured to connect to the DRM
cd
<server-root>/tps-xxx/config
edit CS.cfg, setting the following parameters (use Fully Qualified Host
Names where appropriate)
conn.drm.totalConns=1
conn.drm1.hostport=[DRM_HOST]:[DRM_AGENT_PORT]
conn.drm1.clientNickname=Server-Cert
conn.drm1.servlet.GenerateKeyPair=/kra/GenerateKeyPair
conn.drm1.servlet.TokenKeyRecovery=/kra/TokenKeyRecovery
conn.drm1.retryConnect=3
conn.drm1.SSLOn=true
conn.drm1.keepAlive=false
The TPS CS.cfg files has a section defining each type of smartcard
profile you want to maintain. In the default configuration, the profile
'userKey' is defined under the op.enroll.userKey subsection.
In the keyGen subsection of the userKey Profile, is a subsection for
each type of key/certificate pair which is defined for that type of
smartcard. In the default configuration, one of the key/certificate
pairs is labelled 'encryption'. Set the following parameters to enable
server-side key generation, and to archive keys.
op.enroll.userKey.keyGen.encryption.serverKeygen.enable=true
op.enroll.userKey.keyGen.encryption.serverKeygen.drm.conn=drm1
op.enroll.userKey.keyGen.encryption.serverKeygen.archive=true
op.enroll.userKey.keyGen.encryption.serverKeygen.encryptPrivKey=true
Restart the TPS subsystem after
this step
cd <server-root>/tps-*
./stop
./start
Configuring
TPS to use HSM (Hardware Security Modules)
Certificate System allows the TPS sub-system to use hardware security
modules like nCipher,LunaSA for better SSL performance. If you need to
store the TPS sub-system's
server certificate and its keys on hardware please use the
following steps:
Step 1: Connect secmod.db to the HSM.
Use modutil command to perform this. An
example for adding 'nCipher nethsm' to secmod.db would look like this.
Goto the <server-root>/alias/ directory
modutil -dbdir . -nocertdb -add nethsm -libfile
/opt/nfast/toolkits/pkcs11/libcknfast.so
Step 2: Verify that you can list 'any'
certs/keys on the hardware
Use certutil command to perform this.
An example would look like this,
certutil -L -d <server-root>/alias/ -h nethsm -P
<cert-prefix>
Step 3: edit create.pl the TPS installation script.
Edit <server-root>/bin/cert/tps/setup/create.pl.
Edit the line that starts with 'my $hsm="";' to add the HSM slot name.
An example would look like this.
my $hsm = "nethsm";
Save this file and execute this perl script to install the TPS
sub-system.
NOTE: CA Signing certs are always
stored only on 'internal' software tokens and not on hardware when you
import the CA signing cert with this 'create.pl' for configuring TPS.
Automating Recovery of Encryption Keys
Certificate System allows for a semi-automated recovery if a user
loses, destroys, or misplaces their token.
TPS automatically recovers the appropriate encryption keys and
certificates for a permanent or temporarily lost token, depending on
various circumstances leading to the token loss.
In order to prevent misuse of the recovery feature, TPS requires that a
user must have a single active token. In order to track which tokens
are assigned to users, TPS maintains a database of tokens. When a user
enrolls a token, the database is updated to reflect the token state,
and the fact that it is assigned to a user.
1. User gets replacement token
When a user loses a token, the user must first get a replacement token
through some defined process. If a new enrollment is attempted with
this new token, TPS will block the enrollment, since the user already
has an active token.
2. The token status must be updated
In order for the enrollment to succeed, the token's state in the
database must be changed to 'lost'. This action is performed through
the web browser and the TPS agent interface.
The TPS Agent will query the user in order to identify the user to his
satisfaction, then search for the user's id in the TPS Agent interface
'Search Tokens' link.
The TPS Agent will select the 'active' token assigned to the user, and
update the status with the drop-down list with the appropriate status.
Each selection in this list leads to different behavior in the TPS:
"This Token Has Been Physically
Damaged" [Use this if the token is known to be destroyed]
status: updated to 'lost'
reason: destroyed
"This Token Has been Permanently
Lost": [Use this if the token has been stolen]
status: updated to 'lost'
reason: keyCompromised
The certificates on the token are revoked
"This Token Has been Temporarily
Lost": [Use this if the user left their token at home]
status: updated to 'lost'
reason: keyCompromised
The certificates on the token are revoked
The user will then be able to Enroll for a replacement token.
In typical PKI deployments, it is preferred that signing keys be
generated on the smartcard, and not archived. Therefore, if the
smartcard is lost, new signing keys and certificates must be
regenerated on the token, and temporary certificates created.
The policy describing which keys should be regenerated and which keys
should be recovered is defined in the TPS CS.cfg parameters below:
The following parameters are for different recovery
scheme based on different lost reason:
# The following is for a replacement for a token which is physically damaged:
op.enroll.userKey.keyGen.recovery.destroyed.keyType.num=2
op.enroll.userKey.keyGen.recovery.destroyed.keyType.value.0=signing
op.enroll.userKey.keyGen.recovery.destroyed.keyType.value.1=encryption
op.enroll.userKey.keyGen.signing.recovery.destroyed.scheme=GenerateNewKey
op.enroll.userKey.keyGen.encryption.recovery.destroyed.scheme=RecoverLast
# The following is for a replacement for a token which is permanently lost:
op.enroll.userKey.keyGen.recovery.keyCompromise.keyType.num=2
op.enroll.userKey.keyGen.recovery.keyCompromise.keyType.value.0=signing
op.enroll.userKey.keyGen.recovery.keyCompromise.keyType.value.1=encryption
op.enroll.userKey.keyGen.signing.recovery.keyCompromise.scheme=GenerateNewKey
op.enroll.userKey.keyGen.encryption.recovery.keyCompromise.scheme=GenerateNewKey
# The following is for a temporary replacement for a temporarily lost token:
op.enroll.userKeyTemporary.keyGen.recovery.onHold.keyType.num=2
op.enroll.userKeyTemporary.keyGen.recovery.onHold.keyType.value.0=signing
op.enroll.userKeyTemporary.keyGen.recovery.onHold.keyType.value.1=encryption
op.enroll.userKeyTemporary.keyGen.signing.recovery.onHold.scheme=GenerateNewKey
op.enroll.userKeyTemporary.keyGen.encryption.recovery.onHold.scheme=GenerateNewKey
There are two different schemes for recovery:
-
GenerateNewKey is to create
new key and certificate for
recovery.
-
RecoverLast is to recover
the last encryption key and associated
certificate for recovery.
# set revokeCert=true to revoke
certificates if a token's certificates are replaced
op.enroll.userKey.keyGen.signing.revokeCert=true
op.enroll.userKey.keyGen.encryption.revokeCert=true
Dealing with replacements for lost or stolen
smartcards
If the smartcard loss is temporary, the user can be enrolled for a
temporary replacement.
In this CS release, the profile of the temporary
replacement smartcard is defined in the userKeyTemporary profile in the
TPS
CS.cfg. The certificates used in this profile is valid for 7 days by
default.
Original smartcard was
found
If the user locates the original token, he must return to the TPS Agent
to reactivate the original token. The TPS Agent must perform an
operation on the original token. When the status is updated, it will
also automatically update the status of the temporary token.
The Agent will locate the original token (marked as lost), and select:
"This Temporarily Lost Token Has Been
Found":
status: updated to 'active'
reason:
The certificates on the token are taken off hold
The TPS will update the status of the
temporary token:
status:
updated to 'inactive'
reason:
The certificates on the temporary token are revoked.
Original token was not
found
If the user cannot locate the original token, the TPS Agent must update
the status of the original token, then update the status of the
temporary token.
The agent will locate the original token (marked as 'lost') and select:
"This Temporarily Lost Token Cannot Be
Found":
status: lost
reason: keyCompromised
The certificates on the original token are revoked
The TPS will update the status of the temporary token:
status:
updated to 'inactive'
reason:
The certificates on the temporary token are revoked.
The user is now permitted to enroll for a permanent token. He can use
the temporary token to do this.
Setting Up Connection Failover in TPS
The TPS can be configured with alternates for each of the CA, DRM, TKS
subsystems it connects to. After setting up clones of the
appropriate subsystems, edit the TPS CS.cfg file to reflect the clone
hostnames:
For each of the conn.tks1, conn.ca1, conn.drm1 config options, add
space-separated host:port details.
conn.tks1.hostport=tks1.redhat.com:2000
tks2.redhat.com:2000 tks3.redhat.com:2000
conn.ca1.hostport=ca1.redhat.com:2000
ca2.redhat.com:2000 ca2.redhat.com:2000
conn.drm1.hostport=drm1.redhat.com:2000
drm2.redhat.com:2000 drm3.redhat.com:2000
Each host port grouping is separated by a white space.
Setting Up Symmetric Key Changeover in TPS
When global platform compliant smartcards are made, the manufacturer
will burn a set of symmetric keys onto the token. The smartcard
deployer will share a master symmetric key with the manufacturer. The
smartcard TKS is configured to use these symmetric keys. However,
during enrollment, it is desirable to replace these symmetric keys with
a set that is not shared by the manufacturer, to restrict the set of
entities that can manipulate the token.
Note: using Key Changeover can render the smartcards unusable -
if you lose the master key. Use key changeover in controlled
conditions, and be sure of the implications of erasing a TKS instance.
See below to see how it is possible to set up TPS to return the keys
back to the factory state.
Setting up Key Changeover requires that a new symmetric key be
generated on the TKS, and that the TPS be set to change the token's key.
Creating a new master key on the TKS
We recommend that you do the masterKey generation by following these
steps.
Step
1: Generate a Transport Key and store in either the hardware or
software token
cd <tks-server-root>/alias/
../bin/cert/tools/tksTool.sh -T -n <transportKeyName> -d . -h
<token_name> -p <certDBPrefix>
For example,
../bin/cert/tools/tksTool.sh -T -n "test-transport-key" -d . -h
internal -p cert-tks-
Note : When executing the above command, tksTool, prints out the KCV
values for each of the session keys that are generated. Three symmetric
keys are generated here. Please save them as it is required to
re-generate the transport key if you lose it. For more information on
tksTool, please go to the Red Hat Certificate System - Command-Line
Tools Guide
Step 2: Generate the master key. Wrap
the Master Key with the Transport Key and store the output to a local
file on disk.
cd <tks-server-root>/alias/
../bin/cert/tools/tksTool.sh -W -n <masterKeyId> -d . -t
<transport_keyname> -o <wrapped_master_key_outfile> -h
<token_name> -p <certDBPrefix>
For example,
../bin/cert/tools/tksTool.sh -W -n "test-master-key" -d . -t
"test-transport-key" -o "wrapped_test-master-key" -h "internal" -p
cert-tks-
Note: When executing the above command, tksTool, generates a new master
key, wraps it with the transport_key and then extracts it to the
output_file so that we can save this extracted file to serve as backup
in case you lose the master key.
Configure TKS - to associate masterkey with its version
In global platform parlance, master keys have a numeric identifier such
as 01, 02, 03. TKS needs to map these to PKCS#11 object nicknames
(which you specified above by 'masterKeyId').
Add the following to the CS.cfg located in
<tks-server-root>/cert-<tks-id>/config:
tks.mk_mappings.#02#01=<tokenname>:<masterKeyId>
If you used the software database, you would use 'internal' for
<tokenname>.
This sets master key set #02 to map to the given TKS PKCS#11 module
token name, and corresponding masterKeyId object nickname. All numeric
key identifiers in mapping configurations must be suffixed with '#01'.
Note that "#02" represents the master key version.
Note: Smartcards purchased from the Axalto Web Store will come with a
default developer key set where all keys are set to
"404142434445464748494a4b4c4d4e4f".
TKS has this key
built-in, and it is referred to with the master key set #01. TKS will
use key set #01 by default.
After making configuration changes to TKS, restart it.
Configure TPS - for key change over
Edit the TPS CS.cfg file
Modify the following two parameters as follows:
To enable key changeover during enrollment, change these parameters to
contain the following
values:
op.enroll.userKey.update.symmetricKeys.enable=true
op.enroll.userKey.update.symmetricKeys.requiredVersion=2
Similarly, to enable key changeover during 'format', change these
parameters:
op.format.tokenKey.update.symmetricKeys.enable=true
op.format.tokenKey.update.symmetricKeys.requiredVersion=2
requiredVersion is the Global Platform numeric key set identifier which
is required for the specified operation (enroll, format) to
proceed. If the smartcard does not have the key set specified by
the requiredVersion parameter, key changeover will occur, then the
operation processing will continue. In this example, the
requiredVersion=2 parameter maps to the #02 value given in the TKS
setup above.
After changing this
configuration,
restart TPS.
NOTE: The TPS audit log contains information denoting
whether or not the key changeover worked successfully.
While testing this feature, you may want to change an Axalto Web
Store smartcard back to the original static '4041...' key set.
You can do this by changing the 'requiredVersion' parameter back to
'1', and doing a new format. You should do this before removing your
TKS instance, or else you will not be able to manage your smartcard.
Setting Up Applet Upgrade in TPS
TPS communicates with an applet on the smartcard. The smartcards
may be manufactured with both a card manager applet and a vendor
applet, or with only the card manager applet. If the cards only have
the card manager applet, TPS can install the CS applet onto the
smartcard.
Similarly, an old applet can be replaced with a new applet during a
format or enrollment operation. Any keys or certificates created or
managed with the old applet are destroyed.
Configuring applet upgrade
TPS should be configured to update the applet if necessary. To do this,
put the new applet in the applet directory, and set the
'update.applet.enable' parameter to true.
op.enroll.userKey.update.applet.enable=true
op.enroll.userKey.update.applet.emptyToken.enable=false
op.enroll.userKey.update.applet.requiredVersion=1.3.4255CC01
op.enroll.userKey.update.applet.directory=<server-root>/bin/cert/tps/applets
op.enroll.userKey.update.applet.encryption=true
Card-Manager applet only smartcards
If a smartcard only has the card manager, you must specifically
enable
the capability. Edit the following parameter in TPS's CS.cfg
op.enroll.userKey.update.applet.emptyToken.enable=true
NOTE: If the
file name value associated with the
"op.enroll.userKey.update.applet.requiredVersion" parameter contains
ANY alphabetic characters, then ALL of these alphabetic characters MUST
ALWAYS be uppercase letters; this applies to the actual name of the
file, as well as to the value of the
"op.update.userKey.applet.requiredVersion" parameter.
Remember to
restart TPS after
making changes to the CS.cfg file.
Verification
The TPS queries the applet version on the smartcard
before the execution of any operations such as enrollment and format.
If the update feature is enabled, and the applet version from the
client is different from the one that is specified by this
'op.<operation>.<token type>.update.applet.requiredVersion'
parameter, the CS TPS will update the applet automatically.
NOTE: The TPS audit log contains information denoting
whether or not the applet update worked successfully.
Setting Up Token Types for Specified Smartcards
TPS can be configured to use specific token profiles based on the
smartcard ATR and/or a range of serial numbers for the
smartcards. This may be useful if you want to manage two types of
smartcard profile in a single deployment, and you want to determine the
smartcard profile based on physical distribution of those cards, rather
than some software process change.
The TPS configuration allows you to configure a mapping where you
specify the types of tokens, ATRs, and range of serial numbers (CUID)
Each type of operation (op.enroll, op.format) contains a parameter
called
"op.<op>.mapping.order" containing one or more mapping IDs.
NOTE: If the "op.<op>.mapping.order" parameter contains more
than one mapping ID, then each mapping ID is processed in sequential
order until a target is determined, or else an error is returned. If
the "op.<op>.mapping.order" parameter is missing, or not set in
the CS.cfg, then the code will return an error.
Each mapping ID references a series of parameters associated
with the requested operation called "filters".
NOTE: Each filter may contain a specific value for the request to
be tested against. Empty or missing "filters" equate to a "wildcard"
rule which allows the request to contain any value, and are thus
inherently "true".
If the request passes all filters, the
the specified target token profile is used..
See the CS.cfg for more details on the mapping configuration
parameters
An Example
with 2 different Token Types
In this section we will attempt to describe how you could setup TPS to
accept operations ( like , format, enroll , pin reset etc.. ) from two
different sets of tokens that are distinguished based on their
CUIDs. The following example illustrates usage just with the
format operation. The same can be achieved for the enroll and pin reset
operations.
This example assumes the following:
- assume that the 'development team' that has 100 team members has
100 tokens, 1 each, and their token set with CUIDs from
1000-0000-0000-0000 to 1000-0000-0000-0100.
- assume that the 'QA team' that has 100 team members has 100
tokens , 1 each, and their token set with CUIDs from
2000-0000-0000-0000 to 2000-0000-0000-0100.
- assume that the development team uses ldap server 'ldap-dev' and
the qa team uses ldap server 'ldap-qa' for authentication.
Configuring the format operation in TPS for the
above scenario would involve the following changes to the TPS
configuration file ( CS.cfg ):
##########################################################################
# Create 2 mappings as shown below
##########################################################################
op.format.mapping.order=0,1
op.format.mapping.0.filter.tokenType=
op.format.mapping.0.filter.tokenATR=
op.format.mapping.0.filter.tokenCUID.start=1000000000000000
op.format.mapping.0.filter.tokenCUID.end=1000000000000100
op.format.mapping.0.filter.appletMajorVersion=
op.format.mapping.0.filter.appletMinorVersion=
op.format.mapping.0.target.tokenType=devKey
##########################################################################
op.format.mapping.1.filter.tokenType=
op.format.mapping.1.filter.tokenATR=
op.format.mapping.1.filter.tokenCUID.start=2000000000000000
op.format.mapping.1.filter.tokenCUID.end=20000000000001000
op.format.mapping.1.filter.appletMajorVersion=
op.format.mapping.1.filter.appletMinorVersion=
op.format.mapping.1.target.tokenType=qaKey
##########################################################################
# create 2 separate profiles
##########################################################################
# Profile for DevKey
##########################################################################
op.format.devKey.update.applet.emptyToken.enable=true
op.format.devKey.update.applet.requiredVersion=1.3.427BDDB8
op.format.devKey.update.applet.directory=<server-root>/bin/cert/tps/applets
op.format.devKey.update.applet.encryption=true
op.format.devKey.update.symmetricKeys.enable=false
op.format.devKey.update.symmetricKeys.requiredVersion=1
op.format.devKey.revokeCert=true
op.format.devKey.ca.conn=ca1
op.format.devKey.loginRequest.enable=true
op.format.devKey.tks.conn=tks1
op.format.devKey.auth.id=ldap-dev
op.format.devKey.auth.enable=true
##########################################################################
# Profile for QAKey
##########################################################################
op.format.qaKey.update.applet.emptyToken.enable=true
op.format.qaKey.update.applet.requiredVersion=1.3.427BDDB8
op.format.qaKey.update.applet.directory=<server-root>/bin/cert/tps/applets
op.format.qaKey.update.applet.encryption=true
op.format.qaKey.update.symmetricKeys.enable=false
op.format.qaKey.update.symmetricKeys.requiredVersion=1
op.format.qaKey.revokeCert=true
op.format.qaKey.ca.conn=ca1
op.format.qaKey.loginRequest.enable=true
op.format.qaKey.tks.conn=tks1
op.format.qaKey.auth.id=ldap-qa
op.format.qaKey.auth.enable=true
##########################################################################
# LDAP Connection settings for devKey
##########################################################################
auth.instance.0.type=LDAP_Authentication
auth.instance.0.libraryName=<server-root>/bin/cert/tps/lib/libldapauth.so
auth.instance.0.libraryFactory=GetAuthentication
auth.instance.0.authId=ldap-dev
auth.instance.0.hostport=ldap-dev.example.com:1111
auth.instance.0.SSLOn=false
auth.instance.0.retries=1
auth.instance.0.retryConnect=3
auth.instance.0.baseDN=o=dev
auth.instance.0.ui.title.en=LDAP Authentication
auth.instance.0.ui.description.en=This authenticates user against the
DEV LDAP directory.
auth.instance.0.ui.id.UID.name.en=LDAP User ID
auth.instance.0.ui.id.PASSWORD.name.en=LDAP Password
auth.instance.0.ui.id.UID.description.en=DEV LDAP User ID
auth.instance.0.ui.id.PASSWORD.description.en=DEV LDAP Password
##########################################################################
# LDAP Connection settings for qaKey
##########################################################################
auth.instance.1.type=LDAP_Authentication
auth.instance.1.libraryName=<server-root>/bin/cert/tps/lib/libldapauth.so
auth.instance.1.libraryFactory=GetAuthentication
auth.instance.1.authId=ldap-qa
auth.instance.1.hostport=ldap-qa.example.com:2222
auth.instance.1.SSLOn=false
auth.instance.1.retries=1
auth.instance.1.retryConnect=3
auth.instance.1.baseDN=o=qa
auth.instance.1.ui.title.en=LDAP Authentication
auth.instance.1.ui.description.en=This authenticates user against the
QA LDAP directory.
auth.instance.1.ui.id.UID.name.en=LDAP User ID
auth.instance.1.ui.id.PASSWORD.name.en=LDAP Password
auth.instance.1.ui.id.UID.description.en=QA LDAP User ID
auth.instance.1.ui.id.PASSWORD.description.en=QA LDAP Password
##########################################################################
So, we have now defined the following in order to get this scenario to
work.
- Two mapping orders 0 and 1. 0 refers to the devKey and 1 refers
to the qaKey.
- Two format operation profiles devKey and qaKey
- Two auth instances 0 and 1 with authId's ldap-dev and ldap-qa
respectively.
What happens during a format
operation for a devKey:
Step 1: TPS is restarted with the above
config.
Step 2: User inserts token devKey ( for example, CUID =
1000-0000-0000-0001 ) using ESC client. Token is recognized by ESC.
Step 3: User selects token and clicks 'format'
Step 4. ESC prompts for LDAP authentcation. Enter dev_userid and
dev_password
Step 5: Format operation completes.
During Step 3, ESC sends in the applet version,CUID,ATR etc about the
token to the TPS server. TPS server checks the op.format.mapping... section in
the CS.cfg and figures out that the 'TokenType' for this token is
'devKey'. It then uses the op.format.devKey...
section to perform LDAP authentication ( with ldap-dev ) and to
the corresponding TKS for generating session keys etc.. Optionally, TPS
can also be configured to do applet upgrade and key change over for
this format operation.
What happens during a format
operation for a qaKey:
Step 1: TPS is restarted with the above
config.
Step 2: User inserts token qaKey ( for example, CUID =
2000-0000-0000-0001 ) using ESC client. Token is recognized by ESC.
Step 3: User selects token and clicks 'format operation'
Step 4: ESC prompts for LDAP authentcation. Enter qa_userid and
qa_password
Step 5: Format operation completes.
During Step 3, ESC sends in the applet version,CUID,ATR etc about the
token to the TPS server. TPS server checks the op.format.mapping... section in
the CS.cfg and figures out that the 'TokenType' for this token is
'qaKey'. It then uses the op.format.qaKey...
section
to perform LDAP authentication ( with ldap-qa ) and to the
corresponding TKS for
generating session keys etc.. Optionally, TPS can also be configured to
do applet upgrade and key change over for this format operation.
Configuring TPS logging
By default, five log files are created by the TPS subsystem. All log
files get written to the <server-root>/tps-XXX/logs directory.
Two of the files: 'access' and 'errors', are created by the Netscape
Enterprise Server web server:
- 'errors' - is where messages regarding startup/shutdown of the
server are logged.
- 'access' - is where traditional HTTP access log messages are
logged
The rest of the files:<> 'tps-audit.log' 'tps-debug.log' and
'tps-errors.log' are created by the tps subsytsem itself.
Log files are configured by changing the relevent lines in the CS.cfg
file:
logging.[audit|error|debug].enable=[true|false]
logging.[audit|error|debug]=[SERVER_ROOT]/[INSTANCE_ID]/logs/[filename]
logging.[audit|error|debug].level=[level
number]
Log level 0 is least verbose, 10 is most verbose.
Audit message examples:
[2005-04-29 13:47:08] b65b9828
Upgrade - op='applet_upgrade' app_ver='1.2.416DA155'
new_app_ver='1.3.42659461'
[2005-04-29 13:47:08] b65b9828
Format - status='success' app_ver='1.3.42659461' key_ver='0'
cuid='40900062FF02000065C5' msn='FFFFFFFF' uid='' time='45389 msec'
[2005-04-29 15:56:06] b65b9828
Enrollment - status='success' app_ver='1.3.42659461' key_ver='0101'
cuid='40900062FF020000649D' msn='FFFFFFFF' uid='Steve Parkinson'
time='21058 msec'
[key_ver] indicates the key set version ID. A Key Version of 0101
is mapped to the TKS key version identifier #01#01.
[cuid] indicates the Card Unique Identifier - the unique serial number
of the smartcard.
[app_ver] indicates the applet version number
[time] indicates the elapsed time of the operation.
Thread correlation
In the above example, b65b9828 is the thread ID number. All
interactions performed with a particular smartcard are done on a single
thread, so the operations should all have the same thread ID. In the
case where TPS is interacting with multiple smartcards simultaneously,
log messages pertaining to the smartcard operations will be
interleaved. In this case, the thread ID can be used to correlate
messages for a single smartcard.
Appendix A - create.pl - sample output
************************************************
Token Processing Service (TPS)
Setup
************************************************
This script will assist you in
setting up TPS.
Before running this script, you
should already
install a certificate authority
(CA), a token key
service (TKS), an authentication
directory and a token
database.
CA is responsible for issuing
certificates while TKS
ensures a secure channel between
the client and
the backend. User requests are
authenticated against
the authentication directory
which contain user
information. The token database
collects statistics
on token activities.
The authentication database and
the token base are
regular directory server
instances that can be created
via Console.
If you need other advance options
such as hardware
token support, you need to modify
the advance option
section of this script manually.
************************************************
GENERAL SETUP SECTION
This script is about to create
your TPS instance in your
existing CS installation.
************************************************
Enter the path to the server root
of your existing cs installation (i.e. /export/home/cs):
Error: '/export/home/cs'
directory does not exit.
Enter the path to the server root
of your existing cs installation (i.e. /export/home/cs):
/export/cs/71
Enter the path to the TPS release
(i.e. /export/cs/71/bin/cert/tps):
Enter the hostname of this
machine (i.e. chico):
Enter the fully-qualified
hostname of this machine (i.e. chico.sfbay.redhat.com):
Enter the instance ID of your new
TPS instance (i.e. tps-chico):
************************************************
SERVICE PORTS SECTION
TPS listens on the following
ports. Please make
sure you specify unused ports.
************************************************
Enter the end entity port number
of your TPS (i.e. 8000): 3907
Enter the agent port number of
your TPS (i.e. 8001): 3908
************************************************
AUTHENTICATION (LDAP) DIRECTORY
SECTION
TPS verifies the user IDs and
passwords against this LDAP
database before executing
requests from users.
************************************************
Enter the hostname of the
authentication directory (i.e. chico.sfbay.redhat.com):
Enter the port number of the
authentication directory (i.e. 389): 3900
Enter the root suffix of the
authentication directory (i.e. dc=people, dc=com):
ou=people,dc=sfbay,dc=redhat,dc=com
************************************************
CA CONNECTION SECTION
TPS submits certificate requests
to CA for signing.
************************************************
Enter the hostname of the CA
(i.e. chico.sfbay.redhat.com):
Enter the secure end entity port
number of the CA (i.e. 443): 3904
************************************************
TKS CONNECTION SECTION
TPS obtains session keys from TKS
for establishing secure channels.
************************************************
Enter the hostname of the TKS
(i.e. chico.sfbay.redhat.com):
Enter the secure agent port
number of the TKS (i.e. 8100): 3909
Do you want to perform server-side key generation optionally: (i.e. yes
or no)
yes
************************************************
DRM CONNECTION SECTION
TPS submits archival and recovery
requests
to DRM.
************************************************
Enter the hostname of the DRM
(i.e. chico.sfbay.redhat.com): chico.sfbay.redhat.com
Enter the secure agent port
number of the DRM (i.e. 8100): 8102
************************************************
TOKEN DATABASE (LDAP) CONNECTION
SECTION
TPS sends statistics information
to the database
for auditing purposes.
************************************************
Enter the hostname of the token
database (i.e. chico.sfbay.redhat.com):
Enter the port number of the
token database (i.e. 3890): 3900
Enter the root suffix of the
token database (i.e. dc=com): dc=sfbay,dc=redhat,dc=com
Enter the password of the
directory manager: redhat
************************************************
TPS INSTANCE CREATION
************************************************
This program is about to create
the TPS instance.
If there is any error, please
ctrl-C to exit and restart the process.
Please enter 'proceed' to
continue.
proceed
Creating
/export/cs/71/tps-chico ...
Creating
/export/cs/71/tps-chico/config ...
Creating
/export/cs/71/tps-chico/logs ...
Copying ./templates/start to
/export/cs/71/tps-chico/start ...
Copying ./templates/stop to
/export/cs/71/tps-chico/stop ...
Copying
./templates/config/contexts.properties to
/export/cs/71/tps-chico/config/contexts.properties ...
Copying
./templates/config/jvm12.conf to
/export/cs/71/tps-chico/config/jvm12.conf ...
Copying
./templates/config/magnus.conf to
/export/cs/71/tps-chico/config/magnus.conf ...
Copying
./templates/config/magnus.conf.clfilter to
/export/cs/71/tps-chico/config/magnus.conf.clfilter ...
Copying
./templates/config/mime.types to
/export/cs/71/tps-chico/config/mime.types ...
Copying
./templates/config/obj.conf to
/export/cs/71/tps-chico/config/obj.conf ...
Copying
./templates/config/obj.conf.clfilter to
/export/cs/71/tps-chico/config/obj.conf.clfilter ...
Copying
./templates/config/rules.properties to
/export/cs/71/tps-chico/config/rules.properties ...
Copying
./templates/config/server.dtd to
/export/cs/71/tps-chico/config/server.dtd ...
Copying
./templates/config/server.xml to
/export/cs/71/tps-chico/config/server.xml ...
Copying
./templates/config/server.xml.clfilter to
/export/cs/71/tps-chico/config/server.xml.clfilter ...
Copying
./templates/config/servlets.properties to
/export/cs/71/tps-chico/config/servlets.properties ...
Copying
./templates/config/web-apps.xml to
/export/cs/71/tps-chico/config/web-apps.xml ...
Copying
./templates/config/web-apps.xml.clfilter to
/export/cs/71/tps-chico/config/web-apps.xml.clfilter ...
Copying
/export/cs/71/bin/cert/tps/config/CS.cfg to
/export/cs/71/tps-chico/config/CS.cfg ...
Creating
/export/cs/71/cgi-bin ...
Copying files from
/export/cs/71/bin/cert/tps/forms/esc to
/export/cs/71/cgi-bin ...
Copying files from
/export/cs/71/bin/cert/tps/forms/tus to
/export/cs/71/cgi-bin ...
************************************************
SECURITY DATABASE CREATION
(OPTIONAL)
Keys and certificates will be
stored in the security
databases.
************************************************
This program is about to create
the security databases.
Do you want to create the
security databases automatically: (i.e. yes or no)
yes
This program is about to create
the security databases.
Please enter 'proceed' to
continue.
proceed
Enter a password which will be
used to encrypt your keys.
The password should be at least 8
characters long,
and should contain at least one
non-alphabetic character.
Enter new password:
Re-enter password:
netscape
This program is about to generate
the certificate request.
Please enter 'proceed' to
continue.
proceed
A random seed must be generated
that will be used in the
creation of your key. One
of the easiest ways to create a
random seed is to use the timing
of keystrokes on a keyboard.
To begin, type keys on the
keyboard until this progress meter
is full. DO NOT USE THE
AUTOREPEAT FUNCTION ON YOUR KEYBOARD!
Continue typing until the
progress meter is full:
|************************************************************|
Finished. Press enter to
continue:
Enter Password or Pin for "NSS
Certificate DB":
Generating key. This may
take a few moments...
Certificate request generated by
Netscape certutil
Phone: (not specified)
Common Name:
chico.sfbay.redhat.com
Email: (not specified)
Organization: (not specified)
State: (not specified)
Country: (not specified)
-----BEGIN NEW CERTIFICATE
REQUEST-----
MIIBYDCBygIBADAhMR8wHQYDVQQDExZjaGljby5zZmJheS5yZWRoYXQuY29tMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEJBL1JDs/xElJNa4TC1T+f6I14jVD
RF6bgkBMkagW0pDKoNwpwgv0idKz3rUb9+JUAm7SxxeXyorKxxVbldY3jkzL6Kvq
KdFW5sb0CRUPDlVGz8fH22aS9C/iVC7HAmEAdQaB+c6wcu3CO7hsIDvsU2y8nwAL
ldh5tR8IBxtbMQIDAQABoAAwDQYJKoZIhvcNAQEEBQADgYEAPjiQrzGKZYASlcFy
iAiJB/JlZ/QGzovrJYqB1WXakpyWj+9+Z4ZMMKFLUyi++ni5hzaKuXf2t7m349ks
VeTnuZBuaC7Xn8hprbZapvRgeGZmOppOXB+TdZ2xOKFD8OLcJEBsPlsM16zFlvaD
8lny7cXNiiNRlQSiCJeBu2lAxf4=
-----END NEW CERTIFICATE
REQUEST-----
Please submit the certificate
request to the CA for signing.
Note that correct OIDs (i.e.
1.3.6.1.5.5.7.3.2 and 1.3.6.1.5.5.7.3.4) must be populated in the
extended key usage extension of
the certificate.
In addition, this certificate
must be added to
CA and TKS as trusted agent.
This program is about to import
the server certificate.
Please paste in your certificate
(including header and footer).
-----BEGIN CERTIFICATE-----
MIICdjCCAd+gAwIBAgIBBzANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGEwJVUzEP
MA0GA1UEChMGcmVkaGF0MRwwGgYDVQQDExNDZXJ0aWZpY2F0ZSBNYW5hZ2VyMB4X
DTA1MDQxNTAyMzMwOVoXDTA3MDQwNTAyMzMwOVowITEfMB0GA1UEAxMWY2hpY28u
c2ZiYXkucmVkaGF0LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxCQS
9SQ7P8RJSTWuEwtU/n+iNeI1Q0Rem4JATJGoFtKQyqDcKcIL9InSs961G/fiVAJu
0scXl8qKyscVW5XWN45My+ir6inRVubG9AkVDw5VRs/Hx9tmkvQv4lQuxwJhAHUG
gfnOsHLtwju4bCA77FNsvJ8AC5XYebUfCAcbWzECAwEAAaOBojCBnzAfBgNVHSME
GDAWgBTv06nx5OJhG32vkwjJbfxSb/iiNTBDBggrBgEFBQcBAQQ3MDUwMwYIKwYB
BQUHMAGGJ2h0dHA6Ly9jaGljby5zZmJheS5yZWRoYXQuY29tOjM5MDMvb2NzcDAO
BgNVHQ8BAf8EBAMCBPAwJwYDVR0lBCAwHgYIKwYBBQUHAwEGCCsGAQUFBwMCBggr
BgEFBQcDBDANBgkqhkiG9w0BAQUFAAOBgQBZ7r0thFivn5ithNImv4oB5Jbskbhn
3CAKlpP/en01USscJ7Do1gfVzBhHARSp890wG4jbw1LFiJLBIK8FXBykKdH8TKTB
qmAaR3BEBDHSQPjHPtK66BjPlZe18OgEwXJB7BotuwaMBy6cntmZFo8esvUVTn7b
E76TeN98+LZZlA==
-----END CERTIFICATE-----
This program is about to import
one or more CA certificates.
Do you have CA certificate to
import: (i.e. yes or no)
yes
Please paste in your CA
certificate (including header and footer).
-----BEGIN CERTIFICATE-----
MIICUTCCAbqgAwIBAgIBATANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGEwJVUzEP
MA0GA1UEChMGcmVkaGF0MRwwGgYDVQQDExNDZXJ0aWZpY2F0ZSBNYW5hZ2VyMB4X
DTA1MDQxNDA3MDAwMFoXDTEwMDQxNDA3MDAwMFowPDELMAkGA1UEBhMCVVMxDzAN
BgNVBAoTBnJlZGhhdDEcMBoGA1UEAxMTQ2VydGlmaWNhdGUgTWFuYWdlcjCBnzAN
BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsuXSmqkDyRZqcArpHwjWDo1gyzia6nt6
43MM4I9GYqhuu7an0G5JpFfDjJUqIt709Cs9IEnj9p1ne8x7Bk+CWUg1WtBT7uve
M6MCDDMdts6ioNVgrKyBWSaoKvNsfQPIRh44+sNuaqlIUTU5PpS1Dr4beDR8aJeJ
Eu3H4uZaUBcCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU79Op
8eTiYRt9r5MIyW38Um/4ojUwHwYDVR0jBBgwFoAU79Op8eTiYRt9r5MIyW38Um/4
ojUwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4GBAG8OYMm8k4oo+aFg
f1MHo2nGn5FwaFMCxOlWpQh0UvJq2AhDjBpDP4gko8jMCZ/tyQMiFcs76bMXhXZv
8C7qzpqKSbsyE5IyJwaguO7FEEAZZ4QDlzfGyNehMsZYFyrOX88dmu+MNQpmg8/v
Ruh88MCvdvG808DstYoxgth0/Ytr
-----END CERTIFICATE-----
Do you have CA certificate to
import: (i.e. yes or no)
no
The following shows all imported
certificates.
Server-Cert
u,u,u
caCert0
CT,C,C
Please enter 'proceed' to
continue.
proceed
************************************************
TOKEN DATABASE POPULATION
(OPTIONAL)
Token database's Schema and
default structure will be setup.
Your first authorized agent
certificate will be
imported into the database. TPS
agent port can
be accessed by browser that
contain the authorized
agent certificate.
************************************************
This program is about to populate
the token database.
Do you want to populate the token
database automatically: (i.e. yes or no)
yes
Please paste in your TUS Admin
certificate (including header and footer).
-----BEGIN CERTIFICATE-----
MIICMDCCAZmgAwIBAgIBBTANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGEwJVUzEPMA0GA1UEChMG
cmVkaGF0MRwwGgYDVQQDExNDZXJ0aWZpY2F0ZSBNYW5hZ2VyMB4XDTA1MDQxNTAxNDg0MVoXDTA2
MDQxNTAxNDg0MVowODELMAkGA1UEBhMCVVMxFTATBgoJkiaJk/IsZAEBEwVhZG1pbjESMBAGA1UE
AxMJQ01TIEFnZW50MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCAnPDFRHu9qUiVkvZzPQL
2EHC4aUmYYWnEqdZIqNan8qKJjgr5pmz6tefv2mvNdV97wVoqqBAjuUnEClMrjkqDNWf/m+nR16z
uRxidAzIokf99Ynk6w4GBwappYAGUt3KozMpwcG/uqI0w/YPWO6Ol+V1ktW76DvgrMHcU2uYIwID
AQABo0YwRDAOBgNVHQ8BAf8EBAMCBeAwEQYJYIZIAYb4QgEBBAQDAgeAMB8GA1UdIwQYMBaAFO/T
qfHk4mEbfa+TCMlt/FJv+KI1MA0GCSqGSIb3DQEBBQUAA4GBACPozFK75lg88fshgfBh33Huad5c
Sp2v6PyQmw+uAxSAfY1xL6Lw+qoQ85zwBgi08Lzw2Hnm4zHDmBsam4P/pxeTLkMqtW3llkHjaGZr
rZLVkOMXjz9ituDgAETjDYZk/umpojS8/L6orGmEAe0gdHNVSuItaG2WVGQR8I6d447P
-----END CERTIFICATE-----
Please enter 'proceed' to
continue.
proceed
Copying
/export/cs/71/bin/cert/tps/scripts/schemaMods.ldif to
/export/cs/71/tps-chico/config/schemaMods.ldif ...
Copying
/export/cs/71/bin/cert/tps/scripts/addTokens.ldif to
/export/cs/71/tps-chico/config/addTokens.ldif ...
Copying
/export/cs/71/bin/cert/tps/scripts/addIndexes.ldif to
/export/cs/71/tps-chico/config/addIndexes.ldif ...
Copying
/export/cs/71/bin/cert/tps/scripts/addAgents.ldif to
/export/cs/71/tps-chico/config/addAgents.ldif ...
modifying entry cn=schema
adding new entry
ou=Tokens,dc=sfbay,dc=redhat,dc=com
adding new entry
ou=Activities,dc=sfbay,dc=redhat,dc=com
adding new entry
ou=Certificates,dc=sfbay,dc=redhat,dc=com
adding new entry
ou=People,dc=sfbay,dc=redhat,dc=com
ldap_add: Already exists
adding new entry
cn=tokenUserID,cn=index,cn=userRoot,cn=ldbm
database,cn=plugins,cn=config
adding new entry
cn=tokenID,cn=index,cn=userRoot,cn=ldbm database,cn=plugins,cn=config
adding new entry
cn=dateOfCreate,cn=index,cn=userRoot,cn=ldbm
database,cn=plugins,cn=config
ldap_add: Already exists
adding new entry
uid=admin,ou=People,dc=sfbay,dc=redhat,dc=com
adding new entry cn=TUS
Agents,ou=Groups,dc=sfbay,dc=redhat,dc=com
adding new entry cn=TUS
Adminstrators,ou=Groups,dc=sfbay,dc=redhat,dc=com
************************************************
SETUP IS DONE
************************************************
You should manually start your
TPS by
running the start script in the
TPS instance.
/export/cs/71/tps-chico/start
You can use your ESC client to
access TPS's
end entity port.
http://chico.sfbay.redhat.com:3907/nk_service
You can use your browser to
access TPS's
agent port for
agent/administrator operations.
https://chico.sfbay.redhat.com:3908/tus
Appendix B - TPS
configuration Parameters
This section outlines all the TPS configuration parameters, their
descriptions and valid values that are typically used for the SmartCard
Certificate Enrollments,Key Archivals,Key Recovery , Formatting
Smartcards and Pin Reset Operations.
Logging
logging.debug.enable
Enable or disable debug logging. Valid
values are true|false
logging.debug.filename
Specify the full path to the debug log
file name. For example, /tmp/tps-debug.log
logging.debug.level
Specify the debug log levels. The
various levels that you can specify range from 0...10.
0 - no logging,
4 - LL_PER_SERVER - messages that happen only during startup or shutdown
6 - LL_PER_CONNECTION - Messages that happen on a per connection basis
8 - LL_PER_PDU - messages that happen for every single transaction
9 - LL_ALL_DATA_IN_PDU - dumps all data in PDU
10 - all logging
logging.audit.enable
Enable or disable audit logging. Valid
values or true | false
logging.audit.filename
Specify the full path to the audit log
file name. For example, /tmp/tps-audit.log
logging.audit.level
Specify the audit log level. The
various levels that you can specify range from 0...10.
0 - no logging,
4 - LL_PER_SERVER - messages that happen only during startup or shutdown
6 - LL_PER_CONNECTION - Messages that happen on a per connection basis
8 - LL_PER_PDU - messages that happen for every single transaction
9 - LL_ALL_DATA_IN_PDU - dumps all data in PDU
10 - all logging
logging.error.enable
Enable or disable error logging.
Valid values are true | false
logging.error.filename
Specify the full path to the error log
file name. For example, /tmp/tps-error.log
logging.error.level
Specify the error log level. The
various levels that you can specify range from 0...10.
0 - no logging,
4 - LL_PER_SERVER - messages that happen only during startup or shutdown
6 - LL_PER_CONNECTION - Messages that happen on a per connection basis
8 - LL_PER_PDU - messages that happen for every single transaction
9 - LL_ALL_DATA_IN_PDU - dumps all data in PDU
10 - all logging
failover.pod.enable
Specify whether or not to use a pod
type failover mechanism. Valid values are true | false.
NOTE: If you have 2 ca connections, 2 tks connections, 2 drm
connections configured from TPS and when pod type failover is enabled,
if TPS fails to connect to the first ca, for the next enrollment it
will use the 2nd pod whereby it will use the 2nd CA,DRM,TKS host:port
for connection.
CA Connection Settings
conn.ca<n>.hostport
Specify the Certificate Authority
hostname and port number. Format is as follows
<ca-hostname>:<ca-portnumber>
NOTE: please use the CA's eeSSL port for this.
conn.ca<n>.clientNickname
Specify the Client certificate nickname
to use. This Certificate is used by TPS when connecting to the CA. This
Client certificate should be trusted by the CA and the client should
actually be a configured CA agent.
conn.ca<n>.servlet.enrollment
Specify the servlet that performs
Profile based Certificate Enrollment. Value must be
/ca/profileSubmitSSLClient
conn.ca<n>.retryConnect
Specify the number of times TPS tries
to re-connect to the CA upon connection failure. Valid values are in
'integer'. For example, 3.
conn.ca<n>.timeout
Specify the number of seconds after
which TPS times out failing to connect to the CA. For example, 30
seconds
conn.ca<n>.SSLOn
Specify if SSL needs to be turned on
for the Connection to the CA. This value must be 'true'.
conn.ca<n>.keepAlive
Specify if you want to the keep the
connection to the CA alive or terminate it after every operation. Valid
values are true | false.
TKS Connection Settings
conn.tks<n>.hostport
Specify the TKS sub-system hostname and
port number. Format is as follows
<tks-hostname>:<tks-portnumber>
NOTE: please use the TKS's agent port for this.
conn.tks<n>.clientNickname
Specify the Client certificate nickname
to use. This Certificate is
used by TPS when connecting to the TKS. This Client certificate should
be trusted by the TKS and the client should actually be a configured
TKS agent.
conn.tks<n>.retryConnect
Specify the number of times TPS tries
to re-connect to the TKS upon
connection failure. Valid values are in 'integer'. For example, 3.
conn.tks<n>.SSLOn
Specify if SSL needs to be turned on
for the Connection to the TKS. This value must be 'true'.
conn.tks<n>.keepAlive
Specify if you want to the keep the
connection to the TKS alive or
terminate it after every operation. Valid values are true | false.
conn.tks<n>.serverKeygen
Specify if you want to use the where
you want key generation to happen. When set to true , Key generation happens on
the Server. When set to false, key
generation happens on the client ( aka ; token )
DRM Connection Settings
conn.drm<n>.hostport
Specify the DRM sub-system hostname and
port number. Format is as follows
<drm-hostname>:<drm-portnumber>
NOTE: please use the DRM agent port for this.
conn.drm<n>.clientNickname
Specify the Client certificate nickname
to use. This Certificate is
used by TPS when connecting to the DRM. This Client certificate should
be trusted by the DRM and the client should actually be a configured
DRM agent.
conn.drm<n>.retryConnect
Specify the number of times TPS tries
to re-connect to the DRM upon
connection failure. Valid values are in 'integer'. For example, 3.
conn.drm<n>.SSLOn
Specify if SSL needs to be turned on
for the Connection to the DRM. This value must be 'true'.
conn.drm<n>.keepAlive
Specify if you want to the keep the
connection to the DRM alive or
terminate it after every operation. Valid values are true | false.
LDAP Authentication
auth.instance.<n>.type
Specify the authentication type to use.
Must be 'LDAP_Authentication'
for now
auth.instance.<n>.libraryName
Specify the library to use for LDAP
authentication. Provide the full path to the library. Filename must be
libldapauth.so
auth.instance.<n>.libraryFactory
Specify the function name to use for
LDAP authentication. Must be 'GetAuthentication'
for now.
auth.instance.<n>.authId
Specify this auth instance id so that
we could use in when defining other operations. For example, ldap1.
auth.instance.<n>.hostport
Specify the LDAP hostname and port
number. Format is as follows : <ldap-hostname>:<ldap-port>
auth.instance.<n>.SSLOn
Specify if SSL should be turned on/off.
Valid values are 'true | false'.
auth.instance.<n>.retries
Specify the number of times
authentication is tried upon failure. Valid values are in 'integer'.
for example, 1.
auth.instance.<n>.retryConnect
Specify the number of times TPS tries
to re-connect to the LDAP server upon
connection failure. Valid values are in 'integer'. For example, 3.
auth.instance.<n>.baseDN
Specify the baseDN where to start the
LDAP search from. For example, o=example.com
auth.instance.<n>.ui.title.en
Specify the title of the LDAP Auth
plugin. For example, "LDAP Authentication"
auth.instance.<n>.ui.description.en
Specify the description of the LDAP
auth activity. For example, "This authenticates the user against the
LDAP dev directory"
auth.instance.<n>.ui.id.UID.name.en
Specify the UID parameter name. For
example, "LDAP User ID"
auth.instance.<n>.ui.id.PASSWORD.name.en
Specify the password parameter name.
For example, "LDAP Password"
auth.instance.<n>.ui.id.UID.description.en
Specify the description for the UID
param
auth.instance.<n>.ui.id.PASSWORD.description.en
Specify the description for the
password param
Applet Information
applet.aid.cardmgr_instance
Do not change
applet.aid.netkey_instance
Do not change
applet.aid.netkey_file
Do not change
applet.aid.netkey_old_instance
Do not change
applet.aid.netkey_old_file
Do not change
applet.so_pin
Do not change
applet.delete_old
Do not change
Encrypted Channel Bet'n TPS and Token
channel.encryption
Specify if you want the data being
transmitted between the TPS and the token to be encrypted or not.
Valid values are true | false.
Mapping and Filters
In this section , please note that
<Operation> can be
enroll,pinreset or format
<n> = 0,1,2,3.... etc
op.<Operation>.mapping.order
Specify the number of tokenTypes to
map. Format is <n>,<n>,<n>. For example 0,1,2
op.<Operation>.mapping.<n>.filter.tokenType
Filter based on the tokenType sent by
ESC. Specify the expected tokenType that TPS will receive from ESC. For
example, 'userKey'. The target Tokentype will be matched if the
tokenType sent by ESC also matches.
op.<Operation>.mapping.<n>.filter.tokenATR
Filter based on the ATR sent by ESC.
Specify the expected ATR that TPS will receive from ESC. For example,
1234. The target tokentype will be matched, if the ATR of the token and
the ATR mentioned here matches.
op.<Operation>.mapping.<n>.filter.tokenCUID.start
Filter based on the CUID range. The
target TokenType will be matched, if the CUID falls within the
start-end range.
op.<Operation>.mapping.<n>.filter.tokenCUID.end
Filter based on the CUID range. The
target TokenType will be matched, if the CUID falls within the
start-end range.
op.<Operation>.mapping.<n>.filter.appletMajorVersion
Filter based on the applet Major
version. For an applet file name 1.3.423FFAZ.ijc , 1 is the major
version. The target tokenType will be matched/selected, if the applet's
Major Version sent by ESC matches this param.
op.<Operation>.mapping.<n>.filter.appletMinorVersion
Filter based on the applet minor
version. For an applet file name 1.3.423FFAZ.ijc , 3 is the minor
version. The
target tokenType will be matched/selected, if the applet's minor
Version sent by ESC matches this param.
op.<Operation>.mapping.<n>.target.tokenType
Set this parameter to the 'tokenType'
that you want selected for this mapping. For example it could be set to
'userKey'.
Enrollment Operation - Preferences
op.enroll.<tokenType>.temporaryToken.tokenType
Specify the <tokenType> to use
for temporary tokens. <tokenType> typically refers to the profile
thats defined which can specify how certs should be generated, how keys
should be recovered, how format should be done .. etc.
op.enroll.<tokenType>.keyGen.recovery.destroyed.keyType.num
Specify number of keyTypes. Default
value is 2.
op.enroll.<tokenType>.keyGen.recovery.destroyed.keyType.value.<n>
Specify keyType. Default values are
signing | encryption.
op.enroll.<tokenType>.keyGen.signing.recovery.destroyed.scheme
Specify signing certificate recovery
scheme for destroyed tokens. Default value is 'GenerateNewKey'. Other
possible values include 'RecoverLast'
op.enroll.<tokenType>.keyGen.signing.recovery.destroyed.revokeCert
Specify if signing certificate should
be revoked or not. Valid values are true | false. default value
is true.
op.enroll.<tokenType>.keyGen.signing.recovery.destroyed.revokeCert.reason
Specify what the signing certificate
revocation reason should be. default value is 0. Valid values are
0 - unspecified
1 - key compromised
2 - ca key compromised
3 - affiliation changed
4 - certificate superseded
5 - cessation of operation
6 - certificate is on hold
op.enroll.<tokenType>.keyGen.encryption.recovery.destroyed.scheme
Specify encryption certificate recovery
scheme for destroyed tokens. Default value is 'RecoverLast. Other
possible values include 'GenerateNewKey'
op.enroll.<tokenType>.keyGen.encryption.recovery.destroyed.revokeCert
Specify if encryption certificate
should be revoked or not. Valid values are true | false. default
value is true.
op.enroll.<tokenType>.keyGen.encryption.recovery.destroyed.revokeCert.reason
Specify what the encryption certificate
revocation reason should be. default value is 0. Valid values are
0 - unspecified
1 - key compromised
2 - ca key compromised
3 - affiliation changed
4 - certificate superseded
5 - cessation of operation
6 - certificate is on hold
op.enroll.<tokenType>.keyGen.recovery.keyCompromise.keyType.num
specify the number of key types for
recovery for the tokens whose keys are compromised.
op.enroll.<tokenType>.keyGen.recovery.keyCompromise.keyType.value.<n>
Specify keyType. Default values are
signing | encryption.
op.enroll.<tokenType>.keyGen.signing.recovery.keyCompromise.scheme
Specify signing certificate recovery
scheme for tokens whose keys are compromised. Default value is
'GenerateNewKey'. Other possible values include 'RecoverLast'
op.enroll.<tokenType>.keyGen.signing.recovery.keyCompromise.revokeCert
Specify if the signing certificate
should be revoked or not if the original token's key has been
comprised. Valid values are true | false.
op.enroll.<tokenType>.keyGen.signing.recovery.keyCompromise.revokeCert.reason
Specify what the signing certificate
revocation reason should be. default value is 0. Valid values are
0 - unspecified
1 - key compromised
2 - ca key compromised
3 - affiliation changed
4 - certificate superseded
5 - cessation of operation
6 - certificate is on hold
op.enroll.<tokenType>.keyGen.encryption.recovery.keyCompromise.scheme
Specify encryption certificate recovery
scheme for tokens whose key is compromised. Valid values include
'GenerateNewKey' and 'RecoverLast'
op.enroll.<tokenType>.keyGen.encryption.recovery.keyCompromise.revokeCert
Specify if the encryption certificate
should be revoked or not if the token's key has been comprised. Valid
values are true | false.
op.enroll.<tokenType>.keyGen.encryption.recovery.keyCompromise.revokeCert.reason
Specify what the signing certificate
revocation reason should be. default value is 0. Valid values are
0 - unspecified
1 - key compromised
2 - ca key compromised
3 - affiliation changed
4 - certificate superseded
5 - cessation of operation
6 - certificate is on hold
op.enroll.<tokenType>.keyGen.recovery.onHold.keyType.num
Specify the number of key types for the
tokens that you want to put onHold ( for temporary loss reasons ).
Valid values are in integer. Default is 2.
op.enroll.<tokenType>.keyGen.recovery.onHold.keyType.value.<n>
Specify keyType. Default values are
signing | encryption.
op.enroll.<tokenType>.keyGen.signing.recovery.onHold.scheme
Specify the recovery scheme for signing
certificates for tokens that are to be put onHold. Valid values are
'GenerateNewKey' and 'RecoverLast'
op.enroll.<tokenType>.keyGen.signing.recovery.onHold.revokeCert
Specify if the signing certificate
should be revoked or not if the
token's key has been comprised. Valid values are true | false.
op.enroll.<tokenType>.keyGen.signing.recovery.onHold.revokeCert.reason
Specify what the signing certificate
revocation reason should be. default value is 0. Valid values are
0 - unspecified
1 - key compromised
2 - ca key compromised
3 - affiliation changed
4 - certificate superseded
5 - cessation of operation
6 - certificate is on hold
op.enroll.<tokenType>.keyGen.encryption.recovery.onHold.scheme
Specify the recovery scheme for
encryption certificates for tokens that are to be put onHold. Valid
values are 'GenerateNewKey' and 'RecoverLast'
op.enroll.<tokenType>.keyGen.encryption.recovery.onHold.revokeCert
Specify if the encryption certificate
should be revoked or not if the
token's key has been comprised. Valid values are true | false.
op.enroll.<tokenType>.keyGen.encryption.recovery.onHold.revokeCert.reason
Specify what the encryption certificate
revocation reason should be. default value is 0. Valid values are
0 - unspecified
1 - key compromised
2 - ca key compromised
3 - affiliation changed
4 - certificate superseded
5 - cessation of operation
6 - certificate is on hold
op.enroll.<tokenType>.keyGen.tokenName
Specify the name of the token to use.
TPS has the capability to substitute some special strings here.
For example,
if you use $cuid$ here, the tokenName
is substituted with the CUID of the token.
if you use $userid$ here, the tokenName
is substituted with the User ID of the authenticating user.
op.enroll.<tokenType>.keyGen.keyType.num
Specify the number of keys/certs to be
generated for this profile. Values are in integer. default is 2.
op.enroll.<tokenType>.keyGen.keyType.value.<n>
Specify keyType. Default values are
signing | encryption.
op.enroll.<tokenType>.keyGen.signing.keySize
Specify key size to use for key
generation. Default is 1024.
############################################################
# DO NOT Alter these values
############################################################
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.encrypt
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.sign
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.signRecover
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.decrypt
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.derive
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.unwrap
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.wrap
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.verifyRecover
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.verify
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.sensitive
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.private
op.enroll.<tokenType>.keyGen.signing.public.keyCapabilities.token
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.encrypt
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.sign
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.signRecover
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.decrypt
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.derive
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.unwrap
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.wrap
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.verifyRecover
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.verify
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.sensitive
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.private
op.enroll.<tokenType>.keyGen.signing.private.keyCapabilities.token
############################################################
op.enroll.<tokenType>.keyGen.signing.label
Specify the token label for the signing
cert. Valid values are $pretty_cuid$, $cuid$, $msn$,$userid$,$profileId$
op.enroll.<tokenType>.keyGen.signing.cuid_label
Specify the cuid to be shown in the
certificate.
op.enroll.<tokenType>.keyGen.signing.overwrite
Specify if you want TPS to overwrite
you existing signing cert or not. Valid values are true | false.
op.enroll.<tokenType>.keyGen.signing.ca.profileId
Specify the ca profile that should be
use for creating the signing certificate. Default is
caTokenUserSigningKeyEnrollment
op.enroll.<tokenType>.keyGen.signing.ca.conn
Specify the CA connection to use.
Default value is ca1
op.enroll.<tokenType>.keyGen.encryption.keySize
Specify the keysize for the encryption
key. Default is 1024.
############################################################
# Do not alter these
############################################################
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.encrypt
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.sign
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.signRecover
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.decrypt
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.derive
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.unwrap
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.wrap
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.verifyRecover
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.verify
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.sensitive
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.private
op.enroll.<tokenType>.keyGen.encryption.public.keyCapabilities.token
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.encrypt
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.sign
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.signRecover
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.decrypt
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.derive
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.unwrap
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.wrap
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.verifyRecover
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.verify
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.sensitive
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.private
op.enroll.<tokenType>.keyGen.encryption.private.keyCapabilities.token
############################################################
op.enroll.<tokenType>.keyGen.encryption.label
Specify the token label for the
encryption cert. Valid values are $pretty_cuid$, $cuid$,
$msn$,$userid$,$profileId$
op.enroll.<tokenType>.keyGen.encryption.cuid_label
Specify the cuid to be shown in the
certificate.
op.enroll.<tokenType>.keyGen.encryption.overwrite
Specify if the encryption cert on the
token should be overwritten or not. Valid values are true | false.
op.enroll.<tokenType>.keyGen.encryption.ca.profileId
Specify the ca profile to use for
enrolling encryption certs. Default value is
caTokenUserEncryptionKeyEnrollment
op.enroll.<tokenType>.keyGen.encryption.ca.conn
Specify the ca connection to use to
generate encryption certs. Default value is ca1
op.enroll.<tokenType>.update.applet.emptyToken.enable
Specify if you need TPS to upload an
applet to the token when it doesn't have one. Valid values are
true | false.
op.enroll.<tokenType>.update.applet.enable
Specify if applet upgrade is turned on
or off. Valid values true | false.
op.enroll.<tokenType>.update.applet.requiredVersion
Specify the version of applet to use.
It should be the filename of the applet without the .ijc extension.
op.enroll.<tokenType>.update.applet.directory
Specify the local filesystem directory
where the applets are located.
op.enroll.<tokenType>.update.symmetricKeys.enable
Specify if the key change over feature
should be enabled or not. Valid values are true | false. When enabled,
TPS checks to see the key version sent by the token matches symmetricKeys.requiredVersion
op.enroll.<tokenType>.update.symmetricKeys.requiredVersion
Specify the key version thats required
to be present on the key.
op.enroll.<tokenType>.loginRequest.enable
Specify if the login request should be
sent to the token. This parameter enables authentication. Valid values
are true | false
op.enroll.<tokenType>.pinReset.enable
Specify if the token's pin should be
reset or not. Default value is true. Valid values are true | false.
op.enroll.<tokenType>.pinReset.pin.minLen
Specify the minimum number of
characters for the pin
op.enroll.<tokenType>.pinReset.pin.maxLen
Specify the max number of characters
for the pin
op.enroll.<tokenType>.tks.conn
Specify the tks connection to use for
this operation.
op.enroll.<tokenType>.auth.id
Specify the LDAP auth instance to use
for this operation. Default value is ldap1.
op.enroll.<tokenType>.auth.enable
Specify whether we need to authenticate
the user info. Valid values are true | false
Pin Reset Operation - Preferences
op.pinReset.<tokenType>.update.applet.emptyToken.enable
Specify if you need TPS to upload an
applet to the token when it doesn't have one. Valid values are
true | false.
op.pinReset.<tokenType>.update.applet.enable
Specify if applet upgrade is turned on
or off. Valid values true | false.
op.pinReset.<tokenType>.update.applet.requiredVersion
Specify the key version thats required
to be present on the key.
op.pinReset.<tokenType>.update.applet.directory
Specify the local filesystem directory
where the applets are located.
op.pinReset.<tokenType>.update.symmetricKeys.enable
Specify if the key change over feature
should be enabled or not. Valid
values are true | false. When enabled, TPS checks to see the key
version sent by the token matches symmetricKeys.requiredVersion
op.pinReset.<tokenType>.update.symmetricKeys.requiredVersion
Specify the key version thats required
to be present on the key.
op.pinReset.<tokenType>.loginRequest.enable
Specify if the login request should be
sent to the token. This parameter enables authentication. Valid values
are true | false
op.pinReset.<tokenType>.pinReset.pin.minLen
Specify the minimum number of
characters for the pin
op.pinReset.<tokenType>.pinReset.pin.maxLen
Specify the max number of characters
for the pin
op.pinReset.<tokenType>.tks.conn
Specify the tks connection to use for
this operation
op.pinReset.<tokenType>.auth.id
Specify the LDAP auth instance to use
for this operation. Default value is ldap1.
op.pinReset.<tokenType>.auth.enable
Specify whether we need to authenticate
the user info. Valid values are true | false
Format Operation - Preferences
op.format.<tokenType>.update.applet.emptyToken.enable
Specify if you need TPS to upload an
applet to the token when it doesn't have one. Valid values are
true | false
op.format.<tokenType>.update.applet.requiredVersion
Specify if applet upgrade is turned on
or off. Valid values true | false.
op.format.<tokenType>.update.applet.directory
Specify the local filesystem directory
where the applets are located
op.format.<tokenType>.update.symmetricKeys.enable
Specify if the key change over feature
should be enabled or not. Valid
values are true | false. When enabled, TPS checks to see the key
version sent by the token matches symmetricKeys.requiredVersion
op.format.<tokenType>.update.symmetricKeys.requiredVersion
Specify the key version thats required
to be present on the key.
op.format.<tokenType>.revokeCert
Specify if you want TPS to revoke the
certificates associated with the token during this format operation.
Default is true. Valid values are true | false
op.format.<tokenType>.ca.conn
Specify the ca connection to use for
this operation
op.format.<tokenType>.loginRequest.enable
Specify if the login request should be
sent to the token. This parameter enables authentication. Valid values
are true | false
op.format.<tokenType>.tks.conn
Specify the tks connection to use for
this operation
op.