Tengine HTTPS原理解析、實踐與調試【轉】

本文邀請阿里云CDN HTTPS技術專家金九,分享Tengine的一些HTTPS實踐經驗。內容主要有四個方面:HTTPS趨勢、HTTPS基礎、HTTPS實踐、HTTPS調試。

一、HTTPS趨勢

這一章節主要介紹近幾年和未來HTTPS的趨勢,包括兩大瀏覽器chrome和firefox對HTTPS的態度,以及淘寶天貓和阿里云CDN的HTTPS實踐情況。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

上圖是 chrome 統計的HTTPS網頁占比的趨勢,2015年的時候,大多數國家的HTTPS網頁加載次數只占了不到 50%,2016年美國這個占比到了將近60%,去年就已經超過 70%,目前已經超過 80%。最下面是日本,目前是60%左右,這里面沒有統計到中國的數據,我估計中國的占比會更少,空間還有很大,但未來HTTPS趨勢是明顯的。

同樣,Firefox 瀏覽器加載HTTPS網頁的統計跟 chrome 差不多,全球 HTTPS網頁加載占比在 70% 左右,上升趨勢也很明顯。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

更值得關注的是,Google 在今年年初的時候在其安全博客上表明,在今年7月份左右發布的 chrome68 瀏覽器會將所有HTTP網站標記為不安全,現在是5月份底了,離這個時間也就一個多月的時間了。右邊的截圖可以看出本來是綠色的小鎖變成了不安全,這種網頁在輸入密碼時就很不安全了。

早期天貓淘寶只是在關鍵的登錄和交易的環節上了HTTPS,但隨著互聯網的發展,劫持、篡改等等問題也越來越嚴重,試想在天貓淘寶上看的商品圖片被惡意人替換了或者價格被篡改了會怎么樣?這樣用戶、商家和平臺都受到傷害,只有上了 HTTPS才能從根本上解決這些問題。所以,天貓和淘寶在2015年7月份的時候已經完成了全站HTTPS。

二、HTTPS基礎

本章節主要介紹HTTPS為什么安全,包括對稱加密、非對稱加密、簽名、證書&證書鏈、SSL是怎么握手的、以及私鑰密鑰在HTTPS中發揮什么樣的作用、keyless又是解決什么樣的問題等等。

HTTPS的定義

簡單來講,HTTPS就是安全的HTTP,我們知道HTTP是運行在TCP層之上的,HTTPS在HTTP層和TCP層之間加了一個SSL層,SSL向上提供加密和解密的服務,對HTTP比較透明,這樣也便于服務器和客戶端的實現以及升級。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

HTTPS為什么安全?

HTTPS安全是由一套安全機制來保證的,主要包含這4個特性:機密性、完整性、真實性和不可否認性。

  • 機密性是指傳輸的數據是采用Session Key(會話密鑰)加密的,在網絡上是看不到明文的。
  • 完整性是指為了避免網絡中傳輸的數據被非法篡改,使用MAC算法來保證消息的完整性。
  • 真實性是指通信的對方是可信的,利用了PKI(Public Key Infrastructure 即『公鑰基礎設施』)來保證公鑰的真實性。
  • 不可否認性是這個消息就是你給我發的,無法偽裝和否認,是因為使用了簽名的技術來保證的。

對稱加密和非對稱加密

HTTPS有對稱加密和非對稱加密兩種算法,目的都是把明文加密成密文,區別是密鑰的個數不一樣,對稱加密是一把密鑰,這把密鑰可以加密明文,也可以解密加密后的密文,常見的對稱加密算法有AES、DES、RC4,目前最常用的是AES。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

非對稱加密是兩把密鑰,分別是公鑰和私鑰,公鑰加密的密文只有相對應的私鑰才能解密,私鑰加密的內容也只有相對應的公鑰才能解密,其中公鑰是公開的,私鑰是自己保存,不能公開,常見的非對稱加密算法有RSA和ECC(橢圓曲線算法)。

SSL結合了這兩種加密算法的優點,通過非對稱加密來協商對稱加密的密鑰,握手成功之后便可使用對稱加密來做加密通信,對于RSA來說,客戶端是用RSA的公鑰把預主密鑰加密后傳給服務器,服務器再用私鑰來解密,雙方再通過相同的算法來生成會話密鑰,之后的應用層數據就可以通過會話密鑰來加密通信。

