Differences between revisions 3 and 4
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
= General Notes =

This description is applicable (tested) on FreeBSD 7.2 and 8.0, in an apache '''virtual host''' environment, where the same certificate is used for all virtual hosts.
Line 9: Line 13:
On idun and fs1 as root:

  {{{
cd /etc/namedb
vi softxs.ch
# Add the following line:
secure IN CNAME honir ; For https access
:x
  }}}

Restart named
Not needed. Use '''*.softxs.ch''' as common name.
Line 70: Line 63:
Common Name (eg, YOUR name) []:secure.softxs.ch # Use *.softxs.ch on virtual hosts to match all servers (only 1 certificate is allowed!!!) Common Name (eg, YOUR name) []:*.softxs.ch # only 1 certificate is allowed -> use wildcard
Line 95: Line 88:
Common Name (eg, YOUR name) []:secure.softxs.ch Common Name (eg, YOUR name) []:*.softxs.ch
Line 122: Line 115:
            commonName = secure.softxs.ch             commonName = *.softxs.ch
Line 133: Line 126:
                DirName:/C=CH/ST=Zug/L=Zug/O=SoftXS GmbH/CN=secure.softxs.ch/emailAddress=alan@softxs.ch                 DirName:/C=CH/ST=Zug/L=Zug/O=SoftXS GmbH/CN=*.softxs.ch/emailAddress=alan@softxs.ch
Line 145: Line 138:
Use averywhere "apache22" instead of "apache2" if appropriate. Use everywhere "apache2" instead of "apache22" on older FreeBSD if appropriate.
Line 152: Line 145:
cd /usr/local/etc/apache2 cd /usr/local/etc/apache22
Line 156: Line 149:
cp server_cert.pem /usr/local/etc/apache2/ssl.crt/server.crt
cp server_key.pem /usr/local/etc/apache2/ssl.key/server.key
cp ./demoCA/cacert.pem /usr/local/etc/apache2/ssl.crt/ca.crt

cd /usr/local/etc/apache2

cp httpd.conf httpd.conf-20080731
cp
ssl.conf ssl.conf-20080731
cp server_cert.pem /usr/local/etc/apache22/ssl.crt/server.crt
cp server_key.pem /usr/local/etc/apache22/ssl.key/server.key
cp ./demoCA/cacert.pem /usr/local/etc/apache22/ssl.crt/ca.crt

cd /usr/local/etc/apache22

