Hello Doc,

Pardon me if this doesn't really answer the question... Though,
here's what I do when I create my own private CA and private
certificate for my web server.  The good thing about these
procedures is that you can repeat steps 3 to 7 to generate
certificates for your other web servers and have them signed *by
the same* CA.

Also, if you may want to function as some "real" private CA (sign
server and personal certificates) and do some certificate
management tasks, check out pyCA or OpenCA.

        HTH,
        Mike

# 0. install a mod_ssl patched apache using "make" and "make
# install" without running any of "make certificate ..." commands

# 1. generate ca private key (ca.key)
/usr/local/ssl/bin/openssl genrsa -des3 -out ca.key 1024
# 2. generate ca certificate (ca.crt) signed with ca's own private
#    key (ca.key)
/usr/local/ssl/bin/openssl req -new -x509 -days 365 -key ca.key -out ca.crt

# 3. generate web server's private key (server1.key)
/usr/local/ssl/bin/openssl genrsa -des3 -out server1.key 1024
# 4. generate web server's certificate signing request (server1.csr)
/usr/local/ssl/bin/openssl req -new -key server1.key -out server1.csr

# 5. ca signs web server's certificate signing request
#    and generates web server's certificate (server1.crt)
/usr/src/mod_ssl-2.6.2-1.3.12/pkg.contrib/sign.sh server1.csr

# 6. copy web server's private key (server1.key) and certificate
#    (server1.crt) where apache will find them
cp server1.key /usr/local/apache/conf/ssl.key/server.key
cp server1.crt /usr/local/apache/conf/ssl.crt/server.crt

# 7. set the following in apache's httpd.conf
SSLCertificateFile /usr/local/apache/conf/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/server.key

#################################################################
Sample Session
#################################################################

# openssl genrsa -des3 -out ca.key 1024
Generating RSA private key, 1024 bit long modulus
..++++++
........++++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:

# openssl req -new -x509 -days 365 -key ca.key -out ca.crt
Using configuration from /usr/local/ssl/openssl.cnf
Enter PEM pass phrase:
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) [AU]:PH
State or Province Name (full name) [Some-State]:Metro Manila
Locality Name (eg, city) []:Quezon City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ABC Company
Organizational Unit Name (eg, section) []:ABC Company Certificate Authority
Common Name (eg, YOUR name) []:ABC Company CA
Email Address []:[EMAIL PROTECTED]

# openssl genrsa -des3 -out server1.key 1024
Generating RSA private key, 1024 bit long modulus
.......++++++
..................................................++++++
e is 65537 (0x10001)
Enter PEM pass phrase:
Verifying password - Enter PEM pass phrase:

# openssl req -new -key server1.key -out server1.csr
Using configuration from /usr/local/ssl/openssl.cnf
Enter PEM pass phrase:
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) [AU]:PH
State or Province Name (full name) [Some-State]:Metro Manila
Locality Name (eg, city) []:Quezon City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:XYZ Company
Organizational Unit Name (eg, section) []:XYZ Web Department
Common Name (eg, YOUR name) []:www.xyz.foo
Email Address []:[EMAIL PROTECTED]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

# /usr/src/mod_ssl-2.6.2-1.3.12/pkg.contrib/sign.sh server1.csr
CA signing: server1.csr -> server1.crt:
Using configuration from ca.config
Enter PEM pass phrase:
Check that the request matches the signature
Signature ok
The Subjects Distinguished Name is as follows
countryName           :PRINTABLE:'PH'
stateOrProvinceName   :PRINTABLE:'Metro Manila'
localityName          :PRINTABLE:'Quezon City'
organizationName      :PRINTABLE:'XYZ Company'
organizationalUnitName:PRINTABLE:'XYZ Web Department'
commonName            :PRINTABLE:'www.xyz.foo'
emailAddress          :IA5STRING:'[EMAIL PROTECTED]'
Certificate is to be certified until Apr 30 19:50:55 2001 GMT (365 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
CA verifying: server1.crt <-> CA cert
server1.crt: OK

# cp server1.key /usr/local/apache/conf/ssl.key/server.key
# cp server1.crt /usr/local/apache/conf/ssl.crt/server.crt

On Fri, Apr 28, 2000 at 05:00:15PM +0800, Pablo Manalastas wrote:
> In order to make a self-signed certificate for my web server
> I need to do a 'make certificate TYPE=custom'.  I tried to play
> with the many different variations of responses to
> O, OU, and CN for both CA and Subject, and some combinations 
> work and others do not.  If the combination does not work,
> the browser says the certificate is invalid.  I found that the 
> following works:
> 
> CA certificate:
> 
>    O (organization) = host.com
>    OU (organization unit) = SomeName CA
>    CN (common name) = SomeName CA
>    Email = [EMAIL PROTECTED]
> 
> Subject (server) certificate:
> 
>    O (organization) = host.com (must be same as above)
>    OU (organization unit) = SomeName Web
>    CN (common name) = SomeName Web
>    Email = [EMAIL PROTECTED]
> 
> Exactly what are the rules for assigning these names so that
> the result is a valid certificate? What other combination of
> names are valid?
> 
> Thanks.

-
Philippine Linux Users Group. Web site and archives at http://plug.linux.org.ph
To leave: send "unsubscribe" in the body to [EMAIL PROTECTED]

Reply via email to