簽名

SSL中還有一個使用非對稱加密的地方就是簽名,簽名的目的是讓對方相信這個數據是我發送的,而不是其他人發送的。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

密鑰安全強度與性能對比

加密之后的數據破解難度就體現在密鑰的長度上,密鑰越長,破解難度也越大,但是運算的時間也越長,性能也就越差。相同安全強度下,對稱密鑰長度在最短,ECC次之,RSA密鑰長度則最長。

目前比較常用的密鑰長度是:對稱密鑰128位、ECC 256位、RSA 2048位。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

RSA和ECC在SSL中更多的是用來簽名,通過測試發現,ECC 的簽名性能比RSA好很多,但是RSA的驗簽性能比ECC更好,所以RSA更適合于驗證簽名頻繁而簽名頻度較低的場景,ECC更適合于簽名頻繁的場景,在SSL場景中,ECC算法性能更好。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

公鑰基礎設施(PKI)

簡單的說,PKI就是瀏覽器和CA,CA是整個安全機制的重要保障,我們平時用的證書就是由CA機構頒發,其實就是用CA的私鑰給用戶的證書簽名,然后在證書的簽名字段中填充這個簽名值,瀏覽器在驗證這個證書的時候就是使用CA的公鑰進行驗簽。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

證書

那CA在PKI中又是怎樣發揮作用的呢,首先,CA的作用就是頒發證書,頒發證書其實就是使用CA的私鑰對證書請求簽名文件進行簽名,其次,CA頒發的證書瀏覽器要信任,瀏覽器只需要用CA的公鑰進行驗簽成功就表示這個證書是合法可信的,這就需要瀏覽器內置CA的公鑰,也就是內置CA的證書。一般來說,操作系統都會內置權威CA的證書,有的瀏覽器會使用操作系統內置的CA證書列表,有的瀏覽器則自己維護的CA證書列表,比如Firefox。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

CA分為根CA,二級CA,三級CA,三級CA證書由二級CA的私鑰簽名,二級CA證書由根CA的私鑰簽名,根CA是自簽名的,不會給用戶證書簽名,我們平時用的證書都是由二級CA或者三級CA簽名的,這樣就形成了一個證書鏈,瀏覽器在驗簽的時侯一層層往上驗證,直到用內置的根CA證書的公鑰來驗簽成功就可以表示用戶證書是合法的證書。

根證書已經內置在瀏覽器或者操作系統里了,在SSL握手時就不需要發根CA證書了,只需要提供中間二級三級CA證書和用戶證書就可以。

交叉證書

交叉證書的應用場景是這樣的:假如現在阿里云成為一個新的根CA機構,那阿里云簽發的證書想要瀏覽器信任的話,阿里云的根證書就需要內置在各大操作系統和瀏覽器中,這需要較長時間的部署,那在沒有完全部署完成之前,阿里云簽發的證書怎么才能讓瀏覽器信任呢,這就需要用到交叉證書了。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

上圖中,根證書A是一個所有瀏覽器都內置了的根證書,B是一個新的根證書,用戶證書D是由根證書 B的二級CA B1來簽發的,但是根證書B并沒有在瀏覽器中內置,所以瀏覽器不會信任用戶證書D,這是因為瀏覽器在驗簽時只驗證到B1這一層然后找不到根證書B就無法驗證下去了。

如果二級CA B1證書是由根證書A來簽名,那這個問題就解了,所以新的根證書機構B會將二級CA證書(準確地講是二級CA的證書簽名請求文件)給老的根證書A來簽名,然后得到一個新的中間證書就是交叉證書。

瀏覽器在驗證的時侯用了新的信任鏈,這樣就可以解決用戶證書的信任問題。

當B的根證書全部部署完成后,再替換成自己的二級CA就可以了。

證書分類

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

證書分有三類:DV、OV、EV

DV證書只校驗域名的所有權,所以我們在申請DV證書的時候CA會提供幾種驗證域名所有權的方法:比如文件校驗、DNS校驗、郵件校驗,DV證書支持單域名、多域名和泛域名,但不支持多個泛域名,只支持一個泛域名,一般價格比較便宜,具體價格跟域名的數量有關,域名越多價格越高。

