Slash Net

  • Increase font size
  • Default font size
  • Decrease font size
Home Etcetera Other Articles Installing a Webmail System Based on Horde on IIS - Page 2

Installing a Webmail System Based on Horde on IIS - Page 2

E-mail Print PDF
User Rating: / 0
PoorBest 
Article Index
Installing a Webmail System Based on Horde on IIS
Page 2
Page 3
All Pages

APPENDIX A: SECURING HORDE USING SSL

Sending plaintext usernames and passwords is not too healthy from a security standpoint, so implementing SSL is a wise idea. For right now, Dylan Beattie's advice on setting up a self-signed certificate on IIS 5 largely applies to IIS 6. Instead of try to reproduce that effort, I've copied that page here in case that site ever goes down. Full credit goes to Dylan, and this was copied per the GNU license listed. Also, note that in your webmailconfighorde.php file, you may want to set the use_ssl parameter to 1 (always generate SSL URLs) after you confirm that SSL works.

One last thing; under IIS management, you can set up a site or directory to use SSL only. If you only want SSL allowed for webmail (generally a good idea), be sure to configure this. Also be aware that you may need to configure firewalls and such to allow for SSL/HTTPS communication; this is by default done on port 443.

In a nutshell, here's the steps to follow:
1. Generate and install your certificate (see below).
2. Set Horde to use SSL only URLs.
3. Set IIS to use SSL on your webmail directory.
4. Check firewalls to make sure they allow port 443 to work.
5. Login to your webmail with a https:// URL, not http://.

Below is Dylan's guide. Please note that it was made originally for IIS5, but I found it was largely applicable to 6.

Overview

This document describes how to sign your own SSL certificate requests using the OpenSSL toolkit and use these self-signed certificates to allow HTTPS connections to Microsoft's IIS 5 web server (as supplied with Windows 2000).

If you know what a self-signed certificate is and understand the concept of a certificate authority, great. If not, this should still work but you'll have no idea what you've acheived when it does :)

Command transcripts are shown in monospaced type, with the bits you type shown in bold. Bits in italics are comments to explain what's going on and what you should be doing.


Disclaimer

I'm by no means a security expert, and I'm not an OpenSSL guru. If you find these notes helpful, great - if you don't, there's plenty of more detailed resources out there which will answer your questions if you take the time to read them properly. Contributions and testimonials are welcome; questions will be read and possibly answered but I'm making no guarantees, and please don't rely on this information for anything important. I don't know whether it's the most secure or most effective way of doing this, but it works and that's good enough for me. If it's not good enough for you, don't use it :)

These instructions were tested using OpenSSL 0.9.6g (v1.0 Final) on Windows 2000 Server running Service Pack 3.


Ingredients

Walkthrough

