Assigning Netware rights via the command line


Here at the office we have a group in charge of assigning and maintain user and group rights and permissions to our various systems.  It’s nice not having to worry about that aspect of server administration. 

But I have an urgent need to have some eDirectoy group rights assigned to a specific directory on every Netware server in our Enterprise.  The group that controls user access is saying that they can’t meet my timeframe for getting these rights assigned, so I had to come up with my own solution.

My solution was to use Wolfgang Schreiber’s  lrights.exe utility to script assigning the rights command line style.  The syntax is:

LRights <path> <rights> /name=<trustee>

For example, to assign read and file scan rights to the .mygroup.OU.O user:

lrights \\server\volume\directory R F /Name=.mygroup.OU.O

This utility was written to support long path/file names, unlike Novell’s rights.exe utility.

Howto: Authenticate to eDirectory via the Novell Client, command line style


I have a backup script that runs on a Windows 2003 server that requires Novell client authentication.  Here’s how to authenticate to eDirectory via the command line, which means it’s scriptable!  The syntax is:

c:\windows\system32\LOGINW32.EXE  .user.ou.o /PWD password /CONT

Alternatively, you could map a drive to an eDirectory server (Netware, SLES Linux or Windows), which would force background authentication.  Here’s that syntax:


net use x: \\server\vol /user:.user.ou.o password


Creating eDirectory SSL certificates with alternate names to use across round robin DNS load balanced web servers


We have three internal Apache web servers that we use for Groupwise webaccess 7.0.3.  Each server will be accessed acrossed our intranet via round robin DNS at https://webaccess/gw/webacc for email.  When users currently access this URL they are getting Internet Explorer Security Alerts, stating:  

The name on the security cerrtificate is invalid or does not match the name of the site.  Do you want to proceed?
 
In order to fix this issue, I need to install SSL certificates on each individual server and configure Apache to use the new certificates.  I also needed to configure my web browser to trust the issuing Certificate Authority.
 
I chose to use our existing Novell Organizational CA to issue the certificates rather than purchase one from Verisign or other Trusted Root Certification Authority since these sites would only be accessed across the corporate intranet.
 
We had one additional requirement – each server still needed to be accessed via https at https://servername for Novell Remote Manager and iManager.  This meant the three servers had to have valid SSL certificates for multiple host names, i.e. both their actual name and the webaccess name.

The Environment

  • Three Netware 6.5.5 server running Apache 2.0.54 for Netware. Servers are named web1, web2, and web3
  • ConsoleOne 1.3.6f
  • Novell Certificate Server Snapin version 2.21 Build 28
  • Internet Explorer 6 web browser
 Creating the server SSL certificates
 
1.  Launch ConsoleOne
 
2.  Browse to the OU that holds the servers you wish to create certificates for.
 
3.  Right click on the server OU
 
4.  Select New – Object – NDSPKI:Key Material – OK
 
5.  Select the server name you want to create the certificate for, and give the certificate a meaningful name.  I named mine intwebaccessweb1
 
6.  Under Creation Method, select Custom – Next
 
7.  Select Organizational Certificate Authority will sign this certificate – Next
 
8.  Accept the defaults of 2048 bit key size, SSL or TLS type, and allow the private key to be exported – Next
 
9.  This is an important part – The subject name must match how you will be accessing your server over https for iManager and NRM.  Click the Edit button, then click the double arrow button to the right of the subject name.  This will move the .CN= portion of the name to the left side of the box.
Replace everything from .CN= to .OU= (or .O=) with the name you will be accessing your server with.  

Since I will be accessing my server at https://web1, I used .CN=web1.O=myOrg.  

If you will be accessing your server for iManager, NRM, or other non-shared services at https://www.yourdomain.com you would enter .CN=www.yourdomain.com.O=yourOrg

10.  Press OK  to accept the subject name.
 
11.  Change the validity period to what ever duration you would like your certificate to be valid for.  I selected maximum, which will make it good until the certificate for my Organizational CA expires.
 
12.  Press the Add Name button – here is where we specify our secondary name we want the SSL certificate to be valid for.
 
13.  Highlight the existing Directory name and press Delete.
 
14.  Click Create – DNS Name
 
15.  Specify the host name you will be sharing amongst your web servers.  This is sometimes referred to as a DNS Subject Alternate Name
 
I specified webaccessOKOKNext.  Again, if you will be accessing your shared web server at https://www.yourdomain.com, specify http://www.yourdomain.com as the DNS name.
 
16.  Select to associate this server certificate with Your organization’s certificate – NextFinish
 
I then repeated these steps for my other two web servers, replacing in steps 5 and 9 ‘web1’ with ‘web2’ and ‘web3’, which are the real host names of my other web servers.  Step 15 remains the same, since this is the common name I want all three web servers to respond to.
 
Configuring Apache to use the new SSL certificates
 
1.  On the first web server edit the sys:\Apache2\conf\httpd.conf file.
 
2.  Replace the line reading
 
SecureListen 443 “SSL CertificateDNS”
 
with
 
SecureListen 443 “intwebaccessweb1”
 
where intwebaccessweb1 is the name of the web server you created in the section above.  Note that the certificate object will be displayed in ConsoleOne as ‘intwebaccessweb1 – web1’.  Do not include the hyphen and server name, i.e. ‘ – web1‘ in the SecureListen statement.
 
3.  Save the httpd.conf file
 
4.  On the web server console, run ap2webdn to unload Apache
 
5.  On the web server console run tc4stop to stop Tomcat
 
6.  On the web server console, run tckeygen to update the keystore data.  Switch to the logger screen to verify the process completes before proceeding to the next step.
 