OV證書要驗證組織機構,在申請證書時CA會打電話確認這個域名是否真的屬于相應的公司或者機構,OV證書是單域名、多域名、泛域名和多個泛域名都支持,價格一般比DV證書要貴。

EV證書的校驗就更細了,比如組織機構的地址之類的,EV證書會在地址欄上顯示組織機構的名稱,EV證書只支持單域名或者多個域名,不支持泛域名,而且更貴,所以普通用戶一般不會用EV證書。

證書吊銷

證書是有生命周期的,如果證書的私鑰泄漏了那這個證書就得吊銷,一般有兩種吊銷方式:CRL和OCSP。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

CRL是CA機構維護的一個已經被吊銷的證書序列號列表,瀏覽器需要定時更新這個列表,瀏覽器在驗證證書合法性的時候也會在證書吊銷列表中查詢是否已經被吊銷,如果被吊銷了那這個證書也是不可信的。可以看出,這個列表隨著被吊銷證書的增加而增加,列表會越來越大,瀏覽器還需要定時更新,實時性也比較差。

所以,后來就有了 OCSP 在線證書狀態協議,這個協議就是解決了 CRL 列表越來越大和實時性差的問題而生的。有了這個協議,瀏覽器就可以不用定期更新CRL了,在驗證證書的時候直接去CA服務器實時校驗一下證書有沒有被吊銷就可以,是解決了CRL的問題,但是每次都要去CA服務器上校驗也會很慢,在網絡環境較差的時候或者跨國訪問的時候,體驗就非常差了,OCSP雖然解決了CRL的問題但是性能卻很差。所以后來就有了OCSP stapling。

OCSP stapling主要解決瀏覽器OCSP查詢性能差的問題,本來由瀏覽器去CA的OCSP服務器查詢證書狀態的,現在改由域名的服務器去查詢,將OCSP的結果告訴瀏覽器即可,一般服務器的網絡性能要好于用戶電腦的網絡,所以OCSP stapling的性能是最好的。但是并不是所有的服務器都支持OCSP stapling,所以目前瀏覽器還是比較依賴CRL,證書吊銷的實時性要求也不是特別高,所以定期更新問題也不大。

HTTPS工作模式

對于客戶端和服務器來講,應用層協議還是HTTP,只是加了一個SSL層來做加密解密的邏輯,對應用層來說是透明的,在網絡上傳輸的都是加密的請求和加密的響應,從而達到安全傳輸的目的。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

這是SSL層在網絡模型的位置,SSL屬于應用層協議。接管應用層的數據加解密,并通過網絡層發送給對方。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

更細地分,SSL協議分握手協議和記錄協議,握手協議用來協商會話參數(比如會話密鑰、應用層協議等等),記錄協議主要用來傳輸應用層數據和握手協議消息數據,以及做加解密處理。我們應用層的的消息數據在SSL記錄協議會給分成很多段,然后再對這個片段進行加密,最后在加上記錄頭后就發送出去。

TLS握手協議

SSL/TLS 握手協議又細分為四個子協議,分別是握手協議、密碼規格變更協議、警告協議和應用數據協議。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

完整的握手流程

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

首先是TCP握手,TCP三次完成之后才進入SSL握手,SSL握手總是以ClientHello消息開始,就跟TCP握手總是以SYN包開始一樣;

ClientHello主要包含客戶端支持的協議、密鑰套件、session id、客戶端隨機數、sni、應用層協議列表(http/1.1、h2)、簽名算法等等;

服務器收到ClientHello之后會從中選取本次通信的協議版本、密鑰套件、應用層協議、簽名算法,以及服務器隨機數,然后通過ServerHello消息響應,如果沒有session復用,那將服務器的證書通過Certificate消息響應,如果是選用了ECC算法來做密鑰交換的話,那還會將橢圓曲線參數以及簽名值通過ServerKeyExchange消息發送給對方,最后通過ServerHelloDone消息來結束本次協商過程;

客戶端收到這些消息之后,會生成預主密鑰、主密鑰和會話密鑰,然后將橢圓曲線參數通過ClientKeyExchange發送給服務器,服務器拿到客戶端的橢圓曲線參數也會生成預主密鑰,如果是RSA的話ClientKeyExchange用來發送公鑰加密的預主密鑰,服務器用私鑰來解密一下就可以得到預主密鑰,再由預主密鑰生成主密鑰和會話密鑰。最后雙方都以ChangeCipherSpce和Finished消息來告知對方,自己已經準備好了可以進行加密通信了,然后握手完成。

