怎樣在服務(wù)器上啟用 HTTPS

摘要

創(chuàng)建一個(gè) 2048 位 RSA 公鑰/私鑰對(duì)。

生成一個(gè)嵌入您的公鑰的證書(shū)簽名請(qǐng)求 (CSR)

將 CSR 與證書(shū)頒發(fā)機(jī)構(gòu) (CA) 共享以接收最終證書(shū)或證書(shū)鏈。

將最終證書(shū)安裝在非網(wǎng)絡(luò)可訪問(wèn)的位置,例如/etc/ssl(Linux 和 Unix)或 IIS 需要它的位置 (Windows)。

此部分使用 openssl 命令行程序(大部分 Linux、BSD 和 Mac OS X 系統(tǒng)均附帶此程序)來(lái)生成私鑰/公鑰和 CSR。

我們首先生成一個(gè) 2048 位 RSA 密鑰對(duì)。較短的密鑰,如 1024 位,不足以抵御暴力猜測(cè)攻擊。 較長(zhǎng)的密鑰,如 4096 位,則有點(diǎn)過(guò)度。 長(zhǎng)遠(yuǎn)來(lái)看,隨著計(jì)算機(jī)處理開(kāi)銷降低,密鑰長(zhǎng)度會(huì)增加。 目前 2048 是最佳長(zhǎng)度。

用于生成 RSA 密鑰對(duì)的命令為:

這將生成以下輸出:

在此步驟中,您將公鑰和有關(guān)貴組織及網(wǎng)站的信息嵌入到證書(shū)簽名請(qǐng)求(或 CSR)中。openssl命令以交互方式要求您提供所需的元數(shù)據(jù)。

運(yùn)行以下命令:

系統(tǒng)將輸出以下內(nèi)容:

為確保 CSR 的有效性,請(qǐng)運(yùn)行以下命令:

響應(yīng)結(jié)果應(yīng)如下所示:

對(duì)于不同的證書(shū)頒發(fā)機(jī)構(gòu) (CA),需要使用不同的方法將 CSR 發(fā)送給他們。 這些方法可能包括在其網(wǎng)站上使用表單、以電子郵件或其他方式發(fā)送 CSR。 一些 CA(或其經(jīng)銷商)甚至可能將其中部分或全部流程自動(dòng)化(在某些情況下,包括密鑰對(duì)和 CSR 的生成)。

將 CSR 發(fā)送給 CA 并按照他們的說(shuō)明接收最終證書(shū)或證書(shū)鏈。

對(duì)于為您的公鑰進(jìn)行證實(shí)的服務(wù),不同 CA 的收費(fèi)將有所不同。

還可以選擇將密鑰映射到多個(gè) DNS 名稱,包括多個(gè)獨(dú)立名稱(例如 example.com、www.example.com、example.net 和 www.example.net 的全部)或“通配符”名稱(例如 *.example.com)。

例如,某個(gè) CA 目前提供以下價(jià)格:

標(biāo)準(zhǔn):16 美元/年,適用于 example.com 和 www.example.com。

通配符:150 美元/年,適用于 example.com 和 *.example.com。

按這些價(jià)格,當(dāng)您有 9 個(gè)以上子域名時(shí),通配符證書(shū)比較劃算;您也可以只購(gòu)買(mǎi)一個(gè)或多個(gè)單名稱證書(shū)。 (例如,如果您有五個(gè)以上子域名,在服務(wù)器上啟用 HTTPS 時(shí),您可能發(fā)現(xiàn)通配符證書(shū)更方便。)

Note:?記住,在通配符證書(shū)中,通配符只適用于一個(gè) DNS 標(biāo)簽。對(duì) *.example.com 有效的證書(shū)將對(duì) foo.example.com 和 bar.example.com 有效,但對(duì)于 foo.bar.example.com 無(wú)效。

將證書(shū)復(fù)制到所有前端服務(wù)器的非網(wǎng)絡(luò)可訪問(wèn)位置,例如/etc/ssl(Linux 和 Unix)或 IIS 需要它們的位置 (Windows)。

在服務(wù)器上啟用 HTTPS 是確保網(wǎng)頁(yè)安全的關(guān)鍵一步。

使用 Mozilla 的服務(wù)器配置工具來(lái)設(shè)置服務(wù)器以支持 HTTPS。

