# Problemy z vhostami ssl na apache.

## canis_lupus

Zwykłe vhosty ładnie działają dobrze, gorzej jest po https: przetargi.up.krakow.pl i bip.up.krakow.pl wskazują na suen.up.krakow.pl.

Co mam źle?

Podczas restartu apache dostaję komunikat: 

```
 * Service apache2 stopping

[Thu May 27 09:00:08 2010] [warn] VirtualHost bip.up.krakow.pl:443 overlaps with VirtualHost przetargi.up.krakow.pl:443, the first has precedence, perhaps you need a NameVirtualHost directive

[Thu May 27 09:00:08 2010] [warn] VirtualHost suen.up.krakow.pl:443 overlaps with VirtualHost bip.up.krakow.pl:443, the first has precedence, perhaps you need a NameVirtualHost directive

 * Service apache2 stopped

 * Service apache2 starting

[Thu May 27 09:00:09 2010] [warn] VirtualHost bip.up.krakow.pl:443 overlaps with VirtualHost przetargi.up.krakow.pl:443, the first has precedence, perhaps you need a NameVirtualHost directive

[Thu May 27 09:00:09 2010] [warn] VirtualHost suen.up.krakow.pl:443 overlaps with VirtualHost bip.up.krakow.pl:443, the first has precedence, perhaps you need a NameVirtualHost directive

 * Service apache2 started

```

konfiguracja vhost:

```
<IfDefine DEFAULT_VHOST>

Listen 80               

# Use name-based virtual hosting.

NameVirtualHost *:80             

NameVirtualHost *:443            

<VirtualHost *:80>

        ServerName localhost

        Include /etc/apache2/vhosts.d/default_vhost.include

        <IfModule mpm_peruser_module>

                ServerEnvironment apache apache

        </IfModule>

</VirtualHost>

<VirtualHost *:80>

        ServerName przetargi.up.krakow.pl

        ServerAlias przetargi.ap.krakow.pl

        Include /etc/apache2/vhosts.d/przetargi_vhost.include

        AddType application/x-httpd-php .php

        <IfModule mpm_peruser_module>

                ServerEnvironment apache apache

        </IfModule>

</VirtualHost>

<VirtualHost *:80>

        ServerName bip.up.krakow.pl

        ServerAlias bip.ap.krakow.pl

        Include /etc/apache2/vhosts.d/bip_vhost.include

        AddType application/x-httpd-php .php

        <IfModule mpm_peruser_module>

                ServerEnvironment apache apache

        </IfModule>

</VirtualHost>

<VirtualHost *:80>

        ServerName suen.up.krakow.pl

        ServerAlias suen.ap.krakow.pl

        Include /etc/apache2/vhosts.d/suen_vhost.include

        AddType application/x-httpd-php .php

        <IfModule mpm_peruser_module>

                ServerEnvironment apache apache

        </IfModule>

</VirtualHost>

</IfDefine>
```

KOnfiguracja vhost ssl:

```
<IfDefine SSL>                                  

<IfDefine SSL_DEFAULT_VHOST>                    

<IfModule ssl_module>                           

# see bug #178966 why this is in here           

# When we also provide SSL we have to listen to the HTTPS port

# Note: Configurations that use IPv6 but not IPv4-mapped addresses need two

# Listen directives: "Listen [::]:443" and "Listen 0.0.0.0:443"            

Listen 443                                                                 

<VirtualHost _default_:443>

        ServerName localhost

        Include /etc/apache2/vhosts.d/default_vhost.include

        ErrorLog /var/log/apache2/ssl_error_log            

        <IfModule log_config_module>

                TransferLog /var/log/apache2/ssl_access_log

        </IfModule>                                        

        ## SSL Engine Switch:

        # Enable/Disable SSL for this virtual host.

        SSLEngine on                               

        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

        SSLCertificateFile /etc/ssl/apache2/server.crt

        SSLCertificateKeyFile /etc/ssl/apache2/server.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">

                SSLOptions +StdEnvVars         

        </FilesMatch>                          

        <Directory "/var/www/localhost/cgi-bin">

                SSLOptions +StdEnvVars          

        </Directory>                            

        <IfModule setenvif_module>

                BrowserMatch ".*MSIE.*" \

                        nokeepalive ssl-unclean-shutdown \

                        downgrade-1.0 force-response-1.0  

        </IfModule>                                       

        <IfModule log_config_module>

                CustomLog /var/log/apache2/ssl_request_log \

                        "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

        </IfModule>                                                      

</VirtualHost>                                                           

<VirtualHost suen.up.krakow.pl:443>

        ServerName suen.up.krakow.pl

        Include /etc/apache2/vhosts.d/suen_vhost.include

        ErrorLog /var/log/apache2/ssl_error_log            

        <IfModule log_config_module>

                TransferLog /var/log/apache2/ssl_access_log

        </IfModule>                                        

        ## SSL Engine Switch:

        # Enable/Disable SSL for this virtual host.

        SSLEngine on                               

        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

        SSLCertificateFile /etc/ssl/apache2/server.crt

        SSLCertificateKeyFile /etc/ssl/apache2/server.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">

                SSLOptions +StdEnvVars         

        </FilesMatch>                          

        <Directory "/var/www/localhost/cgi-bin">

                SSLOptions +StdEnvVars          

        </Directory>                            

        <IfModule setenvif_module>

                BrowserMatch ".*MSIE.*" \

                        nokeepalive ssl-unclean-shutdown \

                        downgrade-1.0 force-response-1.0  

        </IfModule>                                       

        <IfModule log_config_module>

                CustomLog /var/log/apache2/ssl_request_log \

                        "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

        </IfModule>                                                      

</VirtualHost>                                                           

<VirtualHost bip.up.krakow.pl:443>

        ServerName bip.up.krakow.pl

        Include /etc/apache2/vhosts.d/bip_vhost.include

        ErrorLog /var/log/apache2/ssl_error_log            

        <IfModule log_config_module>

                TransferLog /var/log/apache2/ssl_access_log

        </IfModule>                                        

        ## SSL Engine Switch:

        # Enable/Disable SSL for this virtual host.

        SSLEngine on                               

        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

        SSLCertificateFile /etc/ssl/apache2/server.crt

        SSLCertificateKeyFile /etc/ssl/apache2/server.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">

                SSLOptions +StdEnvVars         

        </FilesMatch>                          

        <Directory "/var/www/localhost/cgi-bin">

                SSLOptions +StdEnvVars          

        </Directory>                            

        <IfModule setenvif_module>

                BrowserMatch ".*MSIE.*" \

                        nokeepalive ssl-unclean-shutdown \

                        downgrade-1.0 force-response-1.0  

        </IfModule>                                       

        <IfModule log_config_module>

                CustomLog /var/log/apache2/ssl_request_log \

                        "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

        </IfModule>                                                      

</VirtualHost>                                                           

<VirtualHost przetargi.up.krakow.pl:443>

        ServerName przetargi.up.krakow.pl

        Include /etc/apache2/vhosts.d/przetargi_vhost.include

        ErrorLog /var/log/apache2/ssl_error_log

        <IfModule log_config_module>

                TransferLog /var/log/apache2/ssl_access_log

        </IfModule>

        ## SSL Engine Switch:

        # Enable/Disable SSL for this virtual host.

        SSLEngine on

        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

        SSLCertificateFile /etc/ssl/apache2/server.crt

        SSLCertificateKeyFile /etc/ssl/apache2/server.key

        <FilesMatch "\.(cgi|shtml|phtml|php)$">

                SSLOptions +StdEnvVars

        </FilesMatch>

        <Directory "/var/www/localhost/cgi-bin">

                SSLOptions +StdEnvVars

        </Directory>

        <IfModule setenvif_module>

                BrowserMatch ".*MSIE.*" \

                        nokeepalive ssl-unclean-shutdown \

                        downgrade-1.0 force-response-1.0

        </IfModule>

        <IfModule log_config_module>

                CustomLog /var/log/apache2/ssl_request_log \

                        "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

        </IfModule>

</VirtualHost>

</IfModule>

</IfDefine>

</IfDefine>
```

jeden z plików *_vhost.include:

```
# ServerAdmin: Your address, where problems with the server should be

# e-mailed.  This address appears on some server-generated pages, such

# as error documents.  e.g. admin@your-domain.com                     

ServerAdmin root@localhost                                            

                                              

DocumentRoot "/var/www/localhost/htdocs/zap/"                           

# This should be changed to whatever you set DocumentRoot to.

<Directory "/var/www/localhost/htdocs/zap/">                 

                                                 

        Options Indexes FollowSymLinks                                             

                                   

        AllowOverride All                                                         

        # Controls who can get stuff from this server.

        Order allow,deny

        Allow from all

</Directory>

<IfModule alias_module>

        ScriptAlias /cgi-bin/ "/var/www/localhost/cgi-bin/"

</IfModule>

<Directory "/var/www/localhost/cgi-bin">

        AllowOverride None

        Options None

        Order allow,deny

        Allow from all

</Directory>
```

----------

## SlashBeast

Vhosty ssl na jednym, tym samym ip/porcie to bardzo nie fajna sprawa. Zainteresuj sie tym:

http://blog.revolunet.com/index.php/reseau/administration/hosting-multiple-ssl-vhosts-on-a-single-ipportcertificate-with-apache2

W tym wypadku masz jeden vhost ssl i rewrituje documentroot w zaleznosci od hosta jakiego dostane w requescie.

btw, tak tylko zapytam, myslales o przejsciu na nginx?

----------

## canis_lupus

myslałem raczej o lighttpd, ale konfiguracja mnie trochę odstrasza.

Zaproponowane przez Ciebie rozwiązanie wydaje się być ok, ale muszę się jeszzce do niego douczyć bo prawdę mówiąc - nie potrafię  :Very Happy: 

----------

## no4b

Nie możesz mieć kilku vhostów SSL na tym samym IP skonfigurowanych tak "wprost" jak dla portu 80. Rozwiązanie, które podał SlashBeast zadziała sensownie (bez komunikatów o błędnym certyfikacie) tylko jeśli masz certyfikat wildcard i zamierzasz tak używać tylko subdomen, które ten wildcard obejmuje.

----------

## canis_lupus

vhosty zwykłe (na porcie 80) działają bez problemu. Gorzej jest z tymi SSLowymi. Najprościej chyba postawić każdego vhosta na innym IP lub na innym porcie.

----------

## mormo

a chyba jak dobrze pamietam mulitple ssl nawet na roznych ip jest obslugiwane od jakiejs versji apacha ? powyzej 2.2.10 ?

----------