可以看出,完整的SSL握手需要2個RTT,而且每次握手都用到了非對稱加密算法簽名或者解密的操作,比較耗CPU,所以后來就有了session復用的優化手段,后面會做介紹。

SSL的握手消息雖然比較多,但很多消息都是放在一個TCP包中發送的,從抓包可以看出完整的SSL握手需要2個RTT。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

剛才通過完整的SSL握手可以看出幾個缺點:

1、2個RTT,首包時間較長

2、每次都要做非對稱加密,比較耗CPU,影響性能

3、每次都要傳證書,證書一般都比較大,浪費帶寬

SSL握手的目的是協商會話密鑰以及參數,如果能把這些會話參數緩存那就可以沒有必要每次都傳證書和做非對稱加密計算,這樣就可以提高握手性能,而且可以將RTT減到1個,提高用戶體驗。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

所以就有了session id的復用方式,每次完整握手之后都將協商好的會話參數緩存在服務器中,客戶端下次握手時會將上次握手的session id帶上,服務器通過session id查詢是否有會話緩存,有的話就直接復用,沒有的話就重新走完整握手流程。但是session id這種方式也有缺點,比較難支持分布式緩存以及耗費服務器的內存。

而session ticket 方案,其原理可以理解為跟 http cookie 一樣,服務器將協商好的會話參數加密成 session ticket,然后發送給客戶端,客戶端下次握手時會將這個session ticket帶上,服務器解密成功就復用上次的會話參數,否則就重新走完整握手流程。可以看出session ticket這種方式不需要服務器緩存什么,支持分布式環境,有很大的優勢。這種方式有一個缺點是并不是所有客戶端都支持,支持率比較低,但隨著客戶端版本的更新迭代,以后各種客戶端會都支持。因為session id客戶端支持率比較高,所以目前這兩種方式都在使用。

這是 session ticket 的復用,跟 session id 的區別是 client hello 會帶上 Session ticket ,將近200個字節的加密數據,服務器會用session ticket 密鑰來解密,解密成功則直接復用,也簡化了握手流程,提升效率和性能。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

這是我們上了分布式 Session id 復用的效果,session id復用的比例在沒有開啟分布式緩存時只占了3%左右,復用率很低,上了分布式session緩存之后,這個比例提升到20%多。握手時間也從75ms左右降低到65ms左右,性能提升效果還是很明顯的。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

SSL/TLS握手時的私鑰用途(RSA、ECDHE)

我們知道私鑰是整個SSL中最重要的東西,那私鑰在SSL握手里面又是怎么使用的呢?兩種使用方式分別是:使用RSA來做密鑰交換和使用ECDHE來做密鑰交換。對于RSA來說,客戶端生成預主密鑰,然后用公鑰加密再發給服務器,服務器用私鑰來解密得到預主密鑰,然后由預主密鑰生成主密鑰,再由主密鑰生會話密鑰,最后用會話密鑰來通信。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

對于ECDHE來說,客戶端和服務器雙方是交換橢圓曲線參數,私鑰只是用來簽名,這是為了保證這個消息是持有私鑰的人給我發的,而不是冒充的。雙方交換完參數之后生成預主密鑰,再生成主密鑰和會話密鑰。這就跟剛才RSA后面的流程一樣了。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

可以看出RSA和橢圓曲線密鑰交換算法的私鑰用途是不一樣的,RSA密鑰交換時是用來做加解密的,橢圓曲線密鑰交換時是用來做簽名的。

SSL/TLS中的密鑰

預主密鑰、主密鑰和會話密鑰,這幾個密鑰都是有聯系的。

對于RSA來說,預主密鑰是客戶端生成,加密之后發給服務器,服務器用私鑰來解密。對于ECDHE來說,預主密鑰是雙方通過橢圓曲線算法來生成。

主密鑰是由預主密鑰、客戶端隨機數和服務器隨機數通過PRF函數來生成;會話密鑰是由主密鑰、客戶端隨機數和服務器隨機數通過PRF函數來生成,會話密鑰里面包含對稱加密密鑰、消息認證和CBC模式的初始化向量,但對于非CBC模式的加密算法來說,就沒有用到這個初始化向量。

