SSL certificate +virtualhost

Üdv (és elnézést, ha nem jó a kérdésem :)..

Az a krérdésem, hogy lehet az, hogy egy virtualhost -ban beállított SSL kulcsot és tanúsítványt nem hajlandó használni az apache, hanem helyette mindig az /etc/httpd/conf /ssl.conf -ban szerver fő domainhez beállítottakat veszi elő? Mit tudnék tenni, hogy a virtualhostokban beállítottakat használja a megfelelő domainekhez?
Köszönöm a lehetséges válaszokat:
A.

Hozzászólások

Támogat az Apache több ssl tanusítványt? Mikortól? Hol írnak erről?
Ha nem akkor a válasz az ami.
covek@covek.hu

kicsit gondold at a folyamatot:
kliens 443-as porton felveszi a kapcsolatot a szerverrel, megbeszelik a titkositast, ha megvan akkor a kliens elkuldi (a mar titkos csatornan) a http headeret (amiben a vhost neve van). na most akkor szerinted lehet?

illetve lehet, joszi.hu es feri.hu mas-mas ipn van. akkor iphez kotod a ssl kulcsokat.

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Korlatokkal meg lehet csinalni:
2 megoldas jelenleg

- egy domain eseteben:
subjozsika.maindom.ain, subferike.maindom.ain felallasban,
azaz ha azonos domain szervereirol van szo, akkor lehet
wildcard tanusitvanyt hasznalni: CN=*.maindom.ain
- kulonbozo domainok eseteben:
hasznalhato subjectAltName kiterjesztes,
ekkor dNSName ertekben fel kell sorolni az osszes virtualhost
CN=www.jozsika.hu, CN=www.ferike.hu FQDN-eket.
DE ez esetben ujabb virtualhost, ujabb tanusitvany igennyel jar (draga lehet)

+1 bonusz megoldas uj szoftverekkel
- kulonbozo domainek eseteben:
- Apache2.2 es OpenSSL0.9.9 DEV! hasznalataval megoldhato,
DE a bongeszok jelentos resze nem tamogatja.
Opera, IE7+ (vista verzio :o), FF2+ tamogatas van.
(TLS kiterjesztes, ekkor a virtualhost FQDN-t meg SSL nelkul elore kuldi a bongeszo)

Ha name based vhostokat használsz, csak egy certed lehet.
ip based esetén lehet több, minden domainhoz egy.

--
Ami elől menekülnek, az után szaladnak.

Mint feljebb irtam megoldhato.
Itt egy pelda Apache2.2 es mod_gnutls hasznalataval.
A mod_gnutls kb. 2005-ota nyujtja ezt ;)
Latszik, hogy apache es apache2 szerver azonos porton es cimen
(172.16.1.11:443) erheto el.
Nem latszik, de azonos szerver virtualhostjai.
Barmelyik virtualhostot megszolitva a sajat certjet kuldi.
A peldaban ugyan azonos domain szerverei, de erre nem epitek,
mivel a fennt vazolt megoldasok kozul az utolsot hasznalom.
Lasd: Server Name Indication http://www.ietf.org/rfc/rfc3546.txt

Egyik VHost:


rka@rkanote:~$ gnutls-cli --x509cafile work/CA/ca-cert.pem  apache.rka.local
Processed 1 CA certificate(s).
Resolving 'apache.rka.local'...
Connecting to '172.16.1.11:443'...
- Certificate type: X.509
 - Got a certificate list of 1 certificates.

 - Certificate[0] info:
 # The hostname in the certificate matches 'apache.rka.local'.
 # valid since: Wed Sep 12 18:20:47 CEST 2007
 # expires at: Thu Sep 11 18:20:47 CEST 2008
 # fingerprint: 36:42:7A:43:E6:18:07:7A:5B:B2:24:1B:55:3B:59:75
 # Subject's DN: C=HU,ST=Pest,O=rka.hu,OU=Local Servers,CN=apache.rka.local
 # Issuer's DN: CN=RKA CA,C=HU,ST=Pest,L=Budapest,O=rka.hu,EMAIL=cacert@rka.hu


- Peer's certificate is trusted
- Version: TLS 1.1
- Key Exchange: DHE RSA
- Cipher: AES 256 CBC
- MAC: SHA
- Compression: DEFLATE
- Handshake was completed

- Simple Client Mode:

Masik VHost:


