VSI OpenLDAP ACME Agent for OpenVMS
Configuration and User Guide
- Operating Systems:
- VSI OpenVMS Alpha Version 8.4-2L1 or higher
VSI OpenVMS IA-64 Version 8.4-2L1 or higher
VSI OpenVMS x86-64 Version 9.2-3 + Update V3 or higher
- Software Version:
- VSI OpenLDAP for OpenVMS Version 2.6-6A
1. Introduction
VSI OpenLDAP ACME agent for OpenVMS combines the Lightweight Directory Access Protocol (LDAP) with the VSI OpenVMS Authentication and Credentials Management Extension (ACME) authentication mechanism to provide a solution that allows VSI OpenVMS customers to extend single sign-on procedures to include OpenVMS hosts and manage user accounts in a centralized directory.
The OpenLDAP ACME agent for VSI OpenVMS provides "simple bind" authentication during login using an LDAP-compliant directory server, such as a Microsoft Active Directory domain controller or an OpenLDAP server. With this authentication method, users enter the user ID and password of their LDAP directory account when accessing the OpenVMS host. When successfully authenticated, the external user ID is mapped to the appropriate OpenVMS username and the correct user profile is obtained.
The agent supports logins from multiple user domains and provides multiple mechanisms to map domain usernames to OpenVMS usernames. Secure Socket Layer (SSL)/Transport Layer Security (TLS) LDAP communication is supported to prevent user IDs and clear-text passwords from being exposed over the network.
This manual details post-installation tasks and provides information on username mapping, troubleshooting help, a list of configuration directives, and several example configurations. It also includes details of existing issues and restrictions.
For installation instructions, as well as information specific to the latest release of VSI OpenLDAP, refer to the most recent version of the VSI OpenLDAP for OpenVMS Release Notes and Installation Guide available at https://docs.vmssoftware.com/.
Note
OpenVMS provides an LDAP-based ACME agent that is integrated into the operating system. In this document, this component is referred to as the integrated ACME LDAP agent, while the OpenLDAP-based implementation is referred to as the OpenLDAP ACME agent.
2. Post-Installation Tasks
For instructions on how to install VSI OpenLDAP, refer to the most recent version of the VSI OpenLDAP for OpenVMS Release Notes and Installation Guide.
After the VSI OpenLDAP product has been installed, perform the following tasks to configure and enable the OpenLDAP ACME agent.
2.1. Install the ACME LOGIN Images
In an OpenVMS cluster...
… complete this task on any one system that boots from a particular system disk.
To install the ACME LOGIN images (SYS$SYTEM:LOGINOUT.EXE and SETP0.EXE), run the command file SYS$MANAGER:SYS$LOGIN_SWITCH.COM. The procedure will display a message indicating which login images are currently in use and an option to switch to the other login images. If necessary, switch to using ACME LOGIN. For example:
$ @SYS$MANAGER:SYS$LOGIN_SWITCH You are currently using UAF LOGIN. This procedure will switch to using ACME LOGIN Do you want to continue? (YES or NO): YES The replacement procedure is complete. You must issue the commands $ INSTALL REPLACE LOGINOUT $ INSTALL REPLACE SETP0 on any other cluster members using a common system disk with NODE1.
As directed by SYS$LOGIN_SWITCH.COM, if SYS$LOGIN_SWITCH was executed on a system that uses a common system disk in an OpenVMS cluster, run the following commands on all cluster members that use the common system disk:
$ INSTALL REPLACE LOGINOUT $ INSTALL REPLACE SETP0
2.2. Install the OpenLDAP Persona Extension
In an OpenVMS cluster...
… complete this task on any one system that boots from a particular system disk.
To set up the OpenLDAP persona extension, perform the following tasks:
Add an entry for the OpenLDAP persona extension image to the system images file as follows:
$ MCR SYSMAN SYSMAN> SYS_LOADABLE ADD LDAPACME LDAPACME2$EXT SYSMAN> EXIT
Generate a new system images data file via the following command:
$ @SYS$UPDATE:VMS$SYSTEM_IMAGES.COM
For x86-64 systems only – Reconfigure the node memory disk using the following command procedure:
$ @SYS$UPDATE:SYS$MD.COM
Reboot each applicable system via the following command:
$ @SYS$SYSTEM:SHUTDOWN
Note
To avoid possible system-wide login issues, VSI recommends rebooting the system before initially enabling the OpenLDAP ACME agent.
2.3. Verify the OpenLDAP Persona Extension is Installed
In an OpenVMS cluster...
… perform this task on all cluster members that will run the Open LDAP ACME agent.
After rebooting a system, verify that the OpenLDAP persona extension is installed via the following commands:
$ ANALYZE/SYSTEM SDA> SHOW EXECUTIVE LDAPACME2$EXT
No loadable image matching "LDAPACME2$EXT" foundIn that case, follow the instructions starting at Section 2.1, ''Install the ACME LOGIN Images'' to successfully install the OpenLDAP persona extension.
2.4. Configure the OpenLDAP ACME Agent
The OpenLDAP ACME agent uses a text configuration file that contains directives (described in Appendix A, "Configuration Directives") to control its operation. To support multiple user domains, use a separate configuration file for each domain.
In an OpenVMS cluster...
The entire cluster may share a single OpenLDAP ACME agent configuration file (i.e., by storing the configuration file on a disk that is mounted cluster-wide prior to restarting the ACME server during startup).
Multiple OpenLDAP ACME agent configurations may be deployed in a single cluster using different file names for the OpenLDAP ACME agent configuration files.
Each cluster member may use a unique OpenLDAP ACME agent configuration file (i.e., by using configuration files with different names, or by placing the configuration file in a SYS$SPECIFIC: directory, such as SYS$SPECIFIC:[SYS$STARTUP]).
To assist new users, the template configuration file? can be copied, renamed to a file name of your choice, and then modified to suit your needs. For example:
$ COPY SYS$STARTUP:LDAPACME$CONFIG-STD.INI_TEMPLATE - _$ SYS$STARTUP:LDAPACME$CONFIG-STD.INI
Edit the OpenLDAP ACME agent configuration file to specify the directives that correspond to your requirements. For a description of the supported directives in the OpenLDAP ACME agent configuration file, see Appendix A, "Configuration Directives". Example configurations are provided in Appendix B, "Example Configurations".
Important
The OpenLDAP ACME agent requires the credentials of an account that exists in the LDAP directory for the purpose of performing a search of the username specified during login.
The distinguished name (not the username) and password of the designated account are required for proper configuration of the OpenLDAP ACME agent.
The account should be an ordinary user account with no special privileges or rights. If possible, set up the account so that its password never expires and cannot be changed. Any change to the password will require a change to the password specified in the OpenLDAP ACME agent configuration file (and the ACME server must be restarted).
When editing the OpenLDAP ACME agent configuration file, consider the following:
Comments, denoted by an exclamation point (!), are allowed. However, do not add a comment to the end of a line containing a directive (the comment is considered part of the value).
Directives are not case-sensitive (i.e., bind_dn, BIND_DN, or Bind_DN are all acceptable).
Directive order is irrelevant.
Values, with the exception of those for the "bind_password" directive and the "scope" directive, are not case-sensitive.
Do not enclose values in quotes, even if they contain spaces.
At minimum, a functional OpenLDAP ACME agent configuration file requires the following six directives:
- - server
- - bind_dn
- - bind_password
- - base_dn
- - login_attribute
- - scope
Any modifications to the configuration files will only take effect after the ACME server is restarted.
Ensure that the OpenLDAP ACME agent configuration files are accessible to privileged users only. Set the security of these files appropriately based on your security requirements. For example, the following command grants access to the OpenLDAP ACME agent configuration file only for privileged users:
$ SET SECURITY/PROTECTION=(S:RWED,O,G,W) - _$ SYS$COMMON:[SYS$STARTUP]LDAPACME$CONFIG-STD.INI
2.5. Define the LDAPACME$INIT Logical Name
In an OpenVMS cluster...
… perform this task on all cluster members that will run the OpenLDAP ACME agent.
The Executive Mode system logical name LDAPACME$INIT must be defined prior to starting the ACME server and must equate to the full file specification of the OpenLDAP ACME agent configuration file. For example:
$ DEFINE/SYSTEM/EXECUTIVE_MODE LDAPACME$INIT - _$ SYS$STARTUP:LDAPACME$CONFIG-STD.INI
When using multiple domain configuration files, define LDAPACME$INIT to equate to all such configuration files using a comma-separated list. For example:
$ DEFINE/SYSTEM/EXECUTIVE_MODE LDAPACME$INIT - _$ SYS$STARTUP:LDAPACME$CONFIG-STD-US.INI, - _$ SYS$STARTUP:LDAPACME$CONFIG-STD-EMEA.INI
Important
The LDAPACME$INIT logical must be defined prior to starting the OpenLDAP ACME agent. VSI recommends adding this logical name definition to the command procedure SYS$MANAGER:ACME$START.COM so that it executes prior to starting the OpenLDAP ACME agent (see Section 2.6, ''Update SYS$MANAGER:ACME$START.COM'').
2.6. Update SYS$MANAGER:ACME$START.COM
The ACME$START.COM procedure runs automatically when restarting the ACME server. The current version of ACME$START.COM contains the command required to start the integrated LDAP ACME agent.? That command must be replaced with the command required to start the OpenLDAP ACME agent.
In an OpenVMS cluster...
… with multiple system disks, perform the procedure below on any one system that boots from a particular system disk.
Perform the following procedure:
Open ACME$START.COM in your editor of choice.
Locate and comment out the line:
$ @SYS$STARTUP:LDAPACME$STARTUP-STD
Add the following line above or below the line that you just commented out:
$ @SYS$STARTUP:LDAPACME2$STARTUP-STD
Save the changes and close the file.
2.7. Restart the ACME Server
In an OpenVMS cluster...
… perform this step on all cluster members that will run the OpenLDAP ACME agent.
After modifying SYS$MANAGER:ACME$START, restart the ACME server via the following command:
$ SET SERVER ACME/RESTART
2.8. Verify the ACME Agents Are Active
In an OpenVMS cluster...
… perform this step on all cluster members that run the OpenLDAP ACME agent.
Execute the SHOW SERVER ACME command and verify that the
VMS and LDAP
ACME agents are both in the Active state. If both agents are not
in the Active state, see Section 5, ''Troubleshooting'':
$ SHOW SERVER ACME ACME Information on node NODE1 23-MAR-2021 17:32:06.92 Uptime 0 00:00:42 ACME Server id: 3 State: Processing New Requests Agents Loaded: 2 Active: 2 Thread Maximum: 1 Count: 1 Request Maximum: 834 Count: 0 ACME Agent id: 1 State: Active Name: "VMS" Image: "DISK$I64V842L1SYS:[VMS$COMMON.SYSLIB]VMS$VMS_ACMESHR.EXE;1" Identification: "VMS ACME built 20-SEP-2006" Information: "No requests completed since the last startup" Domain of Interpretation: Yes Execution Order: 1 ACME Agent id: 2 State: Active Name: "LDAP-STD" Image: "DISK$I64V842L1SYS:[VMS$COMMON.SYSLIB]LDAPACME2$LDAPSTD_ACMESHR.EXE;1" Identification: "OPENLDAP ACME Standard V2.6-6A" Information: "ACME_LDAP_DOI Agent is initialized" Domain of Interpretation: Yes Execution Order: 2
Determining Which LDAP ACME Agent is Active
To determine which ACME agent is currently active, check the "Identification" displayed by the command:
$ SHOW SERVER ACME
If the "Identification" displayed is LDAP ACME Standard V1.26, the
integrated LDAP
ACME agent is active. If instead it displays
OPENLDAP
ACME Standard V2.6-6A, the OpenLDAP ACME agent is
active.
Switching Between the Integrated LDAP and OpenLDAP ACME Agents
Warning
This step assumes the integrated LDAP ACME agent is properly installed, configured, and was functional prior to activation of the OpenLDAP ACME agent. Do not attempt to switch to the integrated LDAP ACME agent otherwise.
To switch between the integrated LDAP ACME agent and the OpenLDAP ACME agent, modify ACME$START.COM and restart the ACME server. For example, if the integrated LDAP ACME agent is active, perform the following procedure to switch to the OpenLDAP ACME agent:
Edit SYS$MANAGER:ACME$START.COM.
Uncomment the command that starts the OpenLDAP ACME agent:
$ @SYS$STARTUP:LDAPACME2$STARTUP-STD
Comment out the command that starts the integrated LDAP ACME agent:
$! @SYS$STARTUP:LDAPACME$STARTUP-STD
Save the changes.
Restart the ACME server via the following command:
$ SET SERVER ACME/RESTART
2.9. Enable Password Changes in TCP/IP Services SSH Server
If a system is running VSI TCP/IP Services for OpenVMS, to allow externally
authenticated users connecting via the TCP/IP Services SSH
server to change their LDAP account password with the SET
PASSWORD command, define the following system logical name prior to
starting the SSH Server:
$ DEFINE/SYSTEM TCPIP$SSH_SERVER_USE_LOGINOUT 1
2.10. Configure OpenVMS User Accounts
For a user to be externally authenticated using the OpenLDAP ACME agent, set the EXTAUTH flag on the user's OpenVMS account as follows:
$ MCR AUTHORIZE MODIFY USER1 /FLAG=EXTAUTH
When the EXTAUTH flag is set on a user's account, the user is validated using only the external authenticator (LDAP). When a user successfully logs in using the OpenLDAP ACME agent, the OpenVMS host displays the message "Logon authenticated by LDAP" on the user's terminal. For example:
$ SSH USER1@NODE1
Welcome to OpenVMS (TM) Alpha Operating System, Version V8.4-2L2
user1's password:
Authentication successful.
Last interactive login on Monday, 27-MAR-2021 12:36:51.62
Last non-interactive login on Wednesday, 27-JAN-2021 14:07:16.75
**** Logon authenticated by LDAP ****To allow the user to bypass external authentication and instead be authenticated locally (using the user's credentials stored in the SYSUAF.DAT file), also set the VMSAUTH flag on the user's account. However, the password of the user's OpenVMS account may not be synchronized with the password of their LDAP directory account (see Section 4.1, ''Password Synchronization'') and may need to be reset.
To bypass external authentication, the user must include the
/LOCAL_PASSWORD qualifier when specifying their username (at
the Username: prompt), for example:
Username: USER1/LOCAL_PASSWORD
Note
The /LOCAL_PASSWORD qualifier is not supported for SSH
interactive logins when using the TCP/IP Services SSH
server.
3. Username Mapping
The OpenLDAP ACME agent supports implicit and explicit username mapping. Implicit mapping occurs when no explicit mapping exists for a user's account, and the user's LDAP account username is identical to their OpenVMS account username. If the user's LDAP account username is not identical to their OpenVMS account username, explicit username mapping is required.
The OpenLDAP ACME agent supports two forms of explicit username mapping – Global and Local. With global mapping, the user's OpenVMS username is mapped based on a value stored in a designated attribute of the user's account on the directory server. With local mapping, a text file on the OpenVMS host is used to store the mapping.
3.1. Global Username Mapping
To enable global mapping, perform the following steps:
Choose the LDAP account attribute (field) that will be used to store the name of the user's OpenVMS username. The examples in this document use the "description" attribute. Edit the OpenLDAP ACME agent configuration file and set the "mapping_attribute" directive to the name of the chosen attribute. For example:
mapping_attribute = description
Choose a string identifier that will precede the OpenVMS username. Edit the OpenLDAP ACME agent configuration file and set the "mapping_target" directive to this string (do not terminate the string with a slash). The examples in this document use the string
VMSUser. For example:mapping_target = VMSUser
Restart the ACME Server via the following command:
$ SET SERVER ACME/RESTART
For any user whose LDAP directory username is not identical to their OpenVMS username, add the string specified for the "mapping target" directive and the user's OpenVMS username, separated by a slash, to the attribute field (specified by the "mapping_target" directive) of the user's LDAP directory account. For example, if the user's OpenVMS username is
JDOE, add the following string to the Description field of the user's LDAP directory account:VMSUser/jdoe
3.2. Local Username Mapping
To enable local username mapping, perform the following steps:
Make a copy of SYS$STARTUP:LDAP_LOCALUSER_DATABASE.TXT_TEMPLATE and rename it to a file name of your choice. For example:
$ COPY SYS$STARTUP:LDAP_LOCALUSER_DATABASE.TXT_TEMPLATE – _$ SYS$COMMON:[SYS$STARTUP]LDAP_USER_DB.TXT
Update the file with a user's LDAP username and OpenVMS username separated by a comma (one or more space characters may follow the comma). If the LDAP username contains spaces, enclose it in quotes. For example:
"John Doe", jdoe jhardy, hardyj
In the example above, the LDAP account
John Doeis mapped to the OpenVMS accountJDOEand the LDAP accountjhardyis mapped to the OpenVMS accounthardyj.Add the following directives to the OpenLDAP ACME agent configuration file:
mapping = local mapping_file = File-Specification-of-Mapping-FileFor example:
mapping = local mapping_file = SYS$COMMON:[SYS$STARTUP]LDAP_USER_DB.TXT
Restart the ACME server via the following command:
$ SET SERVER ACME/RESTART
Further updates to the local username mapping file can be dynamically applied without restarting the ACME server using the LDAP_LOAD_LOCALUSER_DATABASE utility. The utility accepts two parameters:
The file specification of the mapping file. This parameter is required and must be the same file specified by the "mapping_file" directive of the applicable OpenLDAP ACME agent configuration file.
The domain name. This parameter is optional when the "domain" directive is not included in the OpenLDAP ACME agent configuration file. Otherwise, specify the same domain name as specified in the OpenLDAP ACME agent configuration file. For example:
$ load_ldapuser_db == "$LDAP_LOAD_LOCALUSER_DATABASE.EXE" $ load_ldapuser_db SYS$COMMON:[SYS$STARTUP]LDAP_USER_DB.TXT $ load_ldapuser_db SYS$COMMON:[SYS$STARTUP]LDAP_USER_DB_US.TXT US $ load_ldapuser_db SYS$COMMON:[SYS$STARTUP]LDAP_USER_DB_EMEA.TXT EMEA
4. Restrictions
This section lists the restrictions associated with the OpenLDAP ACME agent.
4.1. Password Synchronization
The password specified by an externally authenticated user is typically validated against the password stored on the LDAP directory server, but some OpenVMS applications do not support external authentication and instead authenticate the user based on their OpenVMS account credentials (stored in SYSUAF.DAT).
During external authentication, if the user's password stored on the LDAP directory server is different from their OpenVMS account password but is still a valid OpenVMS password, the OpenVMS account password of that user is set to be the same as the password stored on the directory server, so that they remain synchronized when possible.
VSI recommends setting the PWDMIX flag on OpenVMS accounts of externally authenticated users, as this retains the case of the password and significantly expands the list of special characters allowed in a password. For more information, see the output from:
$ HELP SET PASSWORD
Enabling the PWDMIX flag on externally authenticated accounts greatly increases the odds that a user's OpenVMS account password remains synchronized with their LDAP directory account password. This allows the user to access the OpenVMS host using one password, even for applications that do not support external authentication, such as Multinet Secure Shell (SSH) Server.
If a user has been externally authenticated, the DCL command SET
PASSWORD sends the password change request to the LDAP directory
server and, if the request completes successfully, changes the user's OpenVMS
account password.
Password synchronization can be disabled for a specific user or for all the users on the system.
4.2. Username and Password Restrictions
The OpenVMS SYSTEM account cannot use External Authentication. If a user enters SYSTEM at the Username prompt, the user is always mapped only to the SYSTEM account in SYSUAF.DAT.
If the user is not externally authenticated during the session, the DCL command
SET PASSWORDchanges only the password of the user's OpenVMS account.If the "port_security" directive is set to NONE, externally authenticated users cannot change their Active Directory (LDAP) account password. Active Directory LDAP servers require an encrypted connection for password changes.
Password modifications are made to the standard userPassword attribute or Active Directory's unicodePwd attribute. The ldap_modify "replace" or "remove-old/add-new" semantics for password modifications can be configured to support a variety of directory servers based on user requirements.
The following LDAP password policy client controls are supported to warn users of password expiration events:
Netscape "password has expired" "2.16.840.1.113730.3.4.4"
Netscape "password expiration warning" "2.16.840.1.113730.3.4.5"
Note
Netscape controls are supported by Netscape Directory Server, Netscape/Sun iPlanet and Red Hat/Fedora Directory Server.
Password policy client controls other than the Netscape controls mentioned above are not supported.
Password expiration warnings will not be seen during OpenVMS login when using directory server software that does not support Netscape password policy client controls, such as Active Directory and Novell eDirectory.
Characters used in usernames and passwords are restricted to the 8-bit ISO 8859-1 (Latin-1) character set. UTF-8 support is not included in this release.
Active Directory password changes are restricted to the 7-bit ASCII subset of the ISO 8859-1 (Latin-1) character set in this release. The reason for this restriction is that Active Directory expects UTF-8 character strings when updating the unicodePwd attribute.
4.3. Mapping Restrictions
When executing DECnet operations, such as DECnet copy, users must specify their OpenVMS username and password.
LDAP user accounts may not be mapped to the OpenVMS SYSTEM account. If a user's LDAP account is explicitly mapped to the OpenVMS SYSTEM account, the mapping does not occur and the user receives an
%ACME-E-FAILURE, operation failureerror when attempting to authenticate. The SYS$MANAGER:ACME$SERVER.LOG file contains:-ACME_-I-TRACE, MESSAGE FROM THE MESSAGE FILE: The user name maps to SYSTEM
5. Troubleshooting
5.1. OpenLDAP ACME Agent Processing
This section documents the expected behavior when the OpenLDAP ACME agent is operational.
The output from the SHOW SERVER ACME command shows the OpenLDAP
ACME agent in an active state and the
OPENLDAP
ACME Standard V2.6-6A identification. For
example:
ACME Information on node NODE1 26-MAR-2021 22:05:28.13 Uptime 0 00:00:50 ACME Server id: 7 State: Processing New Requests Agents Loaded: 2 Active: 2 Thread Maximum: 1 Count: 1 Request Maximum: 834 Count: 0 ACME Agent id: 1 State: Active Name: "VMS" Image: "DISK$I64V842L1SYS:[VMS$COMMON.SYSLIB]VMS$VMS_ACMESHR.EXE;1" Identification: "VMS ACME built 20-SEP-2006" Information: "No requests completed since the last startup" Domain of Interpretation: Yes Execution Order: 1 ACME Agent id: 2 State: Active Name: "LDAP-STD" Image: "DISK$I64V842L1SYS:[VMS$COMMON.SYSLIB]LDAPACME2$LDAPSTD_ACMESHR.EXE;1" Identification: "OPENLDAP ACME Standard V2.6-6A" Information: "ACME_LDAP_DOI Agent is initialized" Domain of Interpretation: Yes Execution Order: 2
SYS$MANAGER:ACME$START.LOG contains information similar to the following:
$ SET NOON
$ VERIFY = F$VERIFY(F$TRNLNM("SYLOGIN_VERIFY"))
%DCL-I-SUPERSEDE, previous value of LDAPACME$INIT has been superseded
SYSTEM job terminated at 26-MAR-2021 22:05:15.71
Accounting information:
Buffered I/O count: 419 Peak working set size: 5968
Direct I/O count: 94 Peak virtual size: 177888
Page faults: 1296 Mounted volumes: 0
Charged CPU time: 0 00:00:00.07 Elapsed time: 0 00:00:36.11SYS$MANAGER:ACME$SERVER.LOG contains information similar to the following:
%ACME-I-LOGOPEN, logfile opened on 26-MAR-2021 22:04:39.66
Under normal working conditions, the following LDAP communication occurs between
the VSI OpenLDAP ACME agent and the chosen LDAP directory server when a user is
externally authenticated. After the user specifies their username at either the
Username: prompt or the Login: prompt, the following
happens:
OpenVMS LDAP client, if necessary, uses a DNS Type A query to resolve the server name specified for the "server" directive.
OpenVMS LDAP client establishes TCP session to LDAP server on port specified by "port" directive.
OpenVMS LDAP client binds to LDAP server using distinguished name (DN) specified by the "bind_dn" directive and password specified by the "bind_password" directive.
LDAP server returns an error if the bind credentials are invalid or other issues prevent a successful bind. If an error occurs, the user receives an error, and the login fails (the user is not prompted for a password). If the bind attempt is successful, processing continues.
OpenVMS LDAP client sends LDAP search request with search starting at the directory location specified by the "base_dn" directive, using the scope specified by the "scope" directive, and a filter consisting of the value specified by the "login_attribute" directive and the username specified by the user. For example, if
login_attribute = samaccountname, the "filter" directive is not specified, and the user enters a username ofJDOE, the search filter issamaccountname=JDOE.If the search fails, the LDAP Server returns an error and the login fails. If the search succeeds, the server returns all attributes of user's account.
OpenVMS LDAP client sends a search request for the user's account attribute "passwordExpirationTime".
If the LDAP server is an Active Directory server (which means that no such attribute exists in the Active Directory schema), the search returns 0 attributes (the "passwordExpirationTime" attribute is present in some other 3rd party LDAP server implementations).
OpenVMS LDAP client unbinds from the LDAP server and terminates the TCP session.
If no errors have occurred up to this point, the user is prompted for a password. After the user enters the password, the following happens:
OpenVMS LDAP client establishes TCP session to LDAP server on port specified by "port" directive.
OpenVMS LDAP client binds to LDAP server using the distinguished name of the user's LDAP account and the password specified by the user.
LDAP server sends either a bind success or failure (and reason code) message. If the bind succeeds, the user's credentials are valid and login processing continues. If the bind fails, an error is displayed, and the login attempt fails.
OpenVMS LDAP client unbinds from the LDAP server and terminates the TCP session.
5.2. Displaying Verbose Output
To display verbose output when restarting the ACME server, execute the following:
$ SET SERVER ACME/EXIT ! Or use /ABORT (if /EXIT hangs) $ SET SERVER ACME/START $ SET VERIFY $ @SYS$MANAGER:ACME$START $ SET NOVERIFY
5.3. ACME Server Log Files
Errors during ACME server startup are written to SYS$MANAGER:ACME$START.LOG. Errors during ACME server execution are written to SYS$MANAGER:ACME$SERVER.LOG.
5.4. OpenLDAP ACME Agent Start-up Issues
| PROBLEM |
System-wide login failures. Only a Console user can log in. The DCL command The SYS$MANAGER:ACME$SERVER.LOG file contains the messages: -ACME_-I-TRACE, MESSAGE FROM THE MESSAGE FILE: Read_config() failed ... ... -ACME-I-STATUSCODE, status = %X074AD832 NoteThe status code %X074AD832 equates to: $ EXIT %X074AD832 %ACME-E-INVPARAMETER, parameter selector or descriptor is invalid |
| CAUSE |
This behavior can occur if the LDAPACME$INIT logical name equates to a non-existent file. |
| TEMPORARY SOLUTION |
To resolve the system-wide login failures as quickly as
possible, enable only the
VMS
ACME agent by editing
SYS$MANAGER:ACME$START.COM and
commenting out the line that starts the OpenLDAP ACME agent.
Restart the ACME server using the command |
| SOLUTION |
Verify that the LDAPACME$INIT logical
name equates to an existing OpenLDAP ACME agent configuration
file. If you are using multi-domain support, verify that each
file in the LDPACME$INIT list exists.
If necessary, correct the definition of the
LDAPACME$INIT logical name and
restart the ACME server using the command |
| PROBLEM |
Server-wide login failures. Only a Console user can log in. The DCL command The SYS$MANAGER:ACME$START.LOG file contains: %ACME-E-NOSUCHDOI, the domain of interpretation does not exist |
| CAUSE |
The AGENT_LIST symbol definition in SYS$MANAGER:ACME$START.COM has been modified but contains an invalid ACME agent name. For example: $ SEARCH/NUMBER SYS$MANAGER:ACME$START.COM AGENT_LIST
76 $ AGENT_LIST = "VMS,LDAP"
The correct name of the OpenLDAP ACME agent is LDAP-STD (not LDAP). |
| SOLUTION |
It is not necessary to modify the AGENT_LIST symbol to start
the OpenLDAP ACME agent. Reset the AGENT_LIST symbol in
SYS$MANAGER:ACME$START.COM to a
null value (""). Restart the ACME server using the command
|
| PROBLEM |
System-wide login failures. Only a Console user can log in. The SYS$MANAGER:ACME$SERVER.LOG file contains: -ACME_-I-TRACE, MESSAGE FROM THE MESSAGE FILE: Updating LocalLdap mapfile is failed |
| CAUSE |
The file specified by the "mapping_file" directive does not exist. |
| SOLUTION |
Correct or comment out the "mapping_file" directive in the
OpenLDAP ACME agent configuration file. Restart the ACME server
using the command |
| PROBLEM |
After starting the ACME server, The SYS$MANAGER:ACME$START.LOG file contains: Please ensure the following logical is defined /SYSTEM/EXECUTIVE_MODE LDAPACME$INIT |
| CAUSE |
The required LDAPACME$INIT system logical name does not exist or is not defined as an EXECUTIVE_MODE system logical name. |
| SOLUTION |
Correctly define the LDAPACME$INIT logical name (with
qualifiers |
| PROBLEM |
After the OpenVMS host is rebooted, external authentication no longer works. |
| CAUSE |
Verify that the OpenLDAP ACME agent is active ( |
| SOLUTION |
Restart the ACME Server and update the system startup procedures to execute the following command: $ SET SERVER ACME/RESTART |
5.5. OpenLDAP ACME Agent Operating Issues
If external authentication using the OpenLDAP ACME agent has been functioning
normally but unexpectedly begins failing, verify that the first LDAP directory
server specified in the "server" directive list is reachable using the
PING command. If the PING fails and the "server" directive
value consists of a list of servers, use the PING command to
determine whether the next server in the list is reachable. Continue this process
until an LDAP directory server responds. Modify the "server" directive in the
OpenLDAP ACME agent configuration file so that the reachable LDAP directory server
is first in the list and restart the ACME server using the command SET
SERVER ACME/RESTART.
Note
An LDAP server is considered reachable if it responds to any communication attempt by the OpenLDAP ACME agent. If a failure occurs while communicating with an LDAP server, the OpenLDAP ACME agent will not failover to the next server in the "server" directive list.
| PROBLEM |
External authentication is failing for all applicable users
(login using |
| SOLUTION |
If this is the first time the OpenLDAP ACME agent is being deployed, it is often beneficial to reconfigure the OpenLDAP ACME agent so that the SSL/TLS encryption is disabled and then enable SSL/TLS encryption again once the problem is resolved. To disable SSL/TLS encryption, use the following settings in the OpenLDAP ACME agent configuration file: port = 389 port_security = none CautionUsing It may be necessary to obtain a network trace while duplicating the failure for analysis by VSI support. |
| PROBLEM |
External authentication is failing for all applicable users with the following error: Operation failure; if logging is enabled, see details in the ACME$SERVER log file The SYS$MANAGER:ACME$SERVER.LOG file contains: -ACME_-I-TRACE, MESSAGE FROM THE MESSAGE FILE: Internal error. LDAP search operation failed. ldap_status:31(Invalid credentials) |
| CAUSE |
The value of the "bind_dn" and/or "bind_password" directive in the OpenLDAP ACME agent configuration file is incorrect. |
| SOLUTION |
Obtain the correct bind credentials and update the "bind_dn"
and/or "bind_password" directive in the OpenLDAP ACME agent
configuration file accordingly. Restart the ACME server using
the command |
| PROBLEM |
External authentication fails for all applicable users. The file SYS$MANAGER:ACME$SERVER.LOG contains: -ACME_-I-TRACE, MESSAGE FROM THE MESSAGE FILE: Internal error. LDAP search operation failed. ldap_status:fffffff7(Bad parameter to an ldap routine) |
| CAUSE |
The "server" directive in the OpenLDAP ACME agent configuration file contains a comma or other extraneous characters. |
| SOLUTION |
Remove the extraneous characters from the value of the
"server" directive in the OpenLDAP ACME agent configuration
file. When specifying a list of LDAP servers for the "server"
directive, delimit elements in the list with one or more space
characters. Do not use tabs, commas, etc. Restart the ACME
server using the command |
| PROBLEM |
External authentication fails for all applicable users. The SYS$MANAGER:ACME$SERVER.LOG file contains: -ACME_-I-TRACE, MESSAGE FROM THE MESSAGE FILE: Internal error. LDAP search operation failed. ldap_status:ffffffff(Can't contact LDAP server) |
| CAUSE |
The "server" directive in the OpenLDAP ACME agent configuration file contains a list of servers that are delimited by a Tab character. |
| SOLUTION |
Replace all Tab characters with one or more space characters
in the value of the "server" directive in the OpenLDAP ACME
agent configuration file. When specifying a list of LDAP servers
for the "server" directive, delimit elements in the list with
one or more space characters. Do not use tabs, commas, etc.
Restart the ACME server using the command |
| PROBLEM |
External authentication fails for all applicable users. The SYS$MANAGER:ACME$SERVER.LOG file contains: -ACME_-I-TRACE, MESSAGE FROM THE MESSAGE FILE: Internal error. LDAP search operation failed. ldap_status:8(Strong(er) authentication required) |
| CAUSE |
The LDAP directory server does not allow a simple bind over an unencrypted session. |
| SOLUTION |
Configure the OpenLDAP ACME agent to use an option for the
"port_security" directive other than NONE. See the options for
the "server" directive in Appendix A, "Configuration Directives".
Restart the ACME server using the command |
| PROBLEM |
External authentication fails for one user (but not other externally authenticated users). |
| CAUSE |
The user's OpenVMS account does not have the EXTAUTH flag set or the user's LDAP username is not identical to the user's OpenVMS username and no username mapping exists. |
| SOLUTION |
Verify that the user's OpenVMS account has the EXTAUTH flag. For example: $ MCR AUTHORIZE SHOW/PAGE username
If necessary, set the EXTAUTH flag on the user's OpenVMS account: $ MCR AUTHORIZE MODIFY username /FLAG=EXTAUTH
If the user's LDAP username is not identical to their OpenVMS username, the user's LDAP username must be explicitly mapped. See Section 3, ''Username Mapping'' for more information. |
6. Set Password Issues
| PROBLEM |
The DCL command %ACME-F-CONTACTSYSMGR, requested operation has failed; contact the system manager |
| CAUSE |
The VSI TCP/IP Services for OpenVMS SSH
Server is not configured to use |
| SOLUTION |
On systems running VSI TCP/IP Services
for OpenVMS, to allow externally authenticated users connecting via
the TCP/IP Services SSH server to change their LDAP account password
by using the DCL command $ DEFINE/SYSTEM TCPIP$SSH_SERVER_USE_LOGINOUT 1 $ @SYS$STARTUP:TCPIP$SSH_SHUTDOWN $ @SYS$STARTUP:TCPIP$SSH_STARTUP WarningStopping the SSH Server will result in termination of all SSH sessions. Consider using a TELNET or a DECnet login session to restart the SSH Server (or use the system Console). |
| PROBLEM |
The DCL command %ACME-F-FAILURE, operation failure; if logging is enabled, see details in the ACME$SERVER log file The SYS$MANAGER:ACME$SERVER.LOG file contains: -ACME_-I-TRACE, MESSAGE FROM THE MESSAGE FILE: Error returned from LDAP while setting password:x35, DSA is unwilling to perform |
| CAUSE |
The "port_security" directive in the OpenLDAP ACME agent configuration file is set to NONE. Password changes by externally authenticated users are allowed by the LDAP directory server only when the LDAP communication is secure (using SSL/TLS). |
| SOLUTION |
Modify the OpenLDAP ACME agent configuration to use one of the TLS option values for the "port_security" directive, as documented in Appendix A, "Configuration Directives". |
| PROBLEM |
The DCL command
SET PASSWORD returns the
message
**** The new password was not accepted ****and the user is prompted again for a new password. The SYS$MANAGER:ACME$SERVER.LOG file contains the message: -ACME_-I-TRACE, MESSAGE FROM THE MESSAGE FILE: acmekcv$cb_queue_dialogue() failed to display LDAP_CONSTRAINT_VIOLATION while setting passwd |
| CAUSE |
The new password does not meet the password policy requirements (i.e., minimum password length, password history, etc.) set on the LDAP directory server. |
| SOLUTION |
Set a new password that complies with the password policy. |
| PROBLEM |
The DCL command %ACME-F-FAILURE, operation failure; if logging is enabled, see details in the ACME$SERVER log file The SYS$MANAGER:ACME$SERVER.LOG file contains the message: -ACME_-I-TRACE, MESSAGE FROM THE MESSAGE FILE: Error returned from LDAP while setting password:x32, Insufficient access |
| CAUSE |
The "password_type" directive in the OpenLDAP ACME agent configuration file is not set to "active-directory". |
| SOLUTION |
Set the "password_type" directive in the OpenLDAP ACME agent configuration file to the value "active-directory" and restart the ACME server using the command: $ SET SERVER ACME/RESTART |
A. Configuration Directives
The following table lists the OpenLDAP ACME agent directive names and configuration details.
| Directive | Configuration Details |
|---|---|
| server |
This is a mandatory directive. Specify the DNS host names or IP addresses of one or more LDAP directory servers. Use one or more space characters between the server names or IP addresses (do not use commas or tabs to delimit). For example: server = dc1.corp.com dc2.corp.com 10.1.11.111 The OpenLDAP ACME agent tries to connect to the first server in the list. If the target server is unreachable, the next server is attempted. This process repeats until the list is exhausted. If the list contains more than one server, note the following:
|
| port |
This is a mandatory directive. Specify the LDAP TCP port number that the directory servers listen on. Default value is 389 (the standard, insecure LDAP port). Set the value to 636 to use the standard, secure LDAP port (LDAPS). |
| port_security |
Specify the minimum level of encryption required for communications over the LDAP port specified by the "port" directive. If a stronger encryption method than the one specified can be negotiated with the server, the stronger method will be used. Possible values are:
Values for LDAPS options (when using "port = 636"):
Values for StartTLS options (when using "port = 389"):
|
| bind_dn |
This is a mandatory directive. Specify the distinguished name (DN) of an LDAP directory server account that is created for and used by the OpenLDAP ACME agent to bind to and search the directory server. The "bind_dn" and "bind_password" directives provide the credentials used to bind (authenticate) to the directory servers. If the directory server is an Active Directory domain controller, a domain administrator may obtain the distinguished name of an OpenLDAP ACME agent user account using either of the following methods:
Set the "bind_dn" directive to the distinguished name displayed. |
| bind_password |
This is a mandatory directive. Specify the password for the account specified by the "bind_dn" directive. Specify the password using the correct case, but do not enclose it in quotes. |
| bind_timeout |
Specify a timeout value in seconds, which defines the maximum number of seconds the OpenLDAP ACME agent will wait for a response to a bind request before abandoning the attempt. By default, if the target directory server is not reachable, each bind request to a directory server can take as long as 75 seconds to timeout (TCPIP default connection establishment timeout). If multiple servers are specified in the "server" directive value, the user login session (i.e., a TELNET session) may expire before the OpenLDAP ACME agent is able to contact a working directory server. Use the "bind_timeout" directive when listing multiple servers in the "server" directive. For example, if the "server" directive list consists of 3 servers and the "bind_timeout" directive is set to three seconds, the overall timeout period is approximately 9 seconds. |
| login_attribute |
This is a mandatory directive. Specify the LDAP schema attribute that contains the username for login purposes. For Active Directory LDAP servers, this must be set to "samaccountname". For OpenLDAP servers, the attribute name is often "uid" but may be different in your configuration. |
| base_dn |
This is a mandatory directive. Specify the distinguished name of an LDAP directory element on the directory server where the search for a user account begins. The LDAP users are stored in a tree structure in the directory
server. The user entries must be present under the specified
"base_dn" tree element as sub-tree elements. The OpenLDAP ACME agent
will search for matching entries based on the attribute specified by
the "login_attribute" directive. To search the entire directory
tree, specify the distinguished name of the domain. For example, if
the domain name is base_dn = DC=corp,DC=com |
| scope |
Indicates the set of entries at or below the LDAP directory location specified by the "base_dn" directive that may be considered potential matches for a search request. Valid keywords? are:
|
| filter |
Specify an LDAP search filter. The default value is no filter. |
| search_timeout |
Specify the number of seconds before an LDAP search request times out. The default is 20 seconds. Use the "search_timeout" directive when listing multiple servers in the "server" directive (see the "bind_timeout" directive for more information). |
| mapping |
Specify the username mapping mechanism to use. There are three options (more information, see Section 3, ''Username Mapping''):
|
| mapping_attribute |
This directive is applicable only for global username mapping.
Specify the name of the schema attribute on the LDAP directory
server that will be used to specify username mapping data. For
example, to use the Description field of user accounts, specify
A newly created attribute on the directory server may also be created to store the username mapping data. This attribute should be an IA5 multi-valued string. |
| mapping_target |
This directive is applicable only for global username mapping. The
mapping_target is an arbitrary string of your choice that the
OpenLDAP ACME agent uses when searching for the user's OpenVMS
username in the field specified by the "mapping_attribute" value.
The format of the entry is
mapping = server mapping_attribute = description mapping_target = VMSUser To map a user's LDAP directory account to their OpenVMS account,
populate the Description field of the user's LDAP directory account
with the string VMSUser/jdoe No extraneous text may precede the "mapping_target" directive string or follow the username in the field specified by the "mapping_attribute" directive. Neither the "mapping_target" string nor the username are case-sensitive. |
| mapping_file |
This directive is applicable only for local username mapping. Specify the complete file specification of the text file used for mapping user accounts. Entries in the file use the syntax: LDAP-username, VMS-username where LDAP-username is the username of the user in the LDAP directory server. Changes to a username mapping file are not dynamic; however, the username mapping file can be reloaded without restarting the ACME Server with SYS$SYSTEM:LDAP_LOAD_LOCALUSER_DATABASE.EXE (or restart ACME Server). Comments (!) in the username mapping file are supported. Do not include the domain name as part of the Windows username in the username mapping file, even when using a multi-domain configuration. Enclose usernames containing spaces in quotes. For information on how to populate and load the contents of the username mapping file, see the included template file – SYS$STARTUP:LDAP_LOCALUSER_DATABASE.TXT_TEMPLATE. |
| domain |
This directive is applicable for multi-domain support. The name specified here should match the short domain name of the LDAP server's domain. The definition of the LDAPACME$INIT logical name determines the "default" domain. The domain specified in the configuration file, which corresponds to the first file in the list defined by LDAPACME$INIT, determines the "default" domain. Users in the "default" domain do not need to specify their login domain name as part of their username when logging into the OpenVMS host. However, users of the other domains must include the domain name specified by the "domain" directive as part of their username when logging into OpenVMS, using the syntax: domain\username For example, if the logical name LDAPACME$INIT is defined as: $ SHOW LOGICAL LDAPACME$INIT
"LDAPACME$INIT" = "SYS$COMMON:[SYS$STARTUP]LDAPACME$CONFIG-STD-US.INI"(LNM$SYSTEM_TABLE)
= "SYS$COMMON:[SYS$STARTUP]LDAPACME$CONFIG-STD-EMEA.INI"
And the configuration file
LDAPACME$CONFIG-STD-US.INI contains
When users in the EMEA domain login to the OpenVMS host, they must specify a username of EMEA\username, while users in the US domain do not need to (but may) specify the domain name (US) when logging in. The domain name specified is not case sensitive, must not contain any special characters, and must not be longer than 25 characters. |
| ca_file |
This directive is optional. Specify the complete specification of a file containing the
PEM-format public key of the certificate authority (CA) that signed
the certificate of the LDAP directory server. The OpenLDAP ACME
agent needs that public key to verify the LDAP server's certificate
(except when If the "server" directive lists multiple servers and the certificates of those servers were signed by different CAs, add the public key certificate information for each CA into the same file. For example: $ TYPE CACERTS.PEM -----BEGIN CERTIFICATE----- ....... CA 1 public key certificate in base64 encoded format ....... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ....... CA 2 public key certificate in base64 encoded format ....... -----END CERTIFICATE----- $ |
| password_type |
Specify one of the following values ("standard" is the default):
If you are using Windows Active Directory LDAP servers, specify
|
| password_update |
Specify one of the following values ("replace" is the default):
Applies only when the "password_type" directive is set to "standard". Some directory servers require the old password to be supplied when changing the userPassword attribute; others do not. |
B. Example Configurations
Example 1
The LDAP directory servers are Active Directory domain controllers named DC1.CORP.COM and DC2.CORP.COM. An Active Directory administrator has created a user account for the OpenLDAP ACME agent to use. The account has the following characteristics:
Distinguished name: CN=LDAP AUTH,OU=SvcAccts,DC=corp,DC=com
Password: &RvAy*7bXh@2Si
Password never expires.
Password cannot be changed.
The OpenLDAP ACME agent will also be configured to:
Use port 636, the secure LDAPS port.
Negotiate the version of TLS with the directory server.
Use local username mapping with the file SYS$COMMON:[SYS$STARTUP]LDAP_USER_MAPPING.TXT.
Begin each search at the top of the LDAP directory tree.
Search the entire directory.
The OpenLDAP ACME agent configuration file:
server = dc1.corp.com dc2.corp.com bind_timeout = 3 bind_dn = CN=LDAP AUTH,OU=SvcAccts,DC=corp,DC=com bind_password = &RvAy*7bXh@2Si port = 636 port_security = SSLTLS login_attribute = samaccountname base_dn = DC=corp,DC=com scope = sub password_type = active-directory mapping = local mapping_file = SYS$COMMON:[SYS$STARTUP]LDAP_USER_MAPPING.TXT
Example 2
The LDAP directory servers are Active Directory domain controllers named DC1.CORP.COM and DC2.CORP.COM. An Active Directory administrator has created a user account for the OpenLDAP ACME agent to use. The account has the following characteristics:
Distinguished name: CN=LDAP AUTH,OU=SvcAccts,DC=corp,DC=com
Password: &RvAy*7bXh@2Si
Password never expires.
Password cannot be changed.
The OpenLDAP ACME agent will be also configured to:
Use port 389, the insecure LDAP port, but secure it using the StartTLS protocol.
Negotiate the version of TLS with the directory server.
Use global username mapping.
Use the "description" field to store the mapped OpenVMS username, which will be preceded by string
VMSUser(separated by a slash).Begin each search at the top of the LDAP directory tree.
Search the entire directory.
The OpenLDAP ACME agent configuration file:
server = dc1.corp.com dc2.corp.com bind_timeout = 3 bind_dn = CN=LDAP AUTH,OU=SvcAccts,DC=corp,DC=com bind_password = &RvAy*7bXh@2Si port = 389 port_security = StartTLS login_attribute = samaccountname base_dn = DC=corp,DC=com scope = sub password_type = active-directory mapping = server mapping_attribute = description mapping_target = VMSUser
Example 3
Configure the OpenLDAP ACME agent to support logins for users from two Active Directory domains named US.CORP.COM and EMEA.CORP.COM. The US.CORP.COM domain contains domain controllers U1.US.CORP.COM and U2.US.CORP.COM while the EMEA.CORP.COM domain contains domain controllers E1.EMEA.CORP.COM and E2.EMEA.CORP.COM. The domain administrators have created a user account in both the US and EMEA domains for use by the OpenLDAP ACME agent.
The Active Directory account in the US domain has the following characteristics:
Distinguished name: CN=VMSLDAP,CN=Users,DC=US,DC=corp,DC=com
Password: bt!w$AAdvPn6AW
Password never expires.
Password cannot be changed.
The Active Directory account in the EMEA domain has the following characteristics:
Distinguished name: CN=VMSLDAP,CN=Users,DC=EMEA,DC=corp,DC=com
Password: Sn5Yf&!JT5fQ6A
Password never expires.
Password cannot be changed.
The OpenLDAP ACME agent will also be configured to:
Use port 636, the secure LDAPS port.
Negotiate the version of TLS with the directory server.
Use local username mapping with a separate mapping file for each domain:
US domain: SYS$COMMON:[SYS$STARTUP]LDAP_USER_MAPPING_US.TXT
EMEA domain: SYS$COMMON:[SYS$STARTUP]LDAP_USER_MAPPING_EMEA.TXT
Begin each search at the top of the LDAP directory tree.
Search the entire directory.
Two separate OpenLDAP ACME agent configuration files are required, one for each domain. The configuration file for the US domain is as follows:
domain = US server = u1.us.corp.com u2.us.corp.com bind_timeout = 3 bind_dn = CN=VMSLDAP,CN=Users,DC=us,DC=corp,DC=com bind_password = bt!w$AAdvPn6AW port = 636 port_security = SSLTLS login_attribute = samaccountname base_dn = DC=us,DC=corp,DC=com scope = sub password_type = active-directory mapping = local mapping_file = SYS$COMMON:[SYS$STARTUP]LDAP_USER_MAPPING_US.TXT
The configuration file for the EMEA domain is as follows:
domain = emea server = e1.emea.corp.com e2.emea.corp.com bind_timeout = 3 bind_dn = CN=VMSLDAP,CN=Users,DC=emea,DC=corp,DC=com bind_password = Sn5Yf&!JT5fQ6A port = 636 port_security = SSLTLS login_attribute = sAMAccountName base_dn = DC=emea,DC=corp,DC=com scope = sub password_type = active-directory mapping = local mapping_file = SYS$COMMON:[SYS$STARTUP]LDAP_USER_MAPPING_EMEA.TXT
In this example, the logical name LDAPACM$INIT must equate to both configuration files. For example, if the configuration file names for the US and EMEA domains, respectively, are:
SYS$COMMON:[SYS$STARTUP]LDAPACME$CONFIG-STD-US.INI SYS$COMMON:[SYS$STARTUP]LDAPACME$CONFIG-STD-EMEA.INI
Use the following command to define the LDAPACME$INIT logical name. Add this command to SYS$MANAGER:ACME$START.COM, so that the logical name is defined prior to starting the OpenLDAP ACME agent:
$ DEFINE/SYSTEM/EXECUTIVE_MODE LDAPACME$INIT - _$ SYS$COMMON:[SYS$STARTUP]LDAPACME$CONFIG-STD-US.INI, - _$ SYS$COMMON:[SYS$STARTUP]LDAPACME$CONFIG-STD-EMEA.INI
SYS$STARTUP:LDAPACME$CONFIG-STD.INI_TEMPLATE
The LDAP-based ACME agent that is integrated into the operating system.
Note that keywords are case-sensitive.