我可以通过HTTPS将redirect发送到单独的域吗?

我在一台服务器上有两个不同的域名。 我已经通过将SSL编号2指向另一个端口号(在本例中为444)来完成此操作。下面的apache代码:

<VirtualHost XX.XX.XX.XX:443> ServerAlias *.xxxx.com ServerName xxxx.com SSLEngine on SSLCertificateFile /usr/local/ssh/xxx/xxx.crt SSLCertificateKeyFile /usr/local/ssh/xxxx/xxxx.key DocumentRoot /var/www/www.xxxxx.com/web/ </VirtualHost> Listen 444 NameVirtualHost *:444 <VirtualHost xx.xx.xx.xx:444> ServerAlias *.yyyyyy.com ServerName yyyyyy.com SSLEngine on SSLCertificateFile /usr/bin/yyyyy.com.crt SSLCertificateKeyFile /usr/bin/yyyy.key SSLCertificateChainFile /usr/bin/yyyyy.crt DocumentRoot /var/www/www.yyyyyy.com/web/ </VirtualHost> 

目前,我的所有链接都指向https://yyyyy.com:444/,因此用户看不到任何无效的SSL证书。 问题是我有一些用户,只需键入https://yyyyy.com/ ,不要input端口#,他们不应该。

如果我访问, https: //yyyyy.com/它正在查看xxxx.com的证书,并且popup一个无效的ssl证书错误。 我已经尝试了几个国防部重写,如果yyyyy.com端口443redirect到https://yyyyy.com:444/

我相信答案是显而易见的…但是对于我的生活,我无法弄清楚!

这是不可能的,除非你有一个共同的顶级域的两个子域,并且你已经获得了通配符证书。

这是不可能的原因是,当一个客户键入https://yyyyy.com/ (注意,编号:444),他们的浏览器启动一个TLS连接到侦听端口443的进程。在这个端口上,证书和握手信息(其中包括绑定到该ip:端口组合的默认虚拟主机的主机名)被交换。

只有build立了TLS连接后,才能交换HTTP级别301redirect。 但是到此为止,客户已经看到了https://xxxx.com的无效证书信息。

另外,我注意到你将www.xxxx.com别名为xxxx.com ,它会产生同样的效果。 您的证书(除非是通配符)仅适用于xxxx.comwww.xxxx.com

可能的解决scheme:

  • 有关设置ApacheServer以使用一个IP地址为多个HTTPS站点提供服务的信息
  • 基于名称的SSL虚拟主机:如何解决这个问题

Antoine Benkemoun,曾经的情况是,你不能用基于名字的虚拟主机来做多个SSL,但是使用不同的端口来解决这个限制。
如果不使用GnuTLS,你还是不行

我想在这里猜测,但我怀疑你不使用GnuTLS为您的Web服务器SSL库,因此你要求的是名字底座虚拟和SSL,将无法正常工作。

使用SSL,一个IP =一个证书。 如果您需要多个证书,请获取额外的IP。 这是一个例外是多个子域名签署的多域名证书。