定期使用 Qualys 便捷的 SSL 服務(wù)器測(cè)試來(lái)測(cè)試網(wǎng)站,并確保得分至少為 A 或 A+。

此時(shí),您必須做出關(guān)鍵的操作決定。選擇下列其中一項(xiàng):

給為網(wǎng)絡(luò)服務(wù)器提供內(nèi)容的每個(gè)主機(jī)名指定一個(gè)獨(dú)立的 IP 地址。

使用基于名稱的虛擬托管。

如果您一直針對(duì)每個(gè)主機(jī)名使用獨(dú)立的 IP 地址,則可以輕松地讓所有客戶端支持 HTTP 和 HTTPS。

但是,大多數(shù)網(wǎng)站運(yùn)營(yíng)商使用基于名稱的虛擬托管以節(jié)約 IP 地址,另一個(gè)原因是這樣通常更方便。 Windows XP 上的 IE 和 2.3 版以前的 Android 的問(wèn)題是,它們不理解服務(wù)器名稱指示?(SNI),而這對(duì) HTTPS 基于名稱的虛擬托管非常重要。

將來(lái)有一天(希望很快),不支持 SNI 的客戶端將被現(xiàn)代軟件代替。 監(jiān)控請(qǐng)求日志中的 User Agent 字符串,以了解何時(shí)已有足夠的用戶遷移到現(xiàn)代軟件。 (您可以決定您的閾值;可能是 < 5%,或 < 1%。)

如果您的服務(wù)器上還沒(méi)有 HTTPS 服務(wù),請(qǐng)立即啟用(無(wú)需將 HTTP 重定向到 HTTPS;參見(jiàn)下文)。 配置網(wǎng)絡(luò)服務(wù)器以使用您購(gòu)買(mǎi)并安裝的證書(shū)。 您可能發(fā)現(xiàn)?Mozilla 便捷的配置生成器很有用。

如果您有許多主機(jī)名/子域名,它們每個(gè)都需要使用正確的證書(shū)。

Caution:?如果您已完成上述步驟,但您使用 HTTPS 僅僅是為了將客戶端重定向回 HTTP,那么,請(qǐng)馬上停止這么做。參考下一部分以確保 HTTPS 和 HTTP 順暢工作。

Note:?最終,您應(yīng)將 HTTP 請(qǐng)求重定向到 HTTPS 并使用 HTTP 嚴(yán)格傳輸安全 (HSTS)。不過(guò),現(xiàn)在不是向這種做法進(jìn)行遷移的合適階段;請(qǐng)參考“將 HTTP 重定向到 HTTPS”和“打開(kāi)嚴(yán)格傳輸安全和安全 Cookie”。

現(xiàn)在,以及您網(wǎng)站的整個(gè)生命周期中,使用?Qualys 便捷的 SSL 服務(wù)器測(cè)試來(lái)檢查您的 HTTPS 配置。 您的網(wǎng)站得分應(yīng)為 A 或 A+;將導(dǎo)致等級(jí)較低的任何因素均視為錯(cuò)誤。(今天的 A 在明天會(huì)變成 B,因?yàn)獒槍?duì)算法和協(xié)議的攻擊始終在改進(jìn)?。?/p>

由于您的網(wǎng)站同時(shí)運(yùn)行 HTTP 和 HTTPS,不管哪種協(xié)議,都應(yīng)當(dāng)盡可能順暢運(yùn)行。 一個(gè)重要的因素是對(duì)站內(nèi)鏈接使用相對(duì)網(wǎng)址。

確保站內(nèi)網(wǎng)址和外部網(wǎng)址與協(xié)議無(wú)關(guān);即確保使用相對(duì)路徑或省去協(xié)議,例如//example.com/something.js。

當(dāng)您通過(guò) HTTPS 提供一個(gè)包括 HTTP 資源的頁(yè)面(稱為混合內(nèi)容)時(shí)會(huì)出現(xiàn)問(wèn)題。 瀏覽器將警告用戶,已失去 HTTPS 的全部能力。事實(shí)上,如果是主動(dòng)混合內(nèi)容(腳本、插件、CSS、iframe),則瀏覽器通常根本不會(huì)加載或執(zhí)行此內(nèi)容,從而導(dǎo)致頁(yè)面殘缺。

Note:?在 HTTP 頁(yè)面中包括 HTTPS 資源完全沒(méi)問(wèn)題。