cp httpd.conf httpd.conf-20100311
cp extra/httpd-
ssl.conf extra/httpd-ssl.conf-20100311
Line 170: Line 163:
# add the following line: # add the following line if not added yet:
Line 175: Line 168:
= Update /usr/local/etc/apache2/httpd.conf =

  {{{
honir# diff httpd.conf-20080731 httpd.conf
333c333
< #ServerName www.example.com:80
---
> ServerName honir.softxs.ch:80
1201a1202,1230
>
> # -- secure.softxs.ch
>
> <Directory "/home/www/shtml">
> Options Indexes
> AllowOverride None
> Order allow,deny
> Allow from all
= Update /usr/local/etc/apache22/httpd.conf =

Remove comments from '''httpd-vhosts.conf''' and '''httpd-ssl.conf'''

  {{{
[root@ymir /usr/local/etc/apache22]# diff httpd.conf-20100311 httpd.conf
0a1,2
> # 2010-03-11 TN: https configured
> #
1a4
> #
447c450
< #Include etc/apache22/extra/httpd-vhosts.conf
---
> Include etc/apache22/extra/httpd-vhosts.conf
459c462
< #Include etc/apache22/extra/httpd-ssl.conf
---
> Include etc/apache22/extra/httpd-ssl.conf
}}}

= Update /usr/local/etc/apache22/extra/httpd-ssl.conf =

Move and set all common SSL settings '''outside(!!!)''' the section '''<VirtualHost _default_:443>'''. This section is unused:
  {{{
# Common SSL settings (1 key for all virtual hosts)
SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
SSLVerifyClient none

# Server Certificate:
SSLCertificateFile "/usr/local/etc/apache22/ssl.crt/server.crt"
# Server Private Key:
SSLCertificateKeyFile "/usr/local/etc/apache22/ssl.key/server.key"
# Server Certificate Chain:
SSLCertificateChainFile "/usr/local/etc/apache22/ssl.crt/ca.crt"
# Certificate Authority (CA):
SSLCACertificatePath /usr/local/etc/apache22/ssl.crt
SSLCACertificateFile /usr/local/etc/apache22/ssl.crt/ca.crt
# Common SSL settings end
}}}

All changes:

  {{{
[root@ymir /usr/local/etc/apache22/extra]# diff httpd-ssl.conf-20100311 httpd-ssl.conf
69a70,85
> # Common SSL settings (1 key for all virtual hosts)
> SSLProtocol all
> SSLCipherSuite HIGH:MEDIUM
> SSLVerifyClient none
>
> # Server Certificate:
> SSLCertificateFile "/usr/local/etc/apache22/ssl.crt/server.crt"
> # Server Private Key:
> SSLCertificateKeyFile "/usr/local/etc/apache22/ssl.key/server.key"
> # Server Certificate Chain:
> SSLCertificateChainFile "/usr/local/etc/apache22/ssl.crt/ca.crt"
> # Certificate Authority (CA):
> SSLCACertificatePath /usr/local/etc/apache22/ssl.crt
> SSLCACertificateFile /usr/local/etc/apache22/ssl.crt/ca.crt
> # Common SSL settings end
>
99c115
< SSLCertificateFile "/usr/local/etc/apache22/server.crt"
---
> #SSLCertificateFile "/usr/local/etc/apache22/server.crt"
107c123
< SSLCertificateKeyFile "/usr/local/etc/apache22/server.key"
---
> #SSLCertificateKeyFile "/usr/local/etc/apache22/server.key"
}}}

= Update /usr/local/etc/apache22/extra/httpd-vhosts.conf =
Add '''named virtual host''' option for port 443, and for all virtual host a '''VirtualHost''' and a '''Directory''' section. Example:
  {{{
NameVirtualHost *:443

# -- coya2.softxs.ch

<VirtualHost *:443>
  DocumentRoot /home/www/shtml/coya
  ServerName coya2.softxs.ch
  Options -Indexes

  SSLEngine on
</VirtualHost>

<Directory /home/www/shtml/coya>
  Options None
  AllowOverride AuthConfig Limit
  Order allow,deny
  Allow from all
</Directory>
}}}

All changes (virtual hosts lu.softxs.ch and coya2.softxs.ch, both are enabled on HTTP and HTTPS):
  {{{
[root@ymir /usr/local/etc/apache22/extra]# diff httpd-vhosts.conf-20100311 httpd-vhosts.conf
19a20
> NameVirtualHost *:443
28,33c29,31
< ServerAdmin webmaster@dummy-host.example.com
< DocumentRoot "/usr/local/docs/dummy-host.example.com"
< ServerName dummy-host.example.com
< ServerAlias www.dummy-host.example.com
< ErrorLog "/var/log/dummy-host.example.com-error_log"
< CustomLog "/var/log/dummy-host.example.com-access_log" common
---
> DocumentRoot /usr/local/www/apache22/data
> ServerName lu.softxs.hu
> Options -Indexes
37,41c35,37
< ServerAdmin webmaster@dummy-host2.example.com
< DocumentRoot "/usr/local/docs/dummy-host2.example.com"
< ServerName dummy-host2.example.com
< ErrorLog "/var/log/dummy-host2.example.com-error_log"
< CustomLog "/var/log/dummy-host2.example.com-access_log" common
---
> DocumentRoot /home/www/shtml/coya
> ServerName coya2.softxs.ch
> Options -Indexes
43a40,70
> <VirtualHost *:443>
> DocumentRoot /usr/local/www/apache22/data
> ServerName lu.softxs.hu
> Options -Indexes
>
> SSLEngine on
> </VirtualHost>
>
> <Directory /usr/local/www/apache22/data>
> Options None
> AllowOverride AuthConfig Limit
> Order allow,deny
> Allow from all
Line 194: Line 306:
> <VirtualHost secure.softxs.ch:443>
> DocumentRoot /home/www/shtml
> ServerName secure.softxs.ch
> ServerAlias honir.softxs.ch
>
> # -- coya2.softxs.ch
>
> <VirtualHost *:443>
> DocumentRoot /home/www/shtml/coya
> ServerName coya2.softxs.ch
Line 202: Line 314:
> SSLProtocol all
> SSLCipherSuite HIGH:MEDIUM
>
> SSLCertificateFile /usr/local/etc/apache2/ssl.crt/server.crt
> SSLCertificateKeyFile /usr/local/etc/apache2/ssl.key/server.key
>
> SSLVerifyClient none
>
> SSLCACertificatePath /usr/local/etc/apache2/ssl.crt
> SSLCACertificateFile /usr/local/etc/apache2/ssl.crt/ca.crt
Line 213: Line 315:
  }}}

= Update /usr/local/etc/apache/ssl.conf =

  {{{
honir# diff ssl.conf-20080731 ssl.conf
87,88c87,88
< ServerName www.example.com:443
< ServerAdmin you@example.com
---
> ServerName secure.softxs.ch:443
> ServerAdmin webmaster@softxs.ch
126c126
< #SSLCertificateChainFile /usr/local/etc/apache2/ssl.crt/ca.crt
---
> SSLCertificateChainFile /usr/local/etc/apache2/ssl.crt/ca.crt
  }}}
>
> <Directory /home/www/shtml/coya>
> Options None
> AllowOverride AuthConfig Limit
> Order allow,deny
> Allow from all
> </Directory>
}}}

