cert handling on redirect of https subdomains

Igor Sysoev is at rambler-co.ru
Thu Sep 11 12:08:00 MSD 2008


On Thu, Sep 11, 2008 at 07:56:56AM +0000, 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.

You need at least three different IP addresses on the host:

http://www.modssl.org/docs/2.8/ssl_faq.html#ToC47

Otherwise you need wildcard certificate or certificate with alternative names.

> ----------------------------------------
> > 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

-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list