rka@rkanote:~$ gnutls-cli --x509cafile work/CA/ca-cert.pem  apache2.rka.local
Processed 1 CA certificate(s).
Resolving 'apache2.rka.local'...
Connecting to '172.16.1.11:443'...
- Certificate type: X.509
 - Got a certificate list of 1 certificates.

 - Certificate[0] info:
 # The hostname in the certificate matches 'apache2.rka.local'.
 # valid since: Wed Sep 12 17:36:58 CEST 2007
 # expires at: Thu Sep 11 17:36:58 CEST 2008
 # fingerprint: C5:0D:87:64:E0:05:F4:A3:11:29:16:50:4A:1B:30:01
 # Subject's DN: C=HU,ST=Pest,O=rka.hu,OU=Local Servers,CN=apache2.rka.local
 # Issuer's DN: CN=RKA CA,C=HU,ST=Pest,L=Budapest,O=rka.hu,EMAIL=cacert@rka.hu


- Peer's certificate is trusted
- Version: TLS 1.1
- Key Exchange: DHE RSA
- Cipher: AES 256 CBC
- MAC: SHA
- Compression: DEFLATE
- Handshake was completed

- Simple Client Mode:

Opera 7.60+, IE7.0b2+ (vista), FF2.0+,
( Konqueror4.0+ :o)
Onnan tudja, hogy beallitod kis checkboxban a TLS1-et es SSL3.0-t,
ha jot akarsz magadnak tiltod az SSL2.0-t es SSL1.0-t.

Ha pedig egy browser megsem TLS-sel jon, hanem mondjuk SSL3.0-val,
akkor az elso _default_ tanusitvanyt fogja kapni, mint eddig is:
# The hostname in the certificate does NOT match 'apache.rka.local'.
# Subject's DN: C=HU,ST=Pest,O=rka.hu,OU=Local Servers,CN=apache2.rka.local
- Peer's certificate is trusted


rka@rkanote:~$ gnutls-cli --protocols SSL3.0 --x509cafile work/CA/ca-cert.pem apache.rka.local
Processed 1 CA certificate(s).
Resolving 'apache.rka.local'...
Connecting to '172.16.1.11:443'...
- Certificate type: X.509
 - Got a certificate list of 1 certificates.

 - Certificate[0] info:
 # The hostname in the certificate does NOT match 'apache.rka.local'.
 # valid since: Wed Sep 12 17:36:58 CEST 2007
 # expires at: Thu Sep 11 17:36:58 CEST 2008
 # fingerprint: C5:0D:87:64:E0:05:F4:A3:11:29:16:50:4A:1B:30:01
 # Subject's DN: C=HU,ST=Pest,O=rka.hu,OU=Local Servers,CN=apache2.rka.local
 # Issuer's DN: CN=RKA CA,C=HU,ST=Pest,L=Budapest,O=rka.hu,EMAIL=cacert@rka.hu


- Peer's certificate is trusted
- Version: SSL 3.0
- Key Exchange: DHE RSA
- Cipher: AES 256 CBC
- MAC: SHA
- Compression: DEFLATE
- Handshake was completed

- Simple Client Mode:

en is korbejartam ezt a kerdest par honapja. kurvara nem vagjak a bongeszok meg a tls-t sajnos. vagyis az sni-t konkretan.
en nem eroltetnem meg nagyon a dolgot, bar van keznel konfigfileom, h szukseg eseten atallhassak tls-re.
ha a site celkozonsege a haveri kor, akkor pl biztos lehetek benne, h modern bongeszoik vannak es ekkor nem altallok tls-t csinalni.
amugy mintha stabilitasi gondjaim azert lettek volna a cuccal, de lehet h csak apache eseten, lighttpd-vel ment rendesen? mar nemtom.

