ITPub博客

首页 > 云计算 > 虚拟化 > 服务器多站点多域名HTTPS实现

服务器多站点多域名HTTPS实现

虚拟化 作者:126云 时间:2021-03-03 11:45:12 0 删除 编辑

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

IIS

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

解决方案

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

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

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

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


  • Nginx

  • 打开 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 TLSv1TLSv1.1TLSv1.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;
  • }

  • }

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


  1. server {
  2. listen 443;
  3. server_name dommain2;
  4. ssl on;
  5. ssl_certificate 磁盘目录/订单号2.pem;
  6. ssl_certificate_key 磁盘目录/订单号2.key;
  7. ssl_session_timeout 5m;
  8. ssl_protocols TLSv1TLSv1.1TLSv1.2;
  9. ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
  10. ssl_prefer_server_ciphers on;
  11. location /{
  12. root html;
  13. index index.html index.htm;
  14. }
  15. }

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

Apache

  1. # Apache配置HTTPS虚拟主机共享443端口
  2. Listen443
  3. NameVirtualHost*:443
  4. <VirtualHost*:443>
  5. ServerName 
  6. SSLCertificateFile common.crt;
  7. SSLCertificateKeyFile common.key;
  8. SSLCertificateChainFile ca.crt
  9. </VirtualHost>
  10. #在上述基础上,再添加另一段配置,实现第二个虚拟主SSL
  11. <VirtualHost*:443>
  12. ServerName 
  13. SSLCertificateFile common2.crt;
  14. SSLCertificateKeyFile common2.key;
  15. SSLCertificateChainFile ca2.crt
  16. </VirtualHost>


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69957453/viewspace-2760813/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
文章来自网络,如有侵害,请私信

注册时间:2019-12-14

  • 博文量
    344
  • 访问量
    257075