Install and configure the OpenSSL toolkit

  1. Get OpenSSL from the address above, and run the installer, accepting the defaults. These instructions assume OpenSSL is installed in C:\OpenSSL.
  2. Add C:\OpenSSL\bin to your system path (Control Panel, System, Advanced, Environment Variables, System Variables) - this isn't strictly necessary but it makes things a lot easier.
  3. Create a working directory - here, we'll use c:ssl as our working folder.
  4. Download this copy of openssl.conf to your working folder. (Note: I have no idea what most of the options in this file mean. I just hacked it around until it worked...)
  5. Set up the directory structure and files required by OpenSSL:
    		C:\ssl>md keys

    C:\ssl>md requests

    C:\ssl>md certs

  6. Create the file database.txt - an empty (zero-byte) text file. This can be done using the 'touch' command if you have it (it's a Unix tool not available on Windows by default, but you might have one lying around), or by creating an empty file manually:
    		c:\ssl>copy con database.txt

    ^Z


    C:\ssl>



    MS-DOS veterans will recognise this particular invocation. We're copying from CON (the console) to a file called database.txt, and that's a Control-Z end-of-file character on the first line. This should produce a zero-byte file called c:ssldatabase.txt
  7. Create the serial number file serial.txt. This is a plain ASCII file containing the string "01" on the first line, followed by a newline. Again, we can use a little bit of ancient DOS magic:
    		C:\ssl>copy con serial.txt

    01

    ^Z


    C:\ssl>
    to achieve the desired effect. (That's keystrokes zero, one, return, control-Z, return)

Set up a Certificate Authority (CA)

  1. First, we create a 1024-bit private key to use when creating our CA.:
    			C:\ssl>openssl genrsa -des3 -out keys/ca.key 1024

    Loading 'screen' into random state - done

    warning, not much extra random data, consider using the -rand option

    Generating RSA private key, 1024 bit long modulus

    ...........++++++

    ..................++++++

    e is 65537 (0x10001)

    Enter PEM pass phrase: - choose a memorable pass phrase to use for this key

    Verifying password - Enter PEM pass phrase: - type your pass phrase again for verification



    The pass phrase will be requested whenever you use this certificate for anything, so make sure you remember it. This will create a file called c:sslkeysca.key, containing our certificate authority private key.
  2. Next, we create a master certificate based on this key, to use when signing other certificates:
    			C:\ssl>openssl req -config openssl.conf -new -x509 -days 1001 -key keys/ca.key -out certs/ca.cer

    Using configuration from openssl.conf

    Enter PEM pass phrase: - type your passphrase here.

    You are about to be asked to enter information that will be incorporated

    into your certificate request.

    What you are about to enter is what is called a Distinguished Name or a DN.

    There are quite a few fields but you can leave some blank

    For some fields there will be a default value,

    If you enter '.', the field will be left blank.

    -----

    Country Name (2 letter code) []:

    State or Province Name (full name) []:

    Locality Name (eg, city) []:

    Organization Name (eg, company) []:

    Organizational Unit Name (eg, section) []:

    Common Name (eg, your websites domain name) []:

    Email Address []:

    C:\ssl>



    This will create our CA certificate and store it as c:sslcertsca.cer
  3. (optional) Finally, we export our CA certificate in PKCS12 format - this will allow Windows users to import the PKCS12 certificate into their Trusted Root Store, so they don't get warning messages every time they use one of our certificates.

    UPDATE (2004-08-08): Apparently doing this includes the private key with the PKCS12 file, which means anyone with the PKCS12 cert can forge certificates from our CA. You should be able to import the ca.cer file directly into your browser instead. I haven't tested this yet, but in the meantime, be warned. (I already told you I didn't know what I was doing...) Thanks to Baahl for this heads-up.

    			C:\ssl>openssl pkcs12 -export -in certs/ca.cer -inkey keys/ca.key -out certs/ca.p12

    Loading 'screen' into random state - done

    Enter PEM pass phrase:

    Enter Export Password: - users will need this password when importing the certificate

    Verifying password - Enter Export Password:

    C:\ssl>

    This will create c:sslcertsca.p12, which can be imported via Internet Options -> Content -> Certificates on most Windows computers.

Create an IIS Certificate Request

This is described in detail elsewhere on the web - see Microsoft Knowledge Base Article Q228821. You should end up with a file called certreq.txt.

Sign the Certificate Request

  1. Copy the certreq.txt file into c:\ssl\requests
  2. Sign the request
    				C:\ssl>openssl ca -policy policy_anything -config openssl.conf -cert certs/ca.cer -in requests/certreq.txt -keyfile keys/ca.key -days 360 -out certs/iis.cer

    Using configuration from openssl.conf

    Loading 'screen' into random state - done

    Enter PEM pass phrase:

    Check that the request matches the signature

    Signature ok

    The Subjects Distinguished Name is as follows

    commonName :PRINTABLE:'myCommonName'

    organizationalUnitName:PRINTABLE:'myOrganisationalUnit'

    organizationName :PRINTABLE:'myOrganisation'

    localityName :PRINTABLE:'myLocality'

    stateOrProvinceName :PRINTABLE:'myProvince'

    countryName :PRINTABLE:'US'

    Certificate is to be certified until Feb 2 01:13:14 2004 GMT (360 days)



    Sign the certificate? [y/n]:y



    1 out of 1 certificate requests certified, commit? [y/n]y



    Write out database with 1 new entries

    Data Base Updated



    C:\ssl>


    Let's just take a look at those command-line options in a bit more detail:
    • -policy policy_anything - specifies that we're using the 'policy_anything' policy from our openssl.conf file. This is a relaxed policy in which the name, country, etc. in the certificate don't need to match those used by the certification authority. Use -policy policy_match for a more restrictive CA.
    • -config openssl.conf - specifies we're reading our configuration from openssl.conf in the current directory.
    • -cert certs/ca.cer - specifies we're using our CA master certificate to sign the request.
    • -in requests/certreq.txt - the certificate request we're signing.
    • -keyfile keys/ca.key - the private key for our CA master certificate, which proves we're allowed to use it.
    • -days 360 - the time until the certficate will expire
    • -out certs/iis.cer - the file in which to place our newly-signed certificate
  3. Convert the signed certificate into x509 format for use with IIS:
    				C:\ssl>openssl x509 -in certs/iis.cer -out certs/iisx509.cer

    C:\ssl>

    This will leave the new certificate in c:sslcertsiisx509.cer - signed, sealed and ready to install!

Install the new certificate under IIS

Again, this is described elsewhere on the web - remember that the iisx509.cer file is our certificate response file, and the instructions in Knowledge Base article 228836 should make everything clear.



 

Add comment


Security code
Refresh


Buy Stuff!

WCPS Mentors
What's the secret to great speaking? Mentors. If you want to get ahead, you need a mentor too!

SN Amazon Store

Twitter Feed

SaulsLaws: Library book sale suckered me again, haha. Goodbye to my bookshelf space -- just about out now.

Newsflash

Men occasionally stumble over the truth, but most of them pick themselves up and hurry off as if nothing had happened. -Sir Winston Churchill