此外,當(dāng)您鏈接到您網(wǎng)站中的其他頁(yè)面時(shí),用戶可能從 HTTPS 降級(jí)為 HTTP。

當(dāng)您的頁(yè)面包括了使用http://架構(gòu)的完全限定站內(nèi)網(wǎng)址時(shí),會(huì)出現(xiàn)這些問(wèn)題。

不建議的做法— 我們不建議使用完全限定站內(nèi)網(wǎng)址。

換句話說(shuō),使站內(nèi)網(wǎng)址盡可能是相對(duì)地址:協(xié)議相對(duì)(省去協(xié)議,以//example.com開(kāi)頭)或主機(jī)相對(duì)(以相對(duì)路徑開(kāi)頭,例如/jquery.js)。

建議做法— 我們建議您使用協(xié)議相對(duì)站內(nèi)網(wǎng)址。

建議做法— 我們建議您使用相對(duì)站內(nèi)網(wǎng)址。

通過(guò)腳本實(shí)現(xiàn),而不是手動(dòng)操作。如果網(wǎng)站內(nèi)容在數(shù)據(jù)庫(kù)中,則在數(shù)據(jù)庫(kù)的開(kāi)發(fā)副本中測(cè)試您的腳本。 如果網(wǎng)站內(nèi)容由簡(jiǎn)單文件組成,則要在文件的開(kāi)發(fā)副本中測(cè)試您的腳本。 像平常一樣,只有在更改通過(guò) QA 后,才會(huì)將更改推送到生產(chǎn)平臺(tái)中??梢允褂?Bram van Damme 的腳本或類似腳本來(lái)檢測(cè)網(wǎng)站中的混合內(nèi)容。

在鏈接到其他網(wǎng)站(而不是包括其他網(wǎng)站的資源)時(shí),請(qǐng)勿更改協(xié)議,因?yàn)槟荒芸刂七@些網(wǎng)站的運(yùn)行方式。

Success:?為確保大型網(wǎng)站的遷移更順利,我們建議采用協(xié)議相對(duì)網(wǎng)址。如果您還不確定是否能夠完全部署 HTTPS,則強(qiáng)制網(wǎng)站的所有子資源使用 HTTPS 可能會(huì)弄巧成拙??赡軙?huì)有一段時(shí)間,您對(duì) HTTPS 覺(jué)得新奇,并且 HTTP 網(wǎng)站仍必須像往常一樣運(yùn)行。但從長(zhǎng)遠(yuǎn)看,您將完成遷移并鎖定 HTTPS(請(qǐng)參考接下來(lái)兩個(gè)部分)。

如果網(wǎng)站依賴第三方(例如 CDN、jquery.com)提供的腳本、圖像或其他資源,則有兩個(gè)選擇:

對(duì)這些資源使用協(xié)議相對(duì)網(wǎng)址。如果該第三方不提供 HTTPS,請(qǐng)求他們提供。 大多數(shù)已經(jīng)提供,包括 jquery.com。

從您控制的并且同時(shí)提供 HTTP 和 HTTPS 的服務(wù)器上提供資源。 這通常是個(gè)好點(diǎn)子,因?yàn)槟梢愿玫乜刂凭W(wǎng)站的外觀、性能和安全。 此外,您不必信任第三方,盡管他們總是很不錯(cuò)。

Note:請(qǐng)記住,您還需要更改樣式表、JavaScript、重定向規(guī)則、<link>標(biāo)記和 CSP 聲明中的站內(nèi)網(wǎng)址,而不僅是 HTML 頁(yè)面。

您需要在頁(yè)面的最前面放一個(gè)規(guī)范鏈接,以告訴搜索引擎 HTTPS 是訪問(wèn)您網(wǎng)站的最佳方法。

在頁(yè)面中設(shè)置<link rel="canonical" href="https://…"/>標(biāo)記。這樣可幫助搜索引擎確定訪問(wèn)您網(wǎng)站的最佳方法。

此時(shí),您已準(zhǔn)備好“鎖定”使用 HTTPS。

使用 HTTP 嚴(yán)格傳輸安全 (HSTS) 來(lái)避免 301 重定向產(chǎn)生的開(kāi)銷。

始終在 Cookie 上設(shè)置安全標(biāo)記。

首先,使用嚴(yán)格傳輸安全來(lái)告訴客戶端,它們始終應(yīng)通過(guò) HTTPS 來(lái)連接您的服務(wù)器,即使在訪問(wèn)http://引用時(shí)也是如此。

