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