amugy google: sni "browser support"
feed://www.g-loaded.eu/2007/08/10/ssl-enabled-name-based-apache-virtual-hosts-…
Unfortunately SNI support in browsers is limited to these:
Firefox 2, IE 7 on Vista, Opera 7.6+ and other modern browsers.
(http://weblogs.mozillazine.org/gerv/archives/2007/08/virtual_hosting_ss…)
IE 6, lynx, safari and the like are not supported.
(http://wiki.cacert.org/wiki/VhostTaskForce#head-7236c4e2c9932ef42056b3f…)

Ha "NameBased SSLVhost"-ot használsz, csak egy tanúsítványod lehet, ha "IPBased SSLVhost"-ot használsz lehet hosztonként egy, DE ha a vhostok beállításain kívül van megadva SSL beállítás, akkor az ott megadott tanúsítványt fogja használni (és csak azt) az apache. Ez egyébként az apache dokumentációban is le van írva.

Én abból egy ilyet csináltam:


##
#       https://test.nemtom.hu/
##

NameVirtualHost 192.168.2.248:80
<VirtualHost 192.168.2.248:80>
        ServerAdmin pita@test.nemtom.hu
        ServerName test.nemtom.hu

        RewriteEngine on
        RewriteCond %{SERVER_PORT} ^80$
        RewriteCond %{HTTP_HOST} test\.nemtom\.hu [NC]
        RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]

        ErrorLog /var/log/apache2/nemtom.error.log
        LogLevel alert
        CustomLog /var/log/apache2/nemtom.access.log combined
</VirtualHost>

NameVirtualHost 192.168.2.248:443
<VirtualHost 192.168.2.248:443>
        ServerAdmin pita@test.nemtom.hu
        ServerName test.nemtom.hu:443

        SSLEngine on

        SSLCertificateFile /etc/ssl/certs/test.nemtom.hu.cert.pem
        SSLCertificateKeyFile /etc/ssl/private/test.nemtom.hu.key.pem
        SSLCACertificateFile /etc/ssl/certs/cacert.pem
        SSLVerifyClient      none
        SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

        #SuexecUserGroup crm crm

        DocumentRoot /var/www/nemtom/pub/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/nemtom/pub/>
                Options Indexes FollowSymLinks -MultiViews
                #SetHandler fastcgi-script
                AllowOverride None
                Order allow,deny
                allow from all
                RedirectMatch ^/$ /info/
        </Directory>

        ScriptAlias /cgi-bin/ /var/www/nemtom/cgi-bin/
        <Directory "/var/www/nemtom/cgi-bin/">
                AllowOverride None
                SetHandler fastcgi-script
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/apache2/nemtom.error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel info

        CustomLog /var/log/apache2/nemtom.access.log combined
        ServerSignature On

    Alias /stat/ "/var/www/nemtom/stat/"
    <Directory "/var/www/nemtom/stat/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Allow from all
    </Directory>

</VirtualHost>

Próbáld ki, módosítsd, használd, gyújts gyertyát Szent Antalnak ;)

a becsatolt peldabol latszik, hogy igen.
azert gnutls es nem openssl-dev,
mert az openssl eleg alapveto csomag, sok dependenciaval, amit nem kivantam bealdozni.
a gnutls jo 2 eve tudja, az opensslbe meg csak most epul bele.
tls ne'mi performancia veszteseggel jar.
mukodo konfig:


(chr-apache2)root@rkanote:/etc/apache2# cat ./mods-enabled/gnutls.conf
<IfModule mod_gnutls.c>
GnuTLSCache memcache "apache.rka.local apache2.rka.local"
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
GnuTLSCacheTimeout  300
</IfModule>

(chr-apache2)root@rkanote:/etc/apache2# cat ./sites-enabled/001-ssl_default
<VirtualHost 172.16.1.11:443>
        GnuTLSEnable On
        GnuTLSKeyFile /etc/apache2/ssl/key/apache2_rka_local.key
        GnuTLSCertificateFile /etc/apache2/ssl/crt/apache2_rka_local.crt
        GnuTLSClientCAFile /etc/apache2/ssl/crt/cacert.crt
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/vhost/apache2.rka.local/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
</VirtualHost>

(chr-apache2)root@rkanote:/etc/apache2# cat ./sites-enabled/002-ssl_apache
<VirtualHost 172.16.1.11:443>
        GnuTLSEnable On
        GnuTLSKeyFile /etc/apache2/ssl/key/apache_rka_local.key
        GnuTLSCertificateFile /etc/apache2/ssl/crt/apache_rka_local.crt
        GnuTLSClientCAFile /etc/apache2/ssl/crt/cacert.crt
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/vhost/apache.rka.local/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
</VirtualHost>

Újra feldobom a témát.
Pár napja jelent meg az openssl 1.0.0 beta1, ez az első változat, amiben alapértelmezésben be vannak kapcsolva a TLS kiterjesztések, köztük a 'server name indication' is. Tippem szerint kb. két hónap múlva jön ki a végleges, és akkor az apache-esek is elkezdhetnek foglalkozni a 34607-es buggal.