session 緩存和session ticket里面保存的是主密鑰,而不是會話密鑰,這是為了保證每次會話都是獨立的,這樣才安全,即使一個主密鑰泄漏了也不影響其他會話。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

Keyless

剛才提到RSA和ECDHE的私鑰用途,對于服務器來說,密鑰交換算法是RSA時,私鑰是用來做解密的,ECDHE時,私鑰是用來簽名的。

Keyless就是將私鑰參與運算的部分分離遠程服務器,這樣可以解決兩個問題:

1,公私鑰分離,用戶不需要將私鑰給第三方,減少私鑰泄露的風險。

2,將非對稱加密運算這種cpu密集型運算剝離到keyserver,可以在keyserver中安裝ssl加速卡做硬件加速,提高性能。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

HTTP/2

HTTP/2主要有這幾個特性:

一、二進制協議,可以做更多的優化;

二、多路復用,一定程度上解決了隊頭阻塞的問題,提高并發和總的加載時間

三、頭部壓縮,很多請求頭或者響應頭都沒有必要重復傳輸浪費帶寬,比如user-agent、cookie還有其他沒有必要每次都傳的頭部在http2中都做了優化

四、安全,雖然RFC規定HTTP/2可以運行在明文之上,但目前所有瀏覽器都只支持https之上的http/2,所以是安全的。

開啟HTTP/2會有這幾個收益:

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

一、加載時間的提升,我們做了這么一個測試,一張大圖片分割成幾百個小圖片,然后用http/1.1和http/2打開,http/1.1加載完所有小圖片用了五六秒,但http/2加載完所有小圖片只需要不到1s的時間,有5倍左右的提升,效果還是很明顯的,具體提升百分之多少這得具體看具體的業務類型。

二、頭部壓縮有95%左右的提升,http/1.1的平均響應頭大小有500個字節左右,而http/2的平均響應頭大小只有20多個字節,提升非常大,所以http/2非常適合小圖片小文件的業務類型,因為小文件的http頭部比重較大,而http/2對頭部的壓縮做了非常好的優化。

三、服務器QPS的性能有60%多的提升,這是因為http/2的連接復用和多路復用機制,可以處理更多的并發請求。

三、HTTPS實踐

本章節會重點給大家講講 Tengine 如何配置 https、HTTP/2、TLSv1.3,以及如何實現動態證書。

Tengine如何開啟HTTPS

