Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2011-12-08 18:15:53

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

apache virtualhost multiple ssl

witam
w lokalizacji /var/www/lms mam content lms'a. chce do niego dostawac sie dwojako:
1. poprzez wpisanie lms.domena.pl
2. poprzez wpisanie lms
zrobiłem certyfikaty dla obu "domen" zeby przegladarki sie nie bulwersowały. ale mam pewien problem.
obie domeny porwadzą do tej samej lokalizacji i pod uwage brany jest plik certyfikatu z ostniego wpisu. czyli jesli vhsota lms mam jako drugiego, to jesli wpisze lms.domena.pl to pobierany jest certyfikat z domeny lms.
oto config.

Kod:

lrwxrwxrwx 1 root root   26 09-28 10:28 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root   22 11-29 10:52 001-lmsssl -> ../sites-available/lms
lrwxrwxrwx 1 root root   25 12-08 15:02 002-lms -> ../sites-available/loclms
root@sqlDELL:/etc/apache2/sites-enabled#

root@sqlDELL:/etc/apache2/sites-enabled# cat 001-lmsssl
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin webmaster@domena.pl
    ServerName lms.domena.pl
    DocumentRoot /var/www/lms
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/lms/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

    SSLEngine on
    #   SSLCertificateFile directive is needed.
    SSLCertificateFile    /etc/apache2/ssl/lms.crt
    SSLCertificateKeyFile /etc/apache2/ssl/lms.key

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
    </Directory>
</VirtualHost>
</IfModule>

root@sqlDELL:/etc/apache2/sites-enabled# cat 002-lms
<IfModule mod_ssl.c>
NameVirtualHost lms:443
<VirtualHost *:443>
    ServerAdmin webmaster@domena.pl
    ServerName lms
    DocumentRoot /var/www/lms
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/lms/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

    SSLEngine on
    #   SSLCertificateFile directive is needed.
    SSLCertificateFile    /etc/apache2/ssl/lms.crt
    SSLCertificateKeyFile /etc/apache2/ssl/lms.key

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
    </Directory>
</VirtualHost>
</IfModule>

jeśli w pliku 002-lms nie miałem wpisu NameVirutalHost to przy przeladowywaniu miałem warninga:

Kod:

Restarting web server: apache2[Thu Dec 08 15:05:01 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
 ... waiting [Thu Dec 08 15:05:02 2011] [warn] _default_ VirtualHost overlap on port 443, the first has precedence

po dodaniu warning zniknąl.
nazwy lms.domena.pl i lms wskazywane sa na adres tego hosta w /etc/hosts.

konfiguracje roznia sie domena i plikami certyfikatów.
jeśli w przeglądarce wpisze: lms.domena.pl to podawany jest mi certyfikat z domeny "lms".
po wpisaniu w przeglądarce "lms" certyfikat podawany jest prawidłowo.

znalazłem rozwiązanie w postaci SNI, ale to jakoś nie działa. system debian 6.0 http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

w którym miejscu robie błąd?
jak zrobić żeby mimo tej samej fizycznej lokalizacji vhosty podawały mi certyfikaty z konfiguracji?

Offline

 

#2  2011-12-08 18:32:00

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: apache virtualhost multiple ssl

O ile się nie mylę, Apache nie obrabia  2 certów ssl, przynajmniej u mnie nie chcialo to kiedyś ruszyć (osobne certy na 2 różnych vhostach).
Choć teoretycznie każdy vhost z innym certem, - powinno działać.

Rozwiązałem problem w ten sposób, że wsadzilem Nginxa jako rev-proxy, a w Nginxie można używać kilku certów bez problemu.
Wtedy Nginx szyfrował, a Apache serwował stronę bez szyfrowania po localhoście.

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2011-12-08 18:32:14)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2011-12-08 19:25:10

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: apache virtualhost multiple ssl

[quote=Jacekalex]Rozwiązałem problem w ten sposób, że wsadzilem Nginxa jako rev-proxy, a w Nginxie można używać kilku certów bez problemu.
Wtedy Nginx szyfrował, a Apache serwował stronę bez szyfrowania po localhoście.[/quote]
Dzięki za podpowiedź, ale nie uważasz, że jest to nie zbyt dobre rozwiązanie?
Z tego co widzę, to w debianie 6.0 z paczek apache nie obsługuje sni i tu może być problem. trzeba przekompilować apache.

Offline

 

#4  2011-12-08 20:19:43

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: apache virtualhost multiple ssl

Dobre rozwiązanie, ze względu np na podatność Apache na Slowloris, na który Nginx jest całkowicie odporny.
Poza tym rev-proxy przed Apachem, to nie jest jakaś fanaberia, tylko niezły akcelerator Apacha, który ma tysiące modułów, ale niestety wydajnością nie grzeszy, w porównaniu z konkurencją.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2011-12-08 20:25:47

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: apache virtualhost multiple ssl

[quote=Jacekalex]Dobre rozwiązanie, ze względu np na podatność Apache na Slowloris, na który Nginx jest całkowicie odporny.
Poza tym rev-proxy przed Apachem, to nie jest jakaś fanaberia, tylko niezły akcelerator Apacha, który ma tysiące modułów, ale niestety wydajnością nie grzeszy, w porównaniu z konkurencją.[/quote]
W sumie i racja. podrzucisz może jakiś przykladowy config?

