HTTPS(全稱:HyperText Transfer Protocol Secure)是HTTP(超文本傳輸協(xié)議)的安全版本。本質(zhì)上,HTTPS在HTTP的基礎上,通過SSL/TLS協(xié)議提供了數(shù)據(jù)加密、完整性保護和身份驗證,以確保網(wǎng)絡數(shù)據(jù)傳輸?shù)陌踩?。HTTPS被廣泛用于互聯(lián)網(wǎng)上的安全通信,特別是在線交易和處理敏感信息時,本文以Nginx為例部署自簽發(fā)https證書。
一、HTTPS的主要特點包括: 加密 :HTTPS利用SSL/TLS協(xié)議在客戶端和服務器之間建立加密連接,保護數(shù)據(jù)傳輸過程中的隱私和安全,防止數(shù)據(jù)在傳輸過程中被竊聽或篡改。數(shù)據(jù)完整性 :確保數(shù)據(jù)在傳輸過程中未被篡改,保持了數(shù)據(jù)的完整性。身份驗證 :通過SSL/TLS證書幫助確認服務器的真實身份,防止DNS劫持或中間人攻擊等安全問題。二、HTTPS的工作原理: 客戶端發(fā)送HTTPS請求 :用戶在瀏覽器中輸入一個HTTPS的URL,瀏覽器向服務器發(fā)送一個請求,請求建立SSL連接。服務器響應 :服務器向客戶端發(fā)送其SSL證書,該證書包含服務器的公鑰以及證書的頒發(fā)機構(gòu)等信息。客戶端驗證證書 :客戶端(如瀏覽器)驗證證書的有效性,確保它是由受信任的證書頒發(fā)機構(gòu)(CA)簽發(fā)的,并且證書對應的域名與正在訪問的域名匹配。如果證書驗證通過,則繼續(xù);如果失敗,將警告用戶連接不安全。密鑰交換 :客戶端生成一個隨機的對稱密鑰,使用服務器的公鑰加密這個對稱密鑰,并發(fā)送給服務器。服務器使用自己的私鑰解密,獲取對稱密鑰。加密通信 :雙方使用上述協(xié)商的對稱密鑰加密通信內(nèi)容,確保數(shù)據(jù)傳輸?shù)陌踩浴?/section>三、為什么HTTPS如此重要: 隱私保護 :HTTPS加密了用戶與網(wǎng)站之間的所有交互,保護了用戶數(shù)據(jù)的隱私。安全性增強 :通過身份驗證和數(shù)據(jù)完整性校驗,HTTPS減少了被中間人攻擊的風險。信任增強 :網(wǎng)站使用HTTPS可以在瀏覽器地址欄顯示安全鎖標志,增加用戶對網(wǎng)站的信任。搜索引擎優(yōu)化 :許多搜索引擎,包括Google,對使用HTTPS的網(wǎng)站給予更高的排名。四、部署HTTPS需要滿足以下基本條件和步驟: 購買證書 :你可以從許多證書頒發(fā)機構(gòu)(CA)購買SSL/TLS證書,例如VeriSign、Comodo、Let's Encrypt等。這些證書的價格和類型(如域名驗證DV、組織驗證OV、擴展驗證EV)不同,適用于不同的需求和預算。免費證書 :Let's Encrypt提供了免費的SSL/TLS證書,適用于大多數(shù)基本需求,并且支持自動續(xù)簽。這使得HTTPS更容易為各種網(wǎng)站所采納。證書的安裝和配置過程會根據(jù)你的服務器軟件(如Apache、Nginx、IIS等)而異。通常,你需要將獲取的證書(通常是一個.crt文件)和私鑰(一個.key文件)安裝到服務器上,并且可能需要安裝證書頒發(fā)機構(gòu)的中間證書。 配置過程中,你需要修改服務器的配置文件,指定證書文件和私鑰文件的位置,并且可能需要指定使用的加密套件和協(xié)議版本等安全設置。 確保網(wǎng)站上所有的資源(如圖片、腳本、樣式表等)都通過HTTPS而非HTTP加載,避免“混合內(nèi)容”問題,這可能會導致瀏覽器安全警告。 對于外部資源,確保鏈接使用HTTPS,或者考慮將它們托管在你自己的服務器上。 配置服務器自動將所有HTTP請求重定向到HTTPS,確保用戶即使輸入了HTTP URL也能通過安全的HTTPS連接訪問網(wǎng)站。 在服務器配置中實現(xiàn)重定向通常很簡單,例如在Apache服務器上,你可以使用.htaccess
文件來設置重定向規(guī)則。 更新網(wǎng)站的內(nèi)部鏈接,確保它們使用HTTPS。 如果你使用了第三方服務(如社交媒體登錄、在線支付網(wǎng)關等),請確保它們支持HTTPS,并且配置正確。 在全面啟用HTTPS之前,使用工具如Qualys SSL Labs的SSL Server Test進行全面測試,確保證書正確安裝,且服務器配置符合最佳實踐。 Nginx 部署本地生成https 本地生成在沒有域名的情況下基于ip生成如果存在域名可以基于certbot 生成免費證書
1 檢查nginx是否支持配置
nginx -V
2 證書生成
ubuntu: sudo apt-get install libssl-dev centos: yum install openssl yum install openssl-devel
3 生成證書
1進入證書目錄cd /etc/nginx/sslkey 2創(chuàng)建本地私有密鑰 openssl genrsa -out ssl.key 2048 3按提示輸入即可 openssl req -new -key ssl.key -out ssl.csr 4創(chuàng)建證書crt openssl x509 -req -days 1460 -in ssl.csr -signkey ssl.key -out ssl.crt 5創(chuàng)建證書pem openssl dhparam -out ssl.pem 2048
4 Nginx 配置
server { listen 80; return 301 https://$host $request_uri ; } server { listen 443 ssl; ssl_certificate /etc/nginx/sslkey/ssl.crt; ssl_certificate_key /etc/nginx/sslkey/ssl.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" ; }
檢查配置項,并重啟
nginx -t nginx -s reload
自簽名證書是一種由服務器管理員自己創(chuàng)建的證書,而不是由 CA 頒發(fā)的。這種證書提供了相同級別的加密,但不提供第三方驗證身份的信任。自簽名證書通常用于內(nèi)部網(wǎng)絡、測試環(huán)境或其他不需要公眾信任的場景。使用自簽名證書的主要問題是瀏覽器會警告用戶這個證書不受信任,因為它沒有由已知的 CA 頒發(fā)。用戶需要手動添加一個例外或信任該證書,才能訪問網(wǎng)站。
該文章在 2024/3/30 0:06:15 編輯過