這樣可挫敗?SSL 剝離?之類的攻擊,還能避免我們?cè)趯?HTTP 重定向到 HTTPS時(shí)啟用的301 redirect產(chǎn)生的往返開(kāi)銷。

Note:如果您的網(wǎng)站在其傳輸層安全協(xié)議 (TLS) 配置中出現(xiàn)過(guò)錯(cuò)誤(例如過(guò)期證書(shū)),則已將您的網(wǎng)站注明為已知 HSTS 主機(jī)的客戶端可能出現(xiàn)硬故障。通過(guò)此方式顯式設(shè)計(jì) HSTS 可確保網(wǎng)絡(luò)攻擊者無(wú)法欺騙客戶端訪問(wèn)沒(méi)有 HTTPS 的網(wǎng)站。在確認(rèn)您的網(wǎng)站運(yùn)營(yíng)足夠可靠之前,不要啟用 HSTS,以避免部署 HTTPS 時(shí)總是出現(xiàn)證書(shū)驗(yàn)證錯(cuò)誤。

通過(guò)設(shè)置Strict-Transport-Security標(biāo)頭來(lái)打開(kāi) HTTP 嚴(yán)格傳輸安全 (HSTS)。OWASP 的 HSTS 頁(yè)面有說(shuō)明鏈接,提供了針對(duì)各種服務(wù)器軟件的說(shuō)明。

大多數(shù)網(wǎng)絡(luò)服務(wù)器提供相似的功能來(lái)添加自定義標(biāo)頭。

Note:max-age的計(jì)算單位為秒。您可以從較小的值開(kāi)始,并隨著您越來(lái)越熟練自如地運(yùn)營(yíng)純 HTTPS 網(wǎng)站而逐步增加max-age。

還要?jiǎng)?wù)必確??蛻舳藦牟煌ㄟ^(guò) HTTP 發(fā)送 Cookie(例如用于身份驗(yàn)證或網(wǎng)站偏好)。 例如,如果用戶的身份驗(yàn)證 Cookie 將在明文中暴露,則其整個(gè)會(huì)話的安全保障將被破壞 — 即使其他的一切都正確無(wú)誤!

因此,更改您的網(wǎng)絡(luò)應(yīng)用,以便始終在其設(shè)置的 Cookie 上設(shè)置安全標(biāo)記。此 OWASP 網(wǎng)頁(yè)解釋了如何在多個(gè)應(yīng)用框架中設(shè)置安全標(biāo)記。 每個(gè)應(yīng)用框架都采用一種方法來(lái)設(shè)置此標(biāo)記。

大多數(shù)網(wǎng)絡(luò)服務(wù)器都提供一種簡(jiǎn)單的重定向功能。使用301 (Moved Permanently)來(lái)告訴搜索引擎和瀏覽器,此 HTTPS 版本是規(guī)范的,并將用戶從 HTTP 重定向到網(wǎng)站的 HTTPS 版本。

對(duì)于從 HTTP 遷移到 HTTPS,許多開(kāi)發(fā)者有著合情合理的顧慮。Google 網(wǎng)站站長(zhǎng)團(tuán)隊(duì)提供了一些非常好的指導(dǎo)【https://plus.google.com/+GoogleWebmasters/posts/eYmUYvNNT5J】。

Google 使用?HTTPS 用作肯定性的搜索質(zhì)量指標(biāo)【https://googlewebmastercentral.blogspot.com/2014/08/https-as-ranking-signal.html】。Google 還發(fā)布一個(gè)指南,說(shuō)明在維護(hù)其搜索排名時(shí)如何傳輸、移動(dòng)或遷移您的網(wǎng)站。

Bing 也發(fā)布了網(wǎng)站站長(zhǎng)指南。

當(dāng)內(nèi)容和應(yīng)用層優(yōu)化得當(dāng)時(shí)(請(qǐng)參考?Steve Souders 的論著以獲取很好的建議),相對(duì)于應(yīng)用的總體開(kāi)銷而言,其余的傳輸層安全協(xié)議 (TLS) 性能問(wèn)題一般都是小問(wèn)題。此外,您可以減少和分?jǐn)偰切╅_(kāi)銷。 (如需 TLS 優(yōu)化建議和一般建議,請(qǐng)參考 IlyaGrigorik 撰寫(xiě)的高性能瀏覽器網(wǎng)絡(luò)。) 另請(qǐng)參考 Ivan Ristic 的?OpenSSL 手冊(cè)和?SSL 和 TLS 的防彈衣。