Offline

 

#6  2011-12-08 22:39:13

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: apache virtualhost multiple ssl

Kawałek  /home/Ubuntu/etc/nginx/sites-available/default

Kod:

server {
        listen               449;
       ssl                  on;
        ssl_certificate      /etc/ssl/apache.pem;
        ssl_certificate_key  /etc/ssl/apache.pem;
        keepalive_timeout    70;
        location / {
    proxy_pass        http://localhost:8019/;
    proxy_set_header  X-Real-IP  $remote_addr;
}
         location /status {
            stub_status on;
            access_log   off;
            allow 127.0.0.0/8;
            deny all;
        }
    }
    
  server {
        listen               451;
       ssl                  on;
        ssl_certificate      /etc/ssl/server.pem;
        ssl_certificate_key  /etc/ssl/server.pem;
        keepalive_timeout    70;
        location / {
    proxy_pass        http://localhost:8299/;
    proxy_set_header  X-Real-IP  $remote_addr;
}
        location /status {
            stub_status on;
            access_log   off;
            allow 127.0.0.0/8;
            deny all;
        }

Coś takiego kiedyś testowałem, i działało (dawno to było - jeszcze na Ubuntu i Nginxie 0.7.x).

Mam też gdzieś na dysku i płytach  lepsze konfigi, jak coś znajdę, to podeślę, (ale diabli wiedzą, gdzie się podziało) :xD
W każdym razie mniej więcej tak to ma być.
Nginx akceptuje osobny cert dla każdego [url=http://wiki.nginx.org/VirtualHostExample]serwera[/url].
Przy Nginxie zawsze korzystam z [url=http://wiki.nginx.org/Configuration]oficjalnej dokumentacji[/url].

Pozdro
;-)

Ostatnio edytowany przez Jacekalex (2011-12-08 22:46:07)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2011-12-08 23:06:06

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: apache virtualhost multiple ssl

Dzięki, jutro potestuje

Offline

 

#8  2011-12-09 21:43:07

  lessmian - Użytkownik

lessmian
Użytkownik
Skąd: Kraków
Zarejestrowany: 2009-09-25

Re: apache virtualhost multiple ssl

Apache standardowo obsługuje wiele certyfikatów SSL. Warunkiem koniecznym jest, że każdy VHost (na każdym jeden certyfikat) działa na unikalnym adresie IP lub porcie -  w przeciwnym wypadku serwowany jest certyfikat z pierwszego wirtualnego hosta w konfiguracji. Działa to odkąd pamiętam i nigdy nie miałem z tym problemów. Schody zaczynają się gdy chcemy skonfigurować kilka VHostów z SSLem na tym samym adresie IP i/lub porcie - rozwiązaniem jest [url=http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI]SNI[/url].

Offline

 

#9  2011-12-10 01:10:53

  jurgensen - Użytkownik

jurgensen
Użytkownik
Skąd: Wrocław
Zarejestrowany: 2010-01-26

Re: apache virtualhost multiple ssl

Takie zachowanie jest logiczne. Założeniem ssl jest szyfrowanie całej komunikacji, czyli również pierwszego zapytania GET/POST. Dlatego też, wynegocjowanie certyfikatu przebiega jeszcze przed rozwiązaniem nazwy DNS na konkretny VirtualHost.

Offline

 

#10  2011-12-12 14:15:53

  Nicram - Użytkownik

Nicram
Użytkownik
Zarejestrowany: 2006-03-28

Re: apache virtualhost multiple ssl

dzięki za odpowiedzi.
zrobiłem to na ngixie. działa. ale mam dziwny objaw. otóż jeśli używam domeny "lms" to wszytko w porządku, ale jak użyję domeny "lms.domena.pl" to w przeglądarce dodawany mam jeden slash i adres wygląda tak: "[b]https://lms.domena.pl//[/b]?m=cos". czy to jest normalne zachowanie ngixa? nigdy wcześniej z niego nie korzystałem stąd też moje pytanie.

config mam identyczny jak wyżej, z tym ze dopisałem:

Kod:

server_name lms;

oraz dla dla drugiej domenki:

Kod:

server_name lms.domena.pl;

--edited--
to z dwoma slashami to wina firefoxa 8.0. firefox 8.0.1 rozwiązał sprawę

Ostatnio edytowany przez Nicram (2011-12-12 14:34:53)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.008 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00005 SET NAMES latin2
0.00095 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.16.51.237' WHERE u.id=1
0.00063 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.16.51.237', 1732345990)
0.00053 SELECT * FROM punbb_online WHERE logged<1732345690
0.00039 SELECT topic_id FROM punbb_posts WHERE id=187559
0.00007 SELECT id FROM punbb_posts WHERE topic_id=20204 ORDER BY posted
0.00042 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=20204 AND t.moved_to IS NULL
0.00005 SELECT search_for, replace_with FROM punbb_censoring
0.00187 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=20204 ORDER BY p.id LIMIT 0,25
0.00093 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=20204
Total query time: 0.00599 s