http{ ssl_session_tickets on; ssl_session_ticket_key ticket.key; server { 
listen 443 ssl; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 
EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on; ssl_certificate www.alicdn.com.crt; 
ssl_certificate_key www.alicdn.com.key;  ssl_session_cache 
shared:SSL:256M; ssl_session_timeout 15m; #…… }}

在Tengine中開啟http2,只需要在listen的后面加上http2參數就可以了。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

但是有一個場景需要注意,因為有些域名并不想開啟http2,比如上面這個配置的b.com并不想開http2,但是因為a.com開啟了http2,所以b.com也被自動開啟了,這是因為http2這個參數作用在ip和端口上,在ssl握手時用了a.com的配置參數,所以tengine針對這種情況做了一個域名級別的開關來做控制。

TLSv1.3——更快、更安全

1、1-RTT & 0-RTT

2、只支持完全前向安全性的密鑰交換算法

3、ServerHello 之后的所有消息都是加密的

4、淘汰 Session ID 和 Session Ticket,用 PSK 代替

5、Chrome 63+, Firefox 58+

Tengine也支持了TLSv1.3,開啟方式:

server{ ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers 
TLS13-AES-128-GCM-SHA256:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;#……}

Tengine 實現與配置動態證書

動態證書主要解決的問題是接入域名太多,server塊過多導致tengine reload慢的問題,lua-nginx模塊提供了一個證書的lua階段,可以在這個階段來做證書的熱加載,不需要reload tengine,這樣可以提高效率和性能。

配置也比較簡單,在ssl_cert.lua里面做證書的管理,在ssl握手時拿到sni,去拿這個域名的證書和私鑰,再調用lua ffi接口就可以完成證書和私鑰的切換。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

ssl_cert.lua:

調用 lua ffi 接口設置證書和私鑰

四、HTTPS調試

我們知道HTTP是明文傳輸,調試就很簡單,抓包就可以看得清清楚楚,但HTTPS是加密的,抓包看到的是密文,這一節我告訴大家怎么去解密HTTPS抓包文件。

抓包解密

方法一:

配置Wireshark:

Wireshark ? preferences… ? Protocols ? SSL ? (Pre)-Master-Secret log filename => /tmp/sslkey.txt

(一):

export SSLKEYLOGFILE=/tmp/sslkey.txt

(二):

openssl s_client -connect 127.0.0.1:443 -servername www.alicdn.com -keylogfile /tmp/sslkey.txt

(三):

echo“CLIENT_RANDOM 
7EC0498BCF09E8300A1E9F8BA6C81E2A4383D7CDCFB10907B4074520FA8DF680 
FA2457782F6FAECE47CF8E01BF9E0A441CEA8DCC91664F42F45F1EF5AB18ED902E35825713FF2D4D9651CE51ED885BB4”>>/tmp/sslkey.txt

方法二:

強制使用RSA密鑰交換算法,Wireshark配置私鑰。

抓包解密-wireshark設置

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試
阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

常用命令及參數

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

curl

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

寫在最后

證書的購買和申請是非常復雜耗時的,為了縮短開通周期,為開發者提供最大化便利,簡化HTTPS加速設置環節,目前阿里云CDN已經支持控制臺可實現一鍵開通HTTPS,后臺將完成代理免費證書購買、證書節點部署以及證書到期之前自動續簽,幫助開發者更便捷的完成全站HTTPS訪問加速。

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試

?

轉自

阿里云技術專家金九:Tengine HTTPS原理解析、實踐與調試 https://www.toutiao.com/i6561389530765591047/

轉載于:https://www.cnblogs.com/paul8339/p/9121975.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389525.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389525.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389525.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux 指定運行時動態庫路徑【轉】

轉自:http://www.cnblogs.com/cute/archive/2011/02/24/1963957.html 眾所周知, Linux 動態庫的默認搜索路徑是 /lib 和 /usr/lib 。動態庫被創建后,一般都復制到這兩個目錄中。當程序執行時需要某動態庫, 并且該動態庫還未加載到…

opencv:SIFT——尺度不變特征變換

SIFT概念: Sift(尺度不變特征變換),全稱是Scale Invariant Feature Transform Sift提取圖像的局部特征,在尺度空間尋找極值點,并提取出其位置、尺度、方向信息。 Sfit的應用范圍包括 物體辨別、機器人地圖…

pca(主成分分析技術)_主成分分析技巧

pca(主成分分析技術)介紹 (Introduction) Principal Component Analysis (PCA) is an unsupervised technique for dimensionality reduction.主成分分析(PCA)是一種無監督的降維技術。 What is dimensionality reduction?什么是降維? Let us start with an exam…

npm link run npm script

npm link & run npm script https://blog.csdn.net/juhaotian/article/details/78672390 npm link命令可以將一個任意位置的npm包鏈接到全局執行環境,從而在任意位置使用命令行都可以直接運行該npm包。 app-cmd.cmd #!/usr/bin/env nodeecho "666" &a…

一文詳解java中對JVM的深度解析、調優工具、垃圾回收

2019獨角獸企業重金招聘Python工程師標準>>> jvm監控分析工具一般分為兩類,一種是jdk自帶的工具,一種是第三方的分析工具。jdk自帶工具一般在jdk bin目錄下面,以exe的形式直接點擊就可以使用,其中包含分析工具已經很強…

借用繼承_博物館正在數字化,并在此過程中從數據中借用

借用繼承Data visualization is a great way to celebrate our favorite pieces of art as well as reveal connections and ideas that were previously invisible. More importantly, it’s a fun way to connect things we love — visualizing data and kicking up our fee…

高斯噪聲,椒鹽噪聲的思想及多種噪聲的實現

圖像噪聲: 概念: ? 圖像噪聲是圖像在獲取或是傳輸過程中受到隨機信號干擾,妨礙人們對圖像理解及分析處理 的信號。 ? 很多時候將圖像噪聲看做多維隨機過程,因而描述噪聲的方法完全可以借用隨機過程的描述, 也就是使…

bzoj1095 [ZJOI2007]Hide 捉迷藏

據說是道很厲害的題。。。。黃學長的安利啊。。。。 然而我卻用它學分治。。。。 一個坑就擺在這里了。。。。 轉載于:https://www.cnblogs.com/LLppdd/p/9124394.html

如何識別媒體偏見_描述性語言理解,以識別文本中的潛在偏見

如何識別媒體偏見TGumGum can do to bring change by utilizing our Natural Language Processing technology to shed light on potential bias that websites may have in their content. The ideas and techniques shared in this blog are a result of the GumGum Hackatho…

分享 : 警惕MySQL運維陷阱:基于MyCat的偽分布式架構

分布式數據庫已經進入了全面快速發展階段。這種發展是與時俱進的,與人的需求分不開,因為現在信息時代的高速發展,導致數據量和交易量越來越大。這種現象首先導致的就是存儲瓶頸,因為MySQL數據庫實質上還是一個單機版本的數據庫&am…

opencv:圖像讀取BGR變成RGB

opencv大坑之BGR opencv對于讀進來的圖片的通道排列是BGR,而不是主流的RGB!謹記! #opencv讀入的矩陣是BGR,如果想轉為RGB,可以這么轉 img cv2.imread(1.jpg) img cv2.cvtColor(img4,cv2.COLOR_BGR2RGB)

數據不平衡處理_如何處理多類不平衡數據說不可以

數據不平衡處理重點 (Top highlight)One of the common problems in Machine Learning is handling the imbalanced data, in which there is a highly disproportionate in the target classes.機器學習中的常見問題之一是處理不平衡的數據,其中目標類別的比例非常…

最小二乘法以及RANSAC(隨機采樣一致性)思想及實現

線性回歸–最小二乘法(Least Square Method) 線性回歸: 什么是線性回歸? 舉個例子,某商品的利潤在售價為2元、5元、10元時分別為4元、10元、20元, 我們很容易得出商品的利潤與售價的關系符合直線&#xf…

軟鍵盤彈起,導致底部被頂上去

計算出可視界面的高度,當軟鍵盤彈起時讓底部元素隱藏掉,當鍵盤收起時再讓它顯示,實在沒辦法時這種方法也不失為一種方法1 var hdocument.documentElement.clientHeight; 2 $(window).resize(function(){ 3 let heightdocument.documentEl…

關于LaaS,PaaS,SaaS一些個人的理解

關于LaaS,PaaS,SaaS一些個人的理解 關于LaaS,PaaS,SaaS一些個人的理解 其實如果從整個程序運營的角度來考慮比較好 第一個LaaS 這個也叫做Haas 就是硬件或者基礎設置即服務 比如現在的 aws azure 阿里云 騰訊云 百度云 都是提供服務器基礎設置服務的 包括服務器的硬件…

糖藥病數據集分類_使用optuna和mlflow進行心臟病分類器調整

糖藥病數據集分類背景 (Background) Data science should be an enjoyable process focused on delivering insights and real benefits. However, that enjoyment can sometimes get lost in tools and processes. Nowadays it is important for an applied data scientist to…

Android MVP 框架

為什么80%的碼農都做不了架構師?>>> 前言 根據網絡上的MVP套路寫了一個辣雞MVP DEMO 用到的 android studio MVPHelper插件,方便自動生成框架代碼rxjavaretrofit什么是MVP MVP就是英文的Model View Presenter,然而實際分包并不是只有這三個包…

相似圖像搜索的哈希算法思想及實現(差值哈希算法和均值哈希算法)

圖像相似度比較哈希算法: 什么是哈希(Hash)? ? 散列函數(或散列算法,又稱哈希函數,英語:Hash Function)是一種從任何一種數據中創建小 的數字“指紋”的方法。散列函數把消息或數…

騰訊云AI應用產品總監王磊:AI 在傳統產業的最佳實踐

歡迎大家前往騰訊云社區,獲取更多騰訊海量技術實踐干貨哦~ 背景:5月23-24日,以“煥啟”為主題的騰訊“云未來”峰會在廣州召開,廣東省各級政府機構領導、海內外業內學術專家、行業大咖及技術大牛等在現場共議云計算與數字化產業創…

標準化(Normalization)和歸一化實現

概念: 原因: 由于進行分類器或模型的建立與訓練時,輸入的數據范圍可能比較大,同時樣本中各數據可 能量綱不一致,這樣的數據容易對模型訓練或分類器的構建結果產生影響,因此需要對其進行標準 化處理&#x…