【合理解決】一個服務器上用多個SSL證書實現多網站https改造的實施方案

2022-05-24    分類: 網站建設

現在不管是微信小程序還是一些其他方面的接口,都強制要求實現https的鏈接,特別是微信小程序還要求是1.2以上的SSL,基本上就把win2003的服務器逼上絕路了。
網上也有一些用端口號的,野狼覺得都有些強人所難,效果并不好。那么野狼覺得效果比較好的方案有兩個:
(1)使用apache服務器
這個只是一個思路,野狼沒有嘗試過,應該是行得通的。不管你是linux系統還是win系統也都能安裝apache。但如果你對win系統比較熟悉,不懂linux或者對于IIS熟悉不太懂apache等,可能就麻煩一些。
(2)用win2012版本的服務器
win2003、win2008野狼已經驗證過,沒有辦法實現一個服務器多個ssl證書。但是win2012 r2就不一樣了,可以跟綁定普通http域名一樣,寫域名頭,這樣就實現了一個服務器上可以用多個證書的。

SSL證書配置
附1:服務器多站點多域名HTTPS實現
更新時間:2017-07-31 14:21:01
假設有這樣一個場景,我們有多個站點(例如site1.marei.com,site2.marei.com和site3.marei.com)綁定到同一個IP:PORT,并區(qū)分不同的主機頭。我們?yōu)槊恳粋€SSL站點申請并安裝了證書。在瀏覽網站時,用戶仍看到證書不匹配的錯誤。
1. IIS中實現
問題原因
當一個https的請求到達IIS服務器時,https請求為加密狀態(tài),需要拿到相應的服務器證書解密請求。由于每個站點對應的證書不同,服務器需要通過請求中不同的主機頭來判斷需要用哪個證書解密,然而主機頭作為請求的一部分也被加密。最終IIS只好使用第一個綁定到該IP:PORT的站點證書解密請求,從而有可能造成對于其他站點的請求失敗而報錯。
解決方案
第一種解決方案將每個https站點綁定到不同的端口。但是這樣的話客戶端瀏覽網頁時必須手動指定端口,例如 https://site.domain.com:444
第二種解決方案是為每個站點分配一個獨立的ip,這樣沖突就解決了,甚至主機頭也不用添加了。
第三種解決方案是使用通配證書。我們采用通配證書頒發(fā)給.domain.com,對于我們的示例中,應該采用頒發(fā)給.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
2. 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 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
……

附2:IIS6上實現多域名證書
檢查WINDOWS2003是否已經升級到SP1以上版本,如果沒有升級SP1,則后續(xù)步驟將無法完成確保使用的證書是多域名,或者是通配符證書,兩個網站必須都使用這個證書,如果這個證書的CN和SAN不包含著2個網站的域名,就會報警告首先按正常的流程,為站點1,安裝SSL證書,并將SSL端口配置為443。對站點2,選擇分配證書,并選擇站點1使用的證書,并將SSL端口配置為其他端口號(444,445,446...)

SSL證書配置
SSL證書配置

SSL證書配置

IIS SNI 4請用本機管理員登入系統,啟動命令行程序“cmd”。運行以下指令:
cscript.exe c:inetpubadminscriptsadsutil.vbs set /w3svc/站點標識符/SecureBindings ":443:主機頭"
回到IIS6控制臺,刷新,可以發(fā)現網站2的SSL端口已經改成443了。
IIS服務器多域名SSL證書綁定443端口解決方案
默認情況一個服務器的IIS只能綁定一個HTTPS也就是443端口
要實現多個站點對應HTTPS只能更改IIS配置
1、默認情況一個服務器的IIS只能綁定一個HTTPS也就是443端口
要實現多個站點對應HTTPS只能更改IIS配置
首先把每個站點分配個不同端口,如443.444.445…(證書一定要是多域的)
2、然后在:C:Windowssystem32inetsrvconfigapplicationHost.config
找到
修改成:
切記需要對應的每個站點都修改。
3、然后在iis的站點上重新選擇下證書,重啟iis站點。

本文標題:【合理解決】一個服務器上用多個SSL證書實現多網站https改造的實施方案
網站路徑:http://www.muchs.cn/news/157724.html

成都網站建設公司_創(chuàng)新互聯,為您提供Google、網站收錄微信公眾號、App開發(fā)動態(tài)網站、面包屑導航

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

商城網站建設