在某些情況下,TLS 可以提高性能,主要是可以采用 HTTP/2 所帶來(lái)的結(jié)果。 Chris Palmer?在 Chrome 開(kāi)發(fā)峰會(huì) 2014 上做過(guò)一個(gè)演講,討論 HTTPS 和 HTTP/2 的性能。

當(dāng)用戶從您的 HTTPS 網(wǎng)站鏈接到其他 HTTP 網(wǎng)站時(shí),User Agent 不會(huì)發(fā)送引用站點(diǎn)標(biāo)頭。如果這是個(gè)問(wèn)題,有多種方法可解決:

其他網(wǎng)站應(yīng)遷移到 HTTPS。如果被引用網(wǎng)站可以完成本指南中的在服務(wù)器上啟用 HTTPS?部分,則可以將您網(wǎng)站中指向他們網(wǎng)站的鏈接從http://更改為https://,或可以使用協(xié)議相對(duì)鏈接。

為解決引用站點(diǎn)標(biāo)頭的各種問(wèn)題,可使用新的引用站點(diǎn)政策標(biāo)準(zhǔn)。

由于各搜索引擎正在遷移到 HTTPS,將來(lái),當(dāng)您遷移到 HTTPS 時(shí),可能會(huì)看到更多的引用站點(diǎn)標(biāo)頭。

Caution:根據(jù)?HTTP RFC,如果引用頁(yè)面是通過(guò)安全協(xié)議傳輸?shù)模瑒t客戶端不能在(非安全)HTTP 請(qǐng)求中包括引用站點(diǎn)標(biāo)頭字段。

通過(guò)展示廣告來(lái)賺錢(qián)的網(wǎng)站運(yùn)營(yíng)商希望確保遷移到 HTTPS 不會(huì)降低廣告曝光量。 但是,由于混合內(nèi)容的安全問(wèn)題,HTTP<iframe>在 HTTPS 頁(yè)面中不起作用。 這里就存在一個(gè)棘手的集體行動(dòng)問(wèn)題:在廣告商通過(guò) HTTPS 發(fā)布廣告之前,網(wǎng)站運(yùn)營(yíng)商無(wú)法在不損失廣告收入的情況下遷移到 HTTPS;但是在網(wǎng)站運(yùn)營(yíng)商遷移到 HTTPS 之前,廣告商沒(méi)有動(dòng)力來(lái)通過(guò) HTTPS 發(fā)布廣告。

廣告商至少應(yīng)通過(guò) HTTPS 提供廣告服務(wù)(例如完成本頁(yè)面中的“在服務(wù)器上啟用 HTTPS”部分)。 許多廣告商已經(jīng)這樣做了。您應(yīng)當(dāng)請(qǐng)求完全不提供 HTTPS 的廣告商至少開(kāi)始提供 HTTPS。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 瀏覽器地址欄標(biāo)志著 HTTPS 的綠色小鎖頭從心理層面上可以給用戶專業(yè)安全的心理暗示,本文簡(jiǎn)單總結(jié)一下如何在 Ng...
    QieZi閱讀 38,523評(píng)論 0 10
  • 摘要 本文主要是在測(cè)試https服務(wù)時(shí)對(duì)搭建https服務(wù)器的一些實(shí)踐總結(jié)。TLS協(xié)議的介紹部分來(lái)源于對(duì)RFC52...
    東方胖閱讀 8,637評(píng)論 0 10
  • 最近對(duì)我的個(gè)人網(wǎng)站啟用了Https,所以想設(shè)置http默認(rèn)自動(dòng)轉(zhuǎn)https訪問(wèn)的功能,但又不想總讓服務(wù)端做轉(zhuǎn)發(fā)操作...
    Liberalman閱讀 3,692評(píng)論 0 3
  • 過(guò)好自己,
    魂蕩城閱讀 234評(píng)論 0 1
  • 老家庭院喜栽石榴。記得很小很小的時(shí)候,東廂的廚房門(mén)口,有一棵石榴樹(shù),樹(shù)干彎彎曲曲,枝葉并不繁茂,卻能結(jié)那么幾個(gè)大大...
    花開(kāi)兮緩歸閱讀 1,460評(píng)論 7 7

友情鏈接更多精彩內(nèi)容