Apache HTTPS Configuration

Description of HTTPS configuration on honir.softxs.ch

General Notes

This description is applicable (tested) on FreeBSD 7.2 and 8.0, in an apache virtual host environment, where the same certificate is used for all virtual hosts.

Setup New DNS Name

Not needed. Use *.softxs.ch as common name.

Setup Certificates

OpenSSL should be installed. Use port security/openssl if CA.pl is not found.

  • locate CA.pl
    ...
    /usr/src/crypto/openssl/apps/CA.pl
    ...
    
    cd /root
    mkdir -p work/certificates
    
    cd work/certificates
    cp /usr/src/crypto/openssl/apps/CA.pl .
    
    vi CA.pl
    # Change the following
    $DAYS="-days 365";
    # to
    $DAYS="-days 1825";
    :x
    perl CA.pl -newca
    CA certificate filename (or enter to create)
    
    Making CA certificate ...
    Generating a 1024 bit RSA private key
    .........++++++
    ...................++++++
    writing new private key to './demoCA/private/cakey.pem'
    Enter PEM pass phrase:
    Verifying - 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]:CH
    State or Province Name (full name) [Some-State]:Zug
    Locality Name (eg, city) []:Zug
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:SoftXS GmbH
    Organizational Unit Name (eg, section) []:
    Common Name (eg, YOUR name) []:*.softxs.ch  # only 1 certificate is allowed -> use wildcard
    Email Address []:alan@softxs.ch
    perl CA.pl -newreq
    Generating a 1024 bit RSA private key
    ........++++++
    .............................................++++++
    writing new private key to 'newreq.pem'
    Enter PEM pass phrase:
    Verifying - 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]:CH
    State or Province Name (full name) [Some-State]:Zug
    Locality Name (eg, city) []:Zug
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:SoftXS GmbH
    Organizational Unit Name (eg, section) []:
    Common Name (eg, YOUR name) []:*.softxs.ch
    Email Address []:alan@softxs.ch
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    Request (and private key) is in newreq.pem
    perl CA.pl -sign
    Using configuration from /etc/ssl/openssl.cnf
    Enter pass phrase for ./demoCA/private/cakey.pem:
    Check that the request matches the signature
    Signature ok
    Certificate Details:
            Serial Number:
                8f:db:ea:5b:29:35:12:0b
            Validity
                Not Before: Jul 31 10:46:16 2008 GMT
                Not After : Jul 31 10:46:16 2009 GMT
            Subject:
                countryName               = CH
                stateOrProvinceName       = Zug
                localityName              = Zug
                organizationName          = SoftXS GmbH
                commonName                = *.softxs.ch
                emailAddress              = alan@softxs.ch
            X509v3 extensions:
                X509v3 Basic Constraints:
                    CA:FALSE
                Netscape Comment:
                    OpenSSL Generated Certificate
                X509v3 Subject Key Identifier:
                    47:27:08:DB:DC:CA:53:36:53:DF:E7:EA:8A:8D:53:49:2E:1B:C6:98
                X509v3 Authority Key Identifier:
                    keyid:04:3F:E8:2C:28:CF:28:8A:EE:CF:95:F6:15:41:61:6E:DC:C2:4E:77
                    DirName:/C=CH/ST=Zug/L=Zug/O=SoftXS GmbH/CN=*.softxs.ch/emailAddress=alan@softxs.ch
                    serial:8F:DB:EA:5B:29:35:12:0A
    
    Certificate is to be certified until Jul 31 10:46:16 2009 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
    Signed certificate is in newcert.pem