7.  On the web server console, run tomcat4 to load Tomcat.  Switch to the logger screen to verify the process completes before proceeding to the next step.
 
8.  On the web server console, run ap2webup to load Apache.
 
9.  Browse to the shared name of your web server, https://webaccess/gw/webacc in my case.  Note that you will still receive the Security Alert pop-up until you install the Organizational CA certificate into your Trusted Root Certification Authorities store, which I’ll document tomorrow.
 
10.  On the Security Alert pop-up, you should see the message stating The security certificate has a valid name matching the name of the page you are trying to view.
 
This means your SSL certificate is valid for the host name shared by the web servers.
 
11.  Browse to https://web1, which is the host name of one of your web servers defined in step 9 of Creating the server SSL certificates.  
 
Again, you’ll still receive the Security Alert until you install the Organizational CA certificate into your Trusted Root Certification Authorities store, but you should see The security certificate has a valid name matching the name of the page you are trying to view.  This means your SSL certificate is valid for the host name for this specific web server.
 
Here are the instructions for installing the Organizational CA certificate into your browser’s Trusted Root Certification Authorities store, which is the final thing we’ll need to do to rid ourselves of the Internet Explorer’s Security Alerts.

“Error -618 – The Server has detected an inconsistent database” when trying to view an eDirectory object’s properties in ConsoleOne


When trying to view a Groupwise Distribution List in ConsoleOne, I received the following error:
 
-618  The Server has detected an inconsistent database. Usually this means that the number of entries in a container does not match the number stored in the container’s entry
 
This message indicates an eDirectory problem.  To repair this object, I did the following:
 
1) Launched a web browser and logged into iMonitor on the master replica server at:

https://nds-nw1:8009/nds/

2) Browsed to and selected the problematic .allstaff.groupwise.corp Distribution List object
3) Clicked the monkey wrench icon to perform a single object repair
4) Selected repair single object –> Start repair
 
After performing these steps the -618 error persisted, so I logged into iMonitor on the eDirectory R/W replica at:
 
 
I performed steps 2-4 on the R/W replica and I was then able to view the Distribution List membership and verified C316 was listed as a member.  The -618 error was gone.

Howto: Find eDirectory SSL certificates and determine when they expire


I’ve recently experienced some challenges releated to expired eDirectory SSL certificated on my Netware and OES servers.  I came across TIDs 10098567 and 3814248, which describe methods of querying eDirectory via LDAP to find expired or soon to be expired certificates.  

I was going to give these methods a try until I realized they required adding attributes to eDirectory by extending the schema.  I’m not wanting to rock the boat right now, so doing anything that could potentially have a negative impact on network availability is something I want to avoid.

Here’s the manual way I searched for eDirectory certificates.  I verified their expiration dates manually, which is a boring and repetative (but safe) procedure. 
  1. Launch ConsoleOne
  2. Highlight the NDS tree to search
  3. From the Edit menu select Find
  4. Check the Search Subcontainers check box
  5. Set Find Type: Advanced
  6. Select [Object Type] = NDSPKI:Key Material
  7. Press Find
  8. Right click on a certificate object and select Properties
  9. On the Certificates tab, Select Public Key Certificate.  Note the expiration date.
 Also see TID 7000075, which states OES SSL certificates expire two years after installation by default.

novell-scrub.sh – use when you really, really, really want to get rid of eDirectory


Earlier I detailed a method for re-installing eDirectory from a difficult SLES 10 SP2 server.  Sometimes even this method doesn’t work, and you have to resort to using novell-scrub.sh to totally remove eDirectory from the server before it can be reinstalled.

WARNING:  THIS SCRIPT WILL REMOVE EDIRECTORY AND ALL IT’S COMPONENTS (CONSOLEONE, GROUPWISE, ETC) SO USE WITH EXTREME CAUTION.  YOU NEED TO UNDERSTAND THE RAMIFICATIONS OF USING THIS SCRIPT IN FULL.

The script will remove all packages and configuration for Novell products. It does NOT deconfigure anything. In the case of eDirectory, you will want to remove the NCP Server object from the tree, once eDirectory has been removed from the UNIX system

TID 2969195 explains how to install and use novell-scrub.sh:

Installation Procedure:

1) Download the tarred compressed file to your UNIX system.

2) Extract the file using the following command:

gzip -dc ./scrub_1_2_12.tgz | tar xvf –

3) Change to the ./scrub_1_2_12 directory where the ./novell-scrub.sh script was extracted.

4) Type ./novell-scrub.sh [options] as the root user.

The script can take the following options:

-s –show
Show which hardcoded Novell packages are installed and not installed on the system.

-d –dyn-show
This is the same as –show but Novell packages are found dynamically.

-i –dibsonly
Removes only DIB files and does not remove packages.

-n –noansi
Disable the use of ANSI colours.

–IAgreeToTheTermsAndConditions
Accepts the agreement and does not prompt for “I Agree”.

-h –help
Displays this command line help.

Error reinstalling eDirectory on SLES 10: Installing NDSserv… Unable to install


Error received when I was reinstalling eDirectory on SLES 10:

Installing NDSserv… Unable to install NDSserv-8-7-3-37.i386.rpm, exiting

To fix this error: 

1) Rename the /usr/lib/nds-modules directory /usr/lib/nds-modules.old:

mv /usr/lib/nds-modules /usr/lib/nds-modules.bad
 
2) re-run  ./nds-install
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
3) copy original /usr/lib/nds-modules.old files back to /usr/lib/nds-modules after installation
completes:

cp /usr/lib/nds-modules.bad/* /usr/lib/nds-modules/