This article originally appeared in the April 1998 issue of
Sys Admin Magazine.
Acquiring and Installing a Server Certificate
Brian Tanaka
As the demand for "secure web browsing" grows so does the probability
that you'll need to administer an SSL-enabled web server. In this
article I will explain one critical element of configuring an
SSL-enabled web server: acquiring and installing a server
certificate.
Server Certificates and SSL
SSL is too complex to be explored in detail in a how-to article such as
this one. However, I will outline briefly the basic concepts. I
encourage you to refer to the resources available at the end of this
article.
If I use a web browser to view web pages I am not terribly concerned
about security. However, if I exchange sensitive data (such as credit
card information) with a web server I am very concerned about security.
Specifically, I want:
- to trust that I am exchanging my information with
the correct server rather than an impostor, and
- to know that the data is encrypted while in transit.
In cryptographic terms, I want "server authentication" and "data
confidentiality". SSL, or Secure Sockets Layer, is designed to provide
these two security features. (It addresses other security concerns too
but these are two of the most important.)
SSL-enabled web servers must have a server certificate. Roughly
stated, a server certificate is a form of digital identification and is
issued by a Certificate Authority (CA).
A server certificate requires a key pair. In "public key cryptography"
(which SSL uses) there are two digital keys: a public and a private
key. Together they form a key pair. What is encrypted with one key
only the other can decrypt. As its name implies, the public key can be
made publicly available. The private key must remain secret.
To summarize: SSL is intended to increase security between web clients
and web servers and you need a server certificate to use SSL.
To acquire a server certificate you need to:
- Generate a key pair and Certificate Signing Request (CSR) on your server
- Submit the CSR to a Certificate Authority (CA)
- Install the server certificate
- Enable SSL on your web server
I will explain these steps in the remainder of this article.
A Quick Word About Cost
Before you begin the process of acquiring a server certificate, please
note that the monetary cost is sometimes overlooked when planning to
use SSL. The CA will probably charge for their services. Research the
current cost of CA services and make sure the cost is within your
organization's budget. Also note that the costs are recurring.
Generating the Key Pair
You generate the key pair using the interface provided by
your web server software. Let's look at a specific example.
Example of Generating the Key Pair Using Netscape Enterprise Server
In this example, I am using Netscape Enterprise Server 3.0. If you need
more detail than what is provided in the steps below, please consult the
Netscape Enterprise Server documentation.
- Log in as root.
- cd to bin/admin/admin/bin in the server root directory.
- Run ./sec-key.
- You will be prompted for an alias name. The
alias will refer collectively to the key pair and the
certificate file (allowing you to operate on them as a set and
also allowing you to have multiple sets). The most common choice
is to name it after the server. So, in my example, I
name it "gfibbers". My key pair file will be
/alias/gfibbers-key.db.
- In the next step you will be prompted to type keystrokes for a while
in order to add some unpredictability to the random number used to
create your keys. Do so until the progess meter stops.
- Next you will be prompted for a password for the key pair file.
It is important to pick a good strong password. A strong
password will not contain any words from any language, will be
at least eight characters long, and will contain upper and
lowercase letters as well as non-alphabetic characters such as
punctuation marks. Don't forget the password since you will use
it each time you start your SSL-enabled web server.
Now you're done. The key pair file has been created and stored on disk.
It is extremely important to make a backup copy of your key pair and
password. It is equally important to secure both copies. If you lose
or divulge your private key or password you will need to revoke your
certificate and start over.
Next we'll create the CSR.
Generating the CSR
Think of the CSR as an application for a certificate. You will submit
the CSR to the CA and they in turn will issue a server certificate to you.
There are a number of CA's in the world, but I'll use VeriSign
for the examples in this article.
Before you go any further, it is wise to gather the information
you will need in the next steps. There are two groups of information you
will need: one for the CSR generation and one for VeriSign's
application process.
For CSR Generation:
- Key Pair File Password
(You already know this since it was the one you chose when you
generated the key pair.)
- Requestor name
(That's you!)
- Telephone number
(Your phone number. This is the number Verisign
will use to contact you by voice before issuing your certificate.)
- Common name
(The fully qualified domain name of your server, e.g. gfibbers.intuit.com.)
- Email address
(Your email address. One handy trick you might use
is to have a mail alias for this purpose so that even if the
person responsible for certificate management changes, the
email address on file at VeriSign will still be correct.)
- Organization
(In my case it would be Intuit Inc.)
- Organizational Unit
(You can use this field to further distinguish the
group that is using the certificate. For instance, "Online Commerce
Division" or "Information Services". Choose wisely; this information
will be a part of your certificate and is viewable by client-side
users.)
- Locality
(Your city. In my case it would be Mountain View.)
- State or Province
(Your state. In my case it would be California. Note that
you should not abbreviate.)
- Country
(Use the 2-character ISO format country code. Mine is US.)
For VeriSign:
- Your server software vendor
(In this example it would be Netscape.)
- Challenge Phrase
(Pick a phrase that's easy to remember but hard
for someone else to guess. You'll use this if you need to
request VeriSign to revoke the certificate in the future.)
- Contact information
(This can be a bit tricky. You need three
contacts: a technical contact, an organizational contact,
and a billing contact. The technical contact must be
authorized to maintain the server. In most cases this will
be you. The organizational contact must be an employee of your
organization and be "authorized to make binding agreement" to
Verisign's legal agreement. This person should be different
from the technical contact. The billing contact person will
receive invoices and can be the same person as either of the other
two contacts.)
- How you will pay for the Digital ID
(Credit card, purchase order, or check. Credit card is the fastest.)
- Your Dun & Bradstreet D-U-N-S Number
(This optional item also speeds up your order with Verisign as
they use it to verify your corporate identity.)
Now that you've collected all of the above information, you are ready to
generate your CSR. As in the case of the key pair generation, your
web server software should provide a way to generate the CSR. Let's
look at an example.
Example of Generating the CSR Using Netscape Enterprise Server
As in the example of generating your key pair above, I am using Netscape
Enterprise Server 3.0 in this example, and you may refer to the Netscape
Enterprise documentation for further details.
- Use your web browser to connect to the Server Administration page.
In my example I would connect to http://gfibbers.intuit.com:9999.
(Use the port you specified as the administrative port when you
originally installed your server.)
- Choose Keys & Certificates. From that page, choose Request
Certificate.
- A form will be presented to you. On this form, specify whether this
is a new certificate or a renewal of an existing certificate. In
this example, I'm applying for a new one, so I'll check that radio
box.
- The next part of the form has a link to a "list of available
certificate authorities". You may wish to view that page for an idea
of what's available, but in this example I've already decided on
VeriSign, so I'll skip that step.
- The next section allows you to either submit the request to your
CA via email or via a web site. The trouble is that I don't want
either of these two methods. VeriSign does not want the
CSR sent to them via email since they want you to complete the
enrollment procedure on their web pages (as you'll see in a
bit), and the "submit via CA URL" method assumes that the CA is
using Netscape Certificate Server. This is useful if you are
submitting, say, to an in-house CA using that particular
software, but that isn't the case in this example. What I really
want is to output the request to a file. So, in order to get the
file, I select "CA email address", but I fill in the address
field with my own address. In this case, btanaka@intuit.com.
When I'm done with this form, the CSR will come straight to me.
- In the next step, select the alias you created when you
generated the key pair and enter the password you defined earlier.
- Lastly, fill in the remaining fields with the information
you gathered beforehand (e.g. your name, phone number, server's common
name, et cetera).
- When you've made sure the values are correct,
click on the OK button at the bottom of the page. A subsequent page
will ask you to verify that the information is correct.
- Since I specified my email address as the destination, I will
receive the CSR in my mailbox. I'll save it to a file for use in the next
section.
Submitting the CSR to a Certificate Authority
Now that you have the key pair and CSR you're ready to submit the CSR
to a CA.
Since the CA is attesting to the binding between an identity and a
public key, it must first satisfy itself that you are who you claim to
be. When the CA is satisfied that everything is in order, it will
issue you a certificate. The certificate will contain server identity
information, your public key, other information (e.g. validity dates),
and the CA's digital signature.
There are a number of ways of submitting the CSR, but let's
look at a specific example that fits with our earlier steps.
Example of Submitting the CSR to VeriSign
VeriSign provides a web front-end to their CSR submission procedure. Here's
how to use it:
- Aim your trusty web browser at http://digitalid.verisign.com.
This is the main page of the VeriSign Digital ID Center. From this
page you can apply for a digital ID, manage existing ID's, check on
the status of your request, check the validity of an ID, et cetera.
- Click on Enroll.
- In the Organizations column, click on Web Servers.
- Choose the statement that best describes you. In this example,
"I want a Secure Server Digital ID to run SSL on my server".
- Now select the proper server software vendor. In this example, I'll
choose "Netscape" and on the next page I'll choose the correct
Netscape product.
- The next page gives you an overview of the process. Part of the
page describes what information you should have beforehand.
Since you've already gathered all of the information you're ready
to go. It would be wise to read over this page anyway, however,
since it may contain important information that was
not available or required at the time this article was written.
Click on the Begin button.
- Ah, at last you're ready to submit the CSR. Open the
mail message with the CSR in it. A CSR looks like this:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIBJTCB0AIBADBtMQswCQYDVQQGEwJVUzEQMA4GA1UEChs4lBMHQXJpem9uYTEN
A1UEBxMETWVzYTEfMB0GA1UEChMWTWVs3XbnzYSBDb21tdW5pdHkgQ29sbGVnZTE
A1UEAxMTd3d3Lm1jLm1hcmljb3BhLmVkdTBaMA0GCSqGSIb3DQEBAQUAA0kAMEYC
QQDRNU6xslWjG41163gArsj/P108sFmjkjzMuUUFYbmtZX4RFxf/U7cZZdMagz4I
MmY0F9cdpDLTAutULTsZKDcLAgEDoAAwDQYJKoZIhvcNAQEEBQADQQAjIFpTLgfm
BVhc9SQaip5SFNXtzAmhYzvJkt5JJ4X2r7VJYG3J0vauJ5VkjXz9aevJ8dzx37ir
3P4XpZ+NFxK1R=
-----END NEW CERTIFICATE REQUEST-----
- Copy the CSR and paste it in the edit box provided.
- The next page will show the values of the fields you filled in
when you generated the CSR. Double check them.
- Fill out the rest of the fields with the information you gathered
beforehand.
When you're done filling out the necessary forms you will need to
wait for the CA to verify your information. The CA may contact
you by phone to make last minute verifications before releasing
your certificate.
When all is in order, the server certificate will be issued to you.
Usually it is sent via email to the address you specified earlier. When you
receive it, you are then ready to install the certificate on your server
and enable SSL.
Installing the Server Certificate and Enabling SSL
As in the case of generating the key pair and generating the CSR, your
web server vendor will most likely have provided a way of installing
the certificate and enabling SSL. Let's look at an example.
Example of Installing the Server Certificate and Enabling SSL using
Netscape Enterprise Server
Again, this example uses Netscape Enterprise Server 3.0 and additional
information is available in the Netscape Enterprise documentation.
- Use your web browser to connect to the Server Administration page.
In my example I would connect to http://gfibbers.intuit.com:9999.
(Use the port you specified as the administrative port when you
originally installed your server.)
- Choose Keys & Certificates. And from that page, choose Install
Certificate.
- A form will be presented to you. On this form, specify whether this
is a new certificate or a renewal of an existing certificate. In
the example, I'm applying for a new one, so I'll check that radio
box.
- Select This Server.
- Select Message Text (with headers).
- Paste the certificate issued to you by the CA in the edit box.
Make sure that the text of the certificate is not mangled in any
way. I once had trouble with spaces appended to each line. If
the text is corrupted, the process will fail. Also, be sure
you've included the "Begin Certificate" and "End Certificate"
lines.
- Select the alias you created when you generated the key pair
originally.
- Click on OK.
- You will be asked whether or not you want to add the certificate.
Click on Add. Now the certificate will be stored in the file
/alias/-cert.db. Since, in this example, my
alias is "gfibbers", my certificate will be stored in
/alias/gfibbers-cert.db.
Now that the certificate is installed, you can proceed to the next step
and turn on SSL.
- Go back to the main Server Administration page and click on Admin
Preferences.
- Click on Encryption On/Off.
- Use the radio button to turn encryption on.
- Select the alias you created earlier. In this example, I'll select
"gfibbers".
- Click on OK. You can now set any security preferences you want.
- When you're done, you must stop and start the web server. Remember
that you will be prompted for the key pair password when you
try to start it. (See? I really did mean that you'll want to
remember your password!)
Now that you have enabled SSL, users must use https instead of http to
access your server. For instance, instead of http://gfibbers.intuit.com
they will have to use https://gfibbers.intuit.com. Also note that the
standard port for SSL is 443. If you specified port 443, then users do not
need to specify it in the URL since it is assumed. But, if you
chose some other port, then they will need to specify the port in the URL.
For instance, if I chose port 4001, then they will need to use
https://gfibbers.intuit.com:4001 to access the site.
Finishing Up
You may wish to change the parameters for SSL. For instance, you can
specify which version of SSL to use (version 2 or version 3 at the time
of this writing), specify which cipher suites to use, and so on.
Consult your web server software vendor's documentation for more
details.
After turning on SSL, I like to test the web server by comparing
browser access via http and https URLs. When you successfully load a
page via SSL, use your browser to view the certificate you installed.
For instance, in Netscape Navigator you can select Page Info under the
View menu and the lower pane in the subsequent window will show the
certificate info including the length of the key, the distinguishing
information about the server and the organization that controls it, who
issued the certificate, the range of dates during which the certificate
is valid, et cetera.
That reminds me, certificates have a validity date range. Before the
starting date and after the ending date the certificate is not valid,
and client software should reject it. Usually the operational period is
one year, but it may be longer or shorter. Because of this, add another
item to your ongoing maintenance list: certificate renewal. Find out
how your CA's renewal process works and be prepared to renew well in
advance of the certificate's expiration date.
Your web server is now SSL enabled. And since it never hurts to know
more about the technology you manage, I list the following resources
for further reading.
For Further Reading:
Netscape's SSL Documentation:
http://home.netscape.com/assist/security/ssl/index.html
SSL Documentation provided with Netscape Enterprise Server:
http://[yourhost]:[your admin serv port]/admin-serv/manual/ag/security.htm
Verisign:
http://www.verisign.com
Verisign Digital ID Center:
http://digitalid.verisign.com
Verisign Information Desk:
http://digitalid.verisign.com/ask_veri.htm
Apache-SSL
http://www.apache-ssl.org/
Web Security & Commerce
By Simson Garfinkel with Gene Spafford
1st Edition June 1997
1-56592-269-7
Practical UNIX & Internet Security, 2nd Edition
By Simson Garfinkel & Gene Spafford
2nd Edition April 1996
1-56592-148-8
###