伺服器多站點多域名HTTPS實現
假設有這樣一個場景,我們有多個站點(例如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;
-
}
-
}
在上述基礎上,再新增另一段配置
- server {
- listen 443;
- server_name dommain2;
- ssl on;
- ssl_certificate 磁碟目錄/訂單號2.pem;
- ssl_certificate_key 磁碟目錄/訂單號2.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;
- }
- }
透過上述配置在Nginx中支援多個證書
Apache
- # Apache配置HTTPS虛擬主機共享443埠
- Listen443
- NameVirtualHost*:443
- <VirtualHost*:443>
- ServerName
- SSLCertificateFile common.crt;
- SSLCertificateKeyFile common.key;
- SSLCertificateChainFile ca.crt
- </VirtualHost>
- #在上述基礎上,再新增另一段配置,實現第二個虛擬主SSL
- <VirtualHost*:443>
- ServerName
- SSLCertificateFile common2.crt;
- SSLCertificateKeyFile common2.key;
- SSLCertificateChainFile ca2.crt
- </VirtualHost>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957453/viewspace-2760813/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 多域名路由訪問站點子目錄路由
- 實現dnmp中多站點多版本php並存PHP
- 在一臺Apache伺服器上建立多個站點(不同域名)Apache伺服器
- 實現多型多對多 幾個注意點多型
- 線上多域名實戰
- 同一臺伺服器部署多個專案,實現不同域名訪問伺服器
- nginx多站點配置Nginx
- IIS6 多域名證書安裝 – HTTPS SSL 教程HTTP
- 在Apache上實現多HTTPS虛擬主機ApacheHTTP
- 如何使用 Apache Web 伺服器配置多個站點ApacheWeb伺服器
- Nginx的安裝和多域名配置的實現方法Nginx
- 多域名解析及延伸知識點
- 多域名共享 cookiesCookie
- 多執行緒伺服器的實現執行緒伺服器
- Nginx 站點配置多目錄管理Nginx
- .htaccess 多域名訪問
- 如何部署HTTPS站點HTTP
- Keepalived+HAProxy基於ACL實現單IP多域名負載功能負載
- Nginx實現301跳轉至https的根域名展示NginxHTTP
- Apache搭建多個站點方法詳解Apache
- 多執行緒實現多工二執行緒
- 多執行緒實現多工一執行緒
- IIS配置多域名跨域跨域
- Homestead 使用多埠做域名
- 一個域名可以對應多個IP嗎?如何透過DNS實現?DNS
- Homestead 站點如何配置 httpsHTTP
- 使用Let’s Encrypt實現網站https化網站HTTP
- 多雲已成現實,企業如何更好地實現多雲管理?
- IIS伺服器配置網站301重定向實現不帶www域名跳轉到帶www域名方法伺服器網站
- Docker Nginx 配置多個子域名DockerNginx
- 基於windows伺服器下wamp多域名的配置操作方法Windows伺服器
- HTTP和HTTPS有什麼區別?如何實現網站的HTTPS?HTTP網站
- 微信小程式實現點贊、取消點贊,和多項點選功能微信小程式
- 香港多C段站群伺服器的優勢伺服器
- shell的多程式實現
- 多選操作的實現
- Go 如何實現多型Go多型
- GRPC 多平臺實現RPC