Use everywhere "apache2" instead of "apache22" on older FreeBSD if appropriate.

  • openssl rsa < newkey.pem > server_key.pem
    
    cp newcert.pem server_cert.pem
    
    cd /usr/local/etc/apache22
    mkdir ssl.crt ssl.key
    
    cd /root/work/certificates
    cp server_cert.pem     /usr/local/etc/apache22/ssl.crt/server.crt
    cp server_key.pem      /usr/local/etc/apache22/ssl.key/server.key
    cp ./demoCA/cacert.pem /usr/local/etc/apache22/ssl.crt/ca.crt
    
    cd /usr/local/etc/apache22
    
    cp httpd.conf httpd.conf-20100311
    cp extra/httpd-ssl.conf extra/httpd-ssl.conf-20100311

Update /etc/rc.conf

  • vi /etc/rc.conf
    # add the following line if not added yet:
    apache2ssl_enable="YES"
    :x

Update /usr/local/etc/apache22/httpd.conf

Remove comments from httpd-vhosts.conf and httpd-ssl.conf

  • [root@ymir /usr/local/etc/apache22]# diff httpd.conf-20100311 httpd.conf
    0a1,2
    > # 2010-03-11 TN: https configured
    > #
    1a4
    > #
    447c450
    < #Include etc/apache22/extra/httpd-vhosts.conf
    ---
    > Include etc/apache22/extra/httpd-vhosts.conf
    459c462
    < #Include etc/apache22/extra/httpd-ssl.conf
    ---
    > Include etc/apache22/extra/httpd-ssl.conf

Update /usr/local/etc/apache22/extra/httpd-ssl.conf

Move and set all common SSL settings outside(!!!) the section <VirtualHost _default_:443>. This section is unused:

  • # Common SSL settings (1 key for all virtual hosts)
    SSLProtocol                 all
    SSLCipherSuite              HIGH:MEDIUM
    SSLVerifyClient       none
    
    #   Server Certificate:
    SSLCertificateFile "/usr/local/etc/apache22/ssl.crt/server.crt"
    #   Server Private Key:
    SSLCertificateKeyFile "/usr/local/etc/apache22/ssl.key/server.key"
    #   Server Certificate Chain:
    SSLCertificateChainFile "/usr/local/etc/apache22/ssl.crt/ca.crt"
    #   Certificate Authority (CA):
    SSLCACertificatePath  /usr/local/etc/apache22/ssl.crt
    SSLCACertificateFile  /usr/local/etc/apache22/ssl.crt/ca.crt
    # Common SSL settings end

