為了更好的使用者體驗,啟用了https,需要去各大主機商那裡購買ssl證書,https的好處大概以下幾點:
1.資料傳輸加密,防止資訊被竊取;
2.防止被欺詐,增加**信任,防釣魚;
3.防止被劫持;
部署了https的整體結構如圖:
https配置,以nginx為例,參考:
1.生成證書,使用openssl工具來生成對應的證書:
cd /etc/nginx
openssl genrsa -des3 -out server.key 1024 # 設定證書密碼
openssl req -new -key server.key -out server.csr # 根據提示輸入各種資訊
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
生成的csr檔案包含了主要的證書資訊,key檔案主要包含了金鑰交換和加密等資訊,屬於私鑰,要儲存好。將csr檔案提交給ca廠商,會在幾天後發給乙份簽好的證書檔案 crt檔案,同時會給你ca的證書鏈。
2.設定https證書
其中最為關鍵的就是 ssl_certificate 和 ssl_certificate_key 這兩項配置檔案位置及相關訪問許可權請自行注意並更改,其他的按正常配置。不過多了乙個 proxy_set_header x-forwarded-proto https; 配置。
最主要的配置來自 tomcat,下面是我測試環境中的完整 server.xml:
以及後面的hostname:
unpackwars="true" autodeploy="true">
上述的配置中沒有什麼特別的,但是特別特別注意的是必須有proxyport="443",當然 redirectport 也必須是443。同時 節點的配置也非常重要,否則你在 tomcat 中的應用在讀取 getscheme() 方法以及在 web.xml 中配置的一些安全策略會不起作用。
需要值得注意的是,配置後tomcat的8080埠在外部依然可以直接訪問,如果是集群環境,將會帶來極大的安全隱患且此次配置也毫無意義了。所以應該在整個伺服器區域網外圍切斷8080埠的訪問(之前與第三方有互動並已經預定8080埠訪問的服務可以酌情開放)並且在區域網內部開放8080埠的訪問。
http與https的自動跳轉
在我們使用baidu時,如果沒有使用http的話,也會直接轉換成https,不需要使用者手動操作,當前在我們的伺服器中,既能支援http,也支援https,如果是惡意使用者,可以不使用http進行操作,所以我們也需要增加這一功能。
需要將80和443拆開,443https埠仍然保持原樣,80埠,使用301 http code轉移至https:
server
301和302之間的區別可以參考:
乙個表示永久轉移,乙個表示暫時轉移,對於使用者來說,僅僅是乙個跳轉,瀏覽器中舊的url變成了新的url,但302可能會有url規範化和**劫持的問題,被搜尋引擎判斷為可疑轉向,甚至認為是xx,因此我們這裡採用301。
https仍然按照之前的配置即可:
server {
listen 443 ssl;
ssl_certificate /usr/local/nginx/ca/server.cer;
ssl_certificate_key /usr/local/nginx/ca/server.key;
ssl_session_cache shared:ssl:1m;
ssl_session_timeout 5m;
...
但內網我們使用的named服務,可以根據內網網域名稱來進行請求分發,僅使用http,因此還需要為.net網域名稱額外指定乙個虛擬主機,因為是內網訪問,所以僅支援http。 管理系統從http切換到https
最近將線上的管理系統從http切換到https時遇到幾個問題。一是,我們的管理系統是前後端分離開發的,前端頁面單獨部署到nginx上,前端訪問位址埠和後端訪問位址埠不同,我們在切換到https時,希望使用子網域名稱的方式,即page.company.com及backend.company.com的方...
http改用https資料
1 nsurlconnection怎麼把http改為https?一直使用nsurlconnection請求http介面,現在為了安全性的考慮打算使用https。那麼怎麼修改呢?1.不需要證書驗證 ps 我們使用的就是這種 1.1 直接修改http為https 1.2 確認有 security.fra...
HTTP協議 HTTPS協議
http協議是基於tcp協議的,當然是要先建立tcp連線了。目前使用的http協議大部分都是1.1.在1.1的協議裡面,預設是開啟了keep alive的,這樣建立的tcp連線,就可以在多次請求中復用。http的報文大概分成三大部分。第一部分是請求行,第二部分是請求的首部,第三部分才是請求的正文實體...