假设有这样一个场景,我们有多个站点(例如site1.marei.com,site2.marei.com和site3.marei.com)绑定到同一个IP:PORT,并区分不同的主机头。我们为每一个SSL站点申请并安装了证书。在浏览网站时,用户仍看到证书不匹配的错误。

IIS中实现HTTPS

问题原因

当一个https的请求到达IIS服务器时,https请求为加密状态,需要拿到相应的服务器证书解密请求。由于每个站点对应的证书不同,服务器需要通过请求中不同的主机头来判断需要用哪个证书解密,然而主机头作为请求的一部分也被加密。最终IIS只好使用第一个绑定到该IP:PORT的站点证书解密请求,从而有可能造成对于其他站点的请求失败而报错。

解决方案

第一种解决方案将每个https站点绑定到不同的端口。但是这样的话客户端浏览网页时必须手动指定端口,例如https://site.domain.com:444

第二种解决方案是为每个站点分配一个独立的ip,这样冲突就解决了,甚至主机头也不用添加了。

第三种解决方案是使用通配证书。我们采用通配证书颁发给.domain.com,对于我们的示例中,应该采用颁发给.marei.com的证书,这样任何访问该domain的请求均可以通过该证书解密,证书匹配错误也就不复存在了。

第四种解决方案是升级为IIS8,IIS8中添加的对于SNI(Server Name Indication)的支持,服务器可以通请求中提取出相应的主机头从而找到相应的证书。

SNI开启方式请参考http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-server-name-indication-sni-ssl-scalability

Nginx中实现HTTPS

打开Nginx安装目录下 conf目录中打开 nginx.conf文件,找到

server {

listen 443;

server_name domain1;

ssl on;

ssl_certificate 磁盘目录/订单号1.pem;

ssl_certificate_key 磁盘目录/订单号1.key;

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;

ssl_prefer_server_ciphers on;

location / {

root html;

index index.html index.htm;

}

}

在上述基础上,再添加另一段配置

server {

listen 443;

server_name dommain2;

ssl on;

ssl_certificate 磁盘目录/订单号2.pem;

ssl_certificate_key 磁盘目录/订单号2.key;

ssl_session_timeout 5m;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;

ssl_prefer_server_ciphers on;

location / {

root html;

index index.html index.htm;

}

}

通过上述配置在Nginx中支持多个证书。

Apache配置HTTPS虚拟主机共享443端口

Listen 443

NameVirtualHost *:443

……

ServerName www.example1.com

SSLCertificateFile common.crt;

SSLCertificateKeyFile common.key;

SSLCertificateChainFile ca.crt

……

……

ServerName www.example2.com

SSLCertificateFile common2.crt;

SSLCertificateKeyFile common2.key;

SSLCertificateChainFile ca2.crt

……

如何在同一服务器上实现多站点多域名HTTPS?相关推荐

  1. windows server服务器上部署java+tomcat网站域名配置

    如果只是部署java项目的话,可以把IIS删除,然后在服务器上安装jdk tomcat 配置好环境变量,就和你在自己计算机上开发一样,把你的项目war包拷到tomcat下的webapps里(任意目录都 ...

  2. 在云服务器上搭建ftp站点

    一.FTP协议主动(Port)模式和被动(Passive)两种模式详解 二.安装教程 可能出现的问题: 改完配置文件后服务启动不了: 原因: 1.我使用了Xftp 6 改文件上传 2.每行语句后面有注 ...

  3. .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上

    天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMemc ...

  4. 将Hexo搭建到自己的服务器上

    将Hexo搭建到自己的服务器上 文章目录 将Hexo搭建到自己的服务器上 第一部分:服务器端的操作 1.安装git 和nginx 2.添加一个git用户 3.给git用户添加ssh密钥 4.创建git ...

  5. PowerLinux 服务器上安装 Oracle (详细步骤)

    PowerDirector 一套针对 IBM® PowerLinux 系列服务器的统一管理工具,能够提供便捷高效的虚拟化管理,是一款非常简单易用的管理.可以只通过Web Browser即可对多台服务器 ...

  6. 在服务器上安装tensorflow-gpu版本及其使用

    [Deprecated]在服务器上安装tensorflow-gpu版本及其使用 已过时,不建议参考 本文档是在服务器上,不要su权限,全部命令行下载安装配置教程 ###### 系统 Centos7 显 ...

  7. python 怎么部署_如何把Python项目部署到服务器上

    如何把Python项目部署到服务器上 一,不需要域名的情况下 1,访问阿里云官网 2,注册登录(建议支付宝授权) 3,登陆后--->产品-->云服务器ECS 4,滚动条拉倒页面底部--&g ...

  8. 网站服务器建设方法,如何在服务器上建立站点的方法步骤

    新手建好了网站可能不知道如何在服务器上建立站点,让互联网其他人能访问自己的网站,今天通过亲手实践操作,以图文形式描述在服务器上建立站点的一些步骤和方法. 首先,需要了解,服务器和普通电脑没有太大的区别 ...

  9. 服务器多网站布置,如何在一台服务器上实现多个web站点的方法

    如何在一台服务器上实现多个web站点的方法 2007-04-30 00:00:00 作者: 如何在一台服务器上实现多个web站点的方法 摘要:Windows2000Server安装成功后,一般会启动一 ...

最新文章

  1. 读后感与机翻《从视频中推断力量和学习人类效用》
  2. closewait一直不释放_家里甲醛一直去不掉,原来是原理弄错了!跟邻居学来这一招搞定...
  3. Java基础与实践题库_Java程序设计基础与实践(题库版)
  4. CUDA,C++,Java,Python,Fortran运行速度比较
  5. 入职体检——项目列表(12项)
  6. 牛客题霸 最少素数拆分 C++题解/答案
  7. 在任何无法理解的情况下,请编写脚本
  8. 将MyEclipse项目导入到Eclipse中
  9. python传中文参数_解决Python传递中文参数的问题
  10. hadoop2.2.0 core-site.xml--global properties
  11. centos是什么系统_解决更换操作系统后的开机问题
  12. 高效获得准确的中国地图数据并进行可视化
  13. 【营销学堂】从饥饿营销到口碑营销
  14. 单调栈和单调队列的本质区别
  15. 【C语言】输出国际象棋棋盘
  16. 未能解析主引用“Fiddler”,因为它是针对“.NETFramework,Version=v4.6.1”框架生成的。该框架版本高于当前目标框架“.NETFramework,Version=v4.5
  17. matlab郭彦甫-听课笔记-02
  18. 便利vector_你好,C++!(57)9.2 vector容器是数组的最佳替代者
  19. 简单快速的多图像拼接---百图拼接
  20. MT60B1G16HC-48B:A美光内存颗粒FBGA代码D8BNK

热门文章

  1. 用python制作一个简单的在线单词翻译器
  2. js date详解、string转date
  3. mp3lame linux 编译,Linux下使用FFmpeg将ogg转mp3
  4. android 自定义view仿支付宝写五褔及播放
  5. 欧朋浏览器java下载_欧朋浏览器java手机版
  6. Alienware X14笔记本怎么U盘重装Win10系统教学
  7. 终于干了点正事。。三天用了三个库opencv、emgu、aforge.net[2011.7.30]
  8. 2023年全国最新二级建造师精选真题及答案19
  9. 带你走进Android之Notification
  10. Linux设备相关信息查询