All changes:

  • [root@ymir /usr/local/etc/apache22/extra]# diff httpd-ssl.conf-20100311 httpd-ssl.conf
    69a70,85
    > # Common SSL settings (1 key for all virtual hosts)
    > SSLProtocol                 all
    > SSLCipherSuite              HIGH:MEDIUM
    > SSLVerifyClient       none
    >
    > #   Server Certificate:
    > SSLCertificateFile "/usr/local/etc/apache22/ssl.crt/server.crt"
    > #   Server Private Key:
    > SSLCertificateKeyFile "/usr/local/etc/apache22/ssl.key/server.key"
    > #   Server Certificate Chain:
    > SSLCertificateChainFile "/usr/local/etc/apache22/ssl.crt/ca.crt"
    > #   Certificate Authority (CA):
    > SSLCACertificatePath  /usr/local/etc/apache22/ssl.crt
    > SSLCACertificateFile  /usr/local/etc/apache22/ssl.crt/ca.crt
    > # Common SSL settings end
    >
    99c115
    < SSLCertificateFile "/usr/local/etc/apache22/server.crt"
    ---
    > #SSLCertificateFile "/usr/local/etc/apache22/server.crt"
    107c123
    < SSLCertificateKeyFile "/usr/local/etc/apache22/server.key"
    ---
    > #SSLCertificateKeyFile "/usr/local/etc/apache22/server.key"

Update /usr/local/etc/apache22/extra/httpd-vhosts.conf

Add named virtual host option for port 443, and for all virtual host a VirtualHost and a Directory section. Example:

  • NameVirtualHost *:443
    
    # -- coya2.softxs.ch
    
    <VirtualHost *:443>
      DocumentRoot  /home/www/shtml/coya
      ServerName    coya2.softxs.ch
      Options       -Indexes
    
      SSLEngine             on
    </VirtualHost>
    
    <Directory /home/www/shtml/coya>
      Options None
      AllowOverride AuthConfig Limit
      Order allow,deny
      Allow from all
    </Directory>

All changes (virtual hosts lu.softxs.ch and coya2.softxs.ch, both are enabled on HTTP and HTTPS):

  • [root@ymir /usr/local/etc/apache22/extra]# diff httpd-vhosts.conf-20100311 httpd-vhosts.conf
    19a20
    > NameVirtualHost *:443
    28,33c29,31
    <     ServerAdmin webmaster@dummy-host.example.com
    <     DocumentRoot "/usr/local/docs/dummy-host.example.com"
    <     ServerName dummy-host.example.com
    <     ServerAlias www.dummy-host.example.com
    <     ErrorLog "/var/log/dummy-host.example.com-error_log"
    <     CustomLog "/var/log/dummy-host.example.com-access_log" common
    ---
    >   DocumentRoot  /usr/local/www/apache22/data
    >   ServerName lu.softxs.hu
    >   Options       -Indexes
    37,41c35,37
    <     ServerAdmin webmaster@dummy-host2.example.com
    <     DocumentRoot "/usr/local/docs/dummy-host2.example.com"
    <     ServerName dummy-host2.example.com
    <     ErrorLog "/var/log/dummy-host2.example.com-error_log"
    <     CustomLog "/var/log/dummy-host2.example.com-access_log" common
    ---
    >   DocumentRoot  /home/www/shtml/coya
    >   ServerName    coya2.softxs.ch
    >   Options       -Indexes
    43a40,70
    > <VirtualHost *:443>
    >   DocumentRoot  /usr/local/www/apache22/data
    >   ServerName lu.softxs.hu
    >   Options       -Indexes
    >
    >   SSLEngine             on
    > </VirtualHost>
    >
    > <Directory /usr/local/www/apache22/data>
    >   Options None
    >   AllowOverride AuthConfig Limit
    >   Order allow,deny
    >   Allow from all
    > </Directory>
    >
    > # -- coya2.softxs.ch
    >
    > <VirtualHost *:443>
    >   DocumentRoot  /home/www/shtml/coya
    >   ServerName    coya2.softxs.ch
    >   Options       -Indexes
    >
    >   SSLEngine             on
    > </VirtualHost>
    >
    > <Directory /home/www/shtml/coya>
    >   Options None
    >   AllowOverride AuthConfig Limit
    >   Order allow,deny
    >   Allow from all
    > </Directory>

HttpsConfigurationFreeBSD (last edited 2010-03-11 12:28:05 by 183-56-172)

Copyright 2008-2014, SoftXS GmbH, Switzerland