cert handling on redirect of https subdomains

Tit Petric black at scene-si.org
Thu Sep 11 12:18:39 MSD 2008


I think what you are trying to do is impossible. A ssl connection needs 
to be established before the virtual host is known. To my knowledge this 
limits you to only one certificate per IP.

Martian Alien wrote:
>> Is api.example.com the same IP address as www.example.com ?
>>     
>
> Yes, we are attempting to setup three virtual domains on the same machine, each with different SSL certificates.  The primary domain (www.example.com:443 default) works fine, as does the base domain (example.com:443).  But adding more virtual subdomains will return the wrong SSL cert.
>
> Martian
>
>
> ----------------------------------------
>   
>> Date: Wed, 10 Sep 2008 08:42:41 +0400
>> From: is at rambler-co.ru
>> To: nginx at sysoev.ru
>> Subject: Re: cert handling on redirect of https subdomains
>>
>> On Wed, Sep 10, 2008 at 03:59:31AM +0000, Martian Alien wrote:
>>
>>     
>>> Note that the base domain (example.com) redirects fine to WWW (www.example.com).  Then adding a 2nd subdomain, API (api.example.com), returns the WWW certificate rather than the API one and flags a trust concern in most browsers.  Tried a listen field with both api.example.com:443 and the local interface 127.0.0.1:443, all fail in the same way.  Redirect works fine except it returns the incorrect SSL certiicate.
>>>
>>>   server {
>>>     listen api.example.com:443;
>>>     server_name  api.example.com api;
>>>
>>>     ssl on;
>>>     ssl_certificate /opt/local/nginx/certs/api.example.com.crt; 
>>>     ssl_certificate_key /opt/local/nginx/certs/api.example.com.key; 
>>>
>>>     rewrite ^/(.*) https://www.example.com/$1 permanent;
>>>   }
>>>
>>>   server {
>>>     listen api.example.com:80;
>>>     server_name  api.example.com api;
>>>     rewrite ^/(.*) http://www.example.com/$1 permanent;
>>>   }
>>>
>>> Thanks again for looking into this concern,
>>>       
>> Is api.example.com the same IP address as www.example.com ?
>>
>>     
>>>> Date: Tue, 9 Sep 2008 10:22:15 +0400
>>>> From: is at rambler-co.ru
>>>> To: nginx at sysoev.ru
>>>> Subject: Re: cert handling on redirect of https subdomains
>>>>
>>>> On Tue, Sep 09, 2008 at 05:51:04AM +0000, Martian Alien wrote:
>>>>
>>>>         
>>>>> Hi Nginx Group,
>>>>>
>>>>> Just wanted to start off by saying nginx is a rad web server!  Na zdrowie!
>>>>>
>>>>> So we've noticed some issues with setting up https ssl certificates over multiple subdomains.
>>>>>
>>>>> The base domain (example.com) and the first subdomain (www.example.com) work beautifully:
>>>>>
>>>>>   server {
>>>>>     listen www.example.com:443 default;
>>>>>     server_name www.example.com;
>>>>>
>>>>>     ssl on;
>>>>>     ssl_certificate /opt/local/nginx/certs/www.example.com.crt; 
>>>>>     ssl_certificate_key /opt/local/nginx/certs/www.example.com.key; 
>>>>>
>>>>>     location / {
>>>>>       # ...
>>>>>     }
>>>>>   }
>>>>>
>>>>>   server {
>>>>>
>>>>>     listen www.example.com:80 default;
>>>>>
>>>>>     server_name www.example.com;
>>>>>     location / {
>>>>>
>>>>>       # ...
>>>>>
>>>>>     }
>>>>>
>>>>>   }
>>>>>
>>>>>
>>>>>   server {
>>>>>     listen example.com:443;
>>>>>     server_name  example.com;
>>>>>
>>>>>     ssl on;
>>>>>     ssl_certificate /opt/local/nginx/certs/example.com.crt; 
>>>>>     ssl_certificate_key /opt/local/nginx/certs/example.com.key; 
>>>>>
>>>>>     rewrite ^/(.*) https://www.example.com/$1 permanent;
>>>>>   }
>>>>>
>>>>>   server {
>>>>>     server_name  example.com;
>>>>>     rewrite ^/(.*) http://www.example.com/$1 permanent;
>>>>>   }
>>>>>
>>>>> NOW, If the following is added, the correct SSL cert for api.example.com is not loaded before the redirect, the www.example.com cert is loaded instead:
>>>>>
>>>>>   server {
>>>>>     listen 127.0.0.1:443;
>>>>>     server_name  api.example.com api;
>>>>>
>>>>>     ssl on;
>>>>>     ssl_certificate /opt/local/nginx/certs/api.example.com.crt; 
>>>>>     ssl_certificate_key /opt/local/nginx/certs/api.example.com.key; 
>>>>>
>>>>>     rewrite ^/(.*) https://www.example.com/$1 permanent;
>>>>>   }
>>>>>
>>>>>   server {
>>>>>     listen 127.0.0.1:80;
>>>>>     server_name  api.example.com api;
>>>>>     rewrite ^/(.*) http://www.example.com/$1 permanent;
>>>>>   }
>>>>>
>>>>>
>>>>> Any ideas on how,  to setup multiple SSL / HTTPS subdomains, each with their own cert in nginx?
>>>>>
>>>>> I've tried many conf variants.  At this point, I'm suspecting it is a bug in nginx, but how would that be possible. =)
>>>>>           
>>>> 127.0.0.1 is loopback interface, do you connect to it from outside ?
>>>>
>>>>
>>>> -- 
>>>> Igor Sysoev
>>>> http://sysoev.ru/en/
>>>>
>>>>         
>>> _________________________________________________________________
>>> See how Windows Mobile brings your life together?at home, work, or on the go.
>>> http://clk.atdmt.com/MRT/go/msnnkwxp1020093182mrt/direct/01/
>>>       
>> -- 
>> Igor Sysoev
>> http://sysoev.ru/en/
>>
>>     
>
> _________________________________________________________________
> Get more out of the Web. Learn 10 hidden secrets of Windows Live.
> http://windowslive.com/connect/post/jamiethomson.spaces.live.com-Blog-cns!550F681DAD532637!5295.entry?ocid=TXT_TAGLM_WL_domore_092008
>   





More information about the nginx mailing list