http切換至https相關配置

2021-09-02 17:19:21 字數 2198 閱讀 6715

為了更好的使用者體驗,啟用了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的報文大概分成三大部分。第一部分是請求行,第二部分是請求的首部,第三部分才是請求的正文實體...