HTTPS 基礎知識
什麼是 PKI?
公開密鑰基礎建設(英語:Public Key Infrastructure,縮寫:PKI),又稱公開密鑰基礎架構、公鑰基礎建設、公鑰基礎設施、公開密碼匙基礎建設或公鑰基礎架構,是一組由硬體、軟體、參與者、管理政策與流程組成的基礎架構,其目的在於創造、管理、分配、使用、存儲以及撤銷數字證書。(節選維基百科)
PKI是藉助CA(權威數字證書頒發/認證機構)將用戶的個人身份跟公開密鑰連結在一起,它能夠確保每個用戶身份的唯一性,這種連結關係是通過註冊和發布過程實現,並且根據擔保級別,連結關係可能由CA和各種軟體或在人為監督下完成。PKI用來確定連結關係的這一角色稱為RA(Registration Authority, 註冊管理中心),RA能夠確保公開密鑰和個人身份連結,可以防抵賴,防篡改。在微軟的公鑰基礎建設下,RA又被稱為CA,目前大多數稱為CA。
PKI組成要素
從上面可以得知PKI的幾個主要組成要素,用戶(使用PKI的人或機構),認證機構(CA,頒發證書的人或機構),倉庫(保存證書的資料庫)等。
非對稱加密
非對稱加密,有公鑰和私鑰之分,並且他們總是成對出現,它們的特點就是其中一個加密的數據,只能使用另一個解密,即使它本身也無法解密,也就是說公鑰加密的,私鑰可以解密,私鑰加密的,公鑰可以解密,使用非對稱加密算法特點消耗資源。
對稱加密
對稱加密指的是加密和解密的密鑰都相同,它的特點是不安全,但加解密速度快,消耗資源少。
證書籤名請求CSR
它是向CA機構申請數字證書時使用的請求文件,這裡的CSR不是證書,而向權威證書頒發機構獲得籤名證書的申請,當CA機構頒發的證書過期時,你可以使用相同的CSR來申請新的證書,此時key不變。
數字籤名
數字籤名就是「非對稱加密+摘要算法」,其目的不是為了加密,而是為了防抵賴或者他們篡改數據。其核心思想是:比如A要給B發送數據,A先用摘要算法得到數據的指紋,然後用A的私鑰加密指紋,加密後的指紋就是A的籤名,B收到數據和A的籤名後,也用同樣的摘要算法計算指紋,然後用A公開的公鑰解密籤名,比較兩個指紋,如果相同,說明數據沒有被篡改,確實是A發過來的數據。假設C想改A發給B的數據來欺騙B,因為篡改數據後指紋會變,要想跟A的籤名裡面的指紋一致,就得改籤名,但由於沒有A的私鑰,所以改不了,如果C用自己的私鑰生成一個新的籤名,B收到數據後用A的公鑰根本就解不開。(來源於網絡)
數字證書格式
數字證書格式有很多,比如.pem,.cer或者.crt等。
PKI工作流程
下圖來源於網絡,上半部分最右邊就是CA機構,可以頒發證書。證書訂閱人,首先去申請一個證書,為了申請這個證書,需要去登記,告訴它,我是誰,我屬於哪個組織,到了登記機構,再通過CSR,發送給CA中心,CA中心通過驗證通過之後 ,會頒發一對公鑰和私鑰,並且公鑰會在CA中心存一份;證書訂閱人拿到證書以後,部署在伺服器;
(圖來源於網絡)
當用戶(信賴方)訪問我們的web伺服器時,它會請求我們的證書,伺服器會把公鑰發送給我們的客戶端,客戶端會去驗證我們證書的合法性。
客戶端是如何驗證證書是否有效呢?CA中心會把過期證書放在CRL伺服器上面 ,這個CRL服務會把所有過期的證書形成一條鏈條,所以他的性能非常的差,所以又推出了OCSP程序,OCSP可以就一個證書進行查詢,它是否過期,瀏覽器可以直接去查詢OCSP響應程序,但OCSP響應程序效率還不是很高。
OCSP的全稱是Online Certificate Status Protocol,即在線證書狀態協議。顧名思義,它是一個用於檢查證書狀態的協議,瀏覽器使用這個協議來檢查證書是否被撤銷。使用Chrome瀏覽器查看https://www.baidu.com的證書詳情,可以看到OCSP的查詢地址:
(oscp 查詢地址)
直接訪問 OCSP 存在隱私和性能兩個問題,一方面,瀏覽器直接去請求第三方CA(Certificate Authority, 數字證書認證機構),會暴露網站的訪客(Let’s Encrypt會知道哪些用戶在訪問Fundebug);另一方面,瀏覽器進行 OCSP 查詢會降低HTTPS性能,導致訪問你的站點緩慢。
什麼是OCSP stapling?正式名稱為TLS 證書狀態查詢擴展,可代替在線證書狀態協議(OCSP)來查詢 x.509 證書狀態。伺服器在 TLS 握手時發送事先緩存的 OCSP 響應,用戶只需要驗證該響應的有效性而不用再向數據證書認證機構(CA)發送請求,說白了,伺服器代替客戶端去進行 OCSP 查詢,緩存查詢結果,然後在與客戶端進行 TLS 連接時返回給客戶端。
為了解決上面 OCSP 存在的2個問題,就有了OCSP stapling,由網站伺服器去進行 OCSP 查詢,緩存查詢結果,然後在與瀏覽器進行 TLS 連接時返回給瀏覽器,這樣瀏覽器就不需要再去查詢了,這樣就解決了隱私和性能問題。如 nginx 伺服器有一個 ocsp 開關,當我們打開這個開關以後,會有 nginx 伺服器主動的去 OCSP 伺服器去查詢,這樣大量的客戶端直接從 web 伺服器就可以直接獲取到證書是否有效。
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/xxx.com/cert.pem;
ssl_certificate_key /etc/nginx/ssl/xxx.com/key.pem;
# 啟用OCSP響應驗證,OCSP信息響應適用的證書
ssl_stapling on;
ssl_stapling_verify on;
# 選項應指向CA的根證書
ssl_trusted_certificate /path/to/xxx.pem;
#添加 resolver 解析 OSCP 響應伺服器的主機名,valid表示緩存60s
resolver 8.8.8.8 8.8.4.4 216.146.35.35 216.146.36.36 valid=60s;
# resolver_timeout 表示解析超時時間
resolver_timeout 2s;
HTTPS 證書申請與頒發(自籤)
使用 openssl 生成伺服器端 RSA 密鑰(私鑰)證書
[root@VM_0_13_centos ~]# openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
...++++++
..++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
[root@VM_0_13_centos ~]#
這裡輸入兩次密碼:k8svip
RSA 私鑰證書
[root@VM_0_13_centos ~]# cat server.key
BEGIN RSA PRIVATE KEY
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,B9361AB192C57F19
wHYwg6gBko+JYLzhfRGmSoasuzYhXEzztCzr8/9PHqIfgDX7w/KHfneD7oTXBdmz
VziAV2+2lUqyw9CGbiFfD0TBrSW8nOV+ZAGWjcosgrVFhPNc/Lx287pSt3+XO3Aj
NC8LsvNmMhZiHqiX1mcZA2JdKopVZungRISCeLdPrGu6schxJICHCP/f3Sfw4aYq
Ag7oAQd/KWk7mOHm7xFM/jECjVaiuhMCOylP0v5lXp5l/tRU/uGmcogJJCy/he/l
KkrDloEQvgfdREmMK75Halhn8ybPjgiV6FjrrYgLVNvuRxAPawNxDqdxLzAxZm3Y
nj1lFsPzxaD+f88riufMn/AU8CSlr52BTmab1zSwJoXOCm0rZUa3RkHZGS5wWzRq
67S1UCaNQ7Sh6Skkf2oDaktBiYiz9lpEppd4bQQ0G7L0LisynyoRKXua1pyGpOBW
l+ndHePo/o7VVQxPuCm/m+ZxcB8npIORBecg9oWkbndLXfuFYEcXQCDqcDmmL3A4
qBaGRc/VItCec5iAoLzmZpCnVvr6nuR07I/yNujsoUoi5cUEDalrb3BIX4yZUne8
2T1oQ3vSl/qHAK0iH6Eewlq5jqd1wysUMj0WpgZBkgKeRyC/EniSJE3Lz1zxZrZU
WHGYmmDiq2W82k0YLpK5uS/Mo+XAhhcODiuK/9P0dZi/DGBCNqk8aHUNXashv/KG
SQDS7iMvZ2Hk2ME5OGp8etzHmjCJkV8H7799wV5GzSlSsYjCupx2toSLh94t7gLV
Qt2NzvNPvZkymo6SfPDlrXqWX4Ph0jAdrIViyWLaR10Xqe5mTbupQw==
END RSA PRIVATE KEY
[root@VM_0_13_centos ~]#
通過私鑰創建籤名請求的證書CSR
[root@VM_0_13_centos ~]# openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BeiJing
Locality Name (eg, city) [Default City]:BeiJing
Organization Name (eg, company) [Default Company Ltd]:k8svip
Organizational Unit Name (eg, section) []:k8s.vip
Common Name (eg, your name or your server's hostname) []:k8s.vip
Email Address []:k8svip@163.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:k8svip
[root@VM_0_13_centos ~]#
CSR 請求證書
[root@VM_0_13_centos ~]# cat server.csr
BEGIN CERTIFICATE REQUEST
MIIB9DCCAV0CAQAwgYUxCzAJBgNVBAYTAkNOMRAwDgYDVQQIDAdCZWlKaW5nMRAw
DgYDVQQHDAdCZWlKaW5nMQ8wDQYDVQQKDAZrOHN2aXAxEDAOBgNVBAsMB2s4cy52
aXAxEDAOBgNVBAMMB2s4cy52aXAxHTAbBgkqhkiG9w0BCQEWDms4c3ZpcEAxNjMu
Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vh29C280/j1+V2m81t8R
/7yp+YGooiPcbdyJ1+TnVBOe5JOijaMQjMD4HFljW32/XITuw2UGf6hUgrH/c2fY
G5BAeAq/7PF3vkiVam6tcQkzoMQGm5Lk7R//VrGUhevm/5KdL093XNFjjHDpXjyB
yxQEHXJBYhEVIEX6YtWyvQIDAQABoC4wFQYJKoZIhvcNAQkCMQgMBms4c3ZpcDAV
BgkqhkiG9w0BCQcxCAwGMTIzNDU2MA0GCSqGSIb3DQEBCwUAA4GBALFrbZ0rn5Ul
kfe3mBmCQiQgv5gQwbcy9QmY3/nT6UsRPzxwGktstL75f6LAEXYM54UJozrcwbAq
7wKA5xwP1jTbiWR9syGWfrlkcnrOw0QLMiSupJh8zdXS9S+bINeT6jNMG36AsyUF
3Byd37YRkKqLZA6Jav1aWKa/nd/6OwTb
END CERTIFICATE REQUEST
[root@VM_0_13_centos ~]#
去除私鑰口令
[root@VM_0_13_centos ~]# cp server.key server.key.bak
[root@VM_0_13_centos ~]# openssl rsa -in server.key.bak -out server.key
Enter pass phrase for server.key.bak:
writing RSA key
[root@VM_0_13_centos ~]# cat server.key
BEGIN RSA PRIVATE KEY
MIICXgIBAAKBgQC7vh29C280/j1+V2m81t8R/7yp+YGooiPcbdyJ1+TnVBOe5JOi
jaMQjMD4HFljW32/XITuw2UGf6hUgrH/c2fYG5BAeAq/7PF3vkiVam6tcQkzoMQG
m5Lk7R//VrGUhevm/5KdL093XNFjjHDpXjyByxQEHXJBYhEVIEX6YtWyvQIDAQAB
AoGBAIkcAS/sx9yVyGcag7hL3EGS2T/xXgW/1BzJhwSMTTm8J1AlcsSGWA5gHRWV
7ponWSCF+vc8b+1dEZwWjtQWfkEOVrE9cBDT8uKuoUozcXVS5Hc4iE4TiCQZzhnb
TrS6jYqEU+5vBihgAgSa0yPJaBlRwY9nnzbWGdx0Pi1wW2GpAkEA7CPb6B37mESK
IQhT6Z9vG7CTq6qo7WVYg7Dxp6DNfC8krKSRQYSqodK4fRKz76mFSpf0FS9lLsCF
ICZPizk08wJBAMuIQEwYorgpvgjje78n68eNkNYs5Wu8Ld5KlnbY+sOXyHcIAVKX
QId2lUER0K5Bq92RohPtwnzNYIZXQ3heJY8CQDT0obc/KhHupO9dd7v3liomgidI
QVPjm2MFBlxqMkq8I8RXr3966e0aXWcnD5UadhrRUtqBY3aFlBUuoj39mUMCQQC7
0V7sGevGoJaB41JlYvR8MJIQYlvPoFZ/hDr3L2GwrtdJqHR3/6WHnBE9e7Ajrexo
SaTUWRqZSnihX9OeNtrXAkEAxlnVHMo0C1nmqioPbesbh1Gyy+FQ9xg+ERg4JMDn
IAZItYJPAWEJJpPbANXS/FH+xLcj3KtdM2Is/0k9Ec0/Cg==
END RSA PRIVATE KEY
[root@VM_0_13_centos ~]#
我們使用 openssl 生成伺服器端 RSA 密鑰(私鑰)證書的時候,使用了 -des3 算法,使用了密碼:k8svip,如果我們要想生成 crt 自籤發證書時,需要把密碼去掉,並且我們配置nginx時,使用的也是無密碼的私鑰。這裡需要輸入:k8svip 解密,得到 ssl 能加載的密鑰。
生成自籤發證書
[root@VM_0_13_centos ~]# openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
Signature ok
subject=/C=CN/ST=BeiJing/L=BeiJing/O=k8svip/OU=k8s.vip/CN=k8s.vip/emailAddress=k8svip@163.com
Getting Private key
[root@VM_0_13_centos ~]#
crt證書如下
[root@VM_0_13_centos ~]# cat server.crt
BEGIN CERTIFICATE
MIICgzCCAewCCQD4AZLRb4u6fTANBgkqhkiG9w0BAQsFADCBhTELMAkGA1UEBhMC
Q04xEDAOBgNVBAgMB0JlaUppbmcxEDAOBgNVBAcMB0JlaUppbmcxDzANBgNVBAoM
Bms4c3ZpcDEQMA4GA1UECwwHazhzLnZpcDEQMA4GA1UEAwwHazhzLnZpcDEdMBsG
CSqGSIb3DQEJARYOazhzdmlwQDE2My5jb20wHhcNMjAwOTEyMDYyODM2WhcNMzAw
OTEwMDYyODM2WjCBhTELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB0JlaUppbmcxEDAO
BgNVBAcMB0JlaUppbmcxDzANBgNVBAoMBms4c3ZpcDEQMA4GA1UECwwHazhzLnZp
cDEQMA4GA1UEAwwHazhzLnZpcDEdMBsGCSqGSIb3DQEJARYOazhzdmlwQDE2My5j
b20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALu+Hb0LbzT+PX5XabzW3xH/
vKn5gaiiI9xt3InX5OdUE57kk6KNoxCMwPgcWWNbfb9chO7DZQZ/qFSCsf9zZ9gb
kEB4Cr/s8Xe+SJVqbq1xCTOgxAabkuTtH/9WsZSF6+b/kp0vT3dc0WOMcOlePIHL
FAQdckFiERUgRfpi1bK9AgMBAAEwDQYJKoZIhvcNAQELBQADgYEAG76SHZGNfpcE
0W2jCVIF4bSx3p9pNysMnS4bF6PZAoV/8eImaeU6X16V9CEopt71NFn9dZMjUVgi
k3MnxMFySZgCjKBc4sc8GmbSG302K/849OX8ZCVrcclWC0B82LY66yPipeDJTwBu
Tg9WIyBCZfgBsDEW0+qzuLhifdtgaC0=
END CERTIFICATE
[root@VM_0_13_centos ~]#
nginx 配置
server {
listen 443 ;
server_name k8s.vip;
autoindex off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
ssl on;
ssl_certificate /root/server.crt;
ssl_certificate_key /root/server.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
index index.html;
root /data/nginx/html/;
}
}
瀏覽器訪問
整體報文如下圖所示:
SSL建立握手的目的是什麼?
1. client 與 server 確認對方身份進行驗證,防止第三方冒充,通過證書實現;
2. client 與 server交換session key,用於連接後數據對稱加密傳輸和hash校驗。
SSL 握手過程
1. Client 發送 ClientHello,指定版本,隨機數(RN),所有支持的密碼套件(CipherSuites),如下圖:
因為我們的瀏覽器是多樣化的,比如Chrom,比如IE,火狐,而且我們的瀏覽器在不停的變更,所以不同的瀏覽器支持的安全套件和加密算法,都是不同的,所以在第一步Client Hello中,主要告訴伺服器,我支持哪些加密算法。
2. server 回應 Server Hello, Certificate, Server Key Exchange, Server Hello Done,如下圖:
服務端在返回了Server Hello數據包之後,緊接著向客戶端返回自己的證書和一個 Server Key Exchange報文,用於秘鑰協商,最後再發送一個Server Hello Done告訴客戶端SSL第一次握手結束了。
2.1 Server 回應 ServerHello,指定版本,隨機數,選擇 CipherSuites,會話ID(Session ID)如下圖:
服務端發送Server Hello,告訴瀏覽器我支持的加密算法,以及伺服器更傾向使用哪種加密算法的安全套件,伺服器(nginx為例)會在這裡,選擇一套它最喜歡的加密套件,發送給客戶端,如果想復用Session, 也就是說nginx伺服器打開了 Session cache,希望在1天內斷開連接的客戶端,不用再次協商密鑰,在這一步,它可以直接復用之前的密鑰,所以第二步Server Hello信息中,主要會發送我們究竟選擇哪一種安全套件;
這裡的 session id,如果 SSL 連接斷開,再次連接時,可以使用該屬性重新建立連接,在雙方都有緩存的情況下可以省略握手的步驟,server 端也會生成隨機的 RN,用於生成 session key 使用server 會從 client 發送的 Cipher suite 列表中跳出一個,這裡挑選的是TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256。
2.2 Server 發送 Certificate 證書信息,如下圖:
server的證書信息,只包含public key(公鑰),server端會將該public key對應的 private key 保存好,用於證明 server 是該證書的實際擁有者,那麼如何驗證呢?原理很簡單:client隨機生成一串數,用server這裡的 public key 加密(顯然是RSA算法),發給 server,server 用private key解密後返回給 client,client 與原文比較,如果一致,則說明 server 擁有 private key,也就說明與 client 通信的正是證書的擁有者,因為 public key 加密的數據,只有 private key 才能解密,目前的技術還沒發破解。利用這個原理,也能實現 session key 的交換,加密前的那串隨機數就可用作 session key,因為除了 client 和 server,沒有第三方能獲得該數據了。原理很簡單,實際使用時會複雜很多,數據經過多次 hash,偽隨機等的運算,前面提到的 client 和 server 端得 RN 都會參與計算。
這一步伺服器會把自己的公鑰證書發送給瀏覽器客戶端,這個公鑰證書中是包含證書鏈的,所以瀏覽器可以找到自己的根證書庫,去驗證伺服器發送過來的證書是否是有效的。
2.3 Server 發送 Server Key Exchange,如下圖:
Server Key Exchange報文,用於秘鑰協商。
2.4 Server 發送 Server Hello Done,如下圖:
伺服器最後發送一個Server Hello Done告訴客戶端SSL第一次握手結束了。
3. Client 發送 Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message,如下圖:
客戶端在收到服務端發送來的Sever Hello Done包之後,開始驗證證書的有效性,如果證書有效之後,才會繼續進行這一步,驗證證書有效性主要包括:證書鏈是否可信、證書是否吊銷、證書有效期、域名檢驗。
3.1 Client 發送 Client Key Exchange 用於與 Server 交換session key,如下圖:
client 拿到 server 的 certificate 公鑰後,就可以開始利用 certificate 裡的 public key 進行 session key 的交換了,客戶端計算產生隨機數字pre-master,並且用服務端公鑰加密,發送給服務端,客戶端以後具有自己的隨機數A和服務端的隨機數B,結合pre-master計算出協商得到的對稱密鑰;
3.2 Client 發送 Change Cipher Spec ,指示 Server 從現在開始發送的數據都是加密過的,如下圖:
客戶端通知伺服器後續的新數據包都採用協商的秘鑰進行加密通信。
3.3 Client 發送Encrypted Handshake Message,如下圖:
client 向服務端發送的數據生成一個hash作為摘要,並且使用協商密鑰加密後,發送到服務端進行數據和握手驗證,這個消息非常關鍵,一是能證明握手數據沒有被篡改過,二也能證明自己確實是密鑰的擁有者。
4. Server 端發送 Change Cipher Spec, Encrypted Handshake Message,如下圖:
服務端在收到客戶端的加密的 pre-master後,通過自己的私鑰解密,然後根據籤名協商得到的隨機數A和B生成協商秘鑰,然後使用協商秘鑰解密被加密的摘要,再將前面接收到的所有客戶端發送過來的相關安全參數進行hash之後,比較兩邊的摘要是否相同,從而驗證握手是否合法。
4.1 Server端發送 Change Cipher Spec ,指示 Client 從現在開始發送的數據都是加密過的,如下圖:
服務端通知客戶端後續的通信都採用協商秘鑰進行加密。
4.2 Server端發送 Encrypted Handshake Message ,如下圖:
服務端也將自己已經發送給客戶端的數據經過hash後再加密發送給客戶端,讓客戶端進行有效性驗證。
5. 安全建立連接
當客戶端收到服務端傳遞過來的Encryted Handshake Message,使用協商秘鑰解密並且驗證有效後,則說明連接成功建立,之後的所有數據將使用協商秘鑰進行加密。
TLS 總結
(圖 來源於網絡)
1. 客戶端發起HTTPS請求,用戶在瀏覽器裡輸入https網址,然後連接到伺服器端443埠;
2. 伺服器端採用HTTPS協議時,會擁有一套數字證書,該證書可以自行配置,也可以向證書管理組織去申請,該證書其本質是公鑰和私鑰;
3. 將公鑰傳送證書傳遞給客戶端,證書包含了很多信息,例如證書的頒發機構,過期時間,網址,公鑰等;
4. 客戶端解析證書,由客戶端的TLS來完成,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出警告框,提示證書存在問題。如果證書沒有問題,就會生成一個隨機值,然後用公鑰證書對該隨機值進行加密;
5. 客戶端將公鑰加密後的隨機值發送給伺服器,讓服務端獲取該隨機值,後續客戶端和服務端的通信可以通過該隨機值來進行對稱加密和解密;
6. 服務端用私鑰解密後,得到客戶端傳過來的隨機值,然後把內容通過該值進行對稱加密;
7. 伺服器端將用之前的隨機值對要發送的信息進行對稱加密,然後發給客戶端;
8. 客戶端用之前生成的隨機值對服務端發送過來的信息,進行解密,獲取解密後的內容;
您的關注是我寫作的動力
基礎小知識
tcpdump 使用小結
Centos 7.6 內核升級
Centos 7 升級 Python 與 Yum 修改
Centos 7 安裝 Redis 5.0.8 單實例
CentOS 7 下 yum 安裝 MySQL 5.7 最簡教程
kubernetes中部署 nacos,使用外部MySQL存儲
你真的了解客戶端請求如何到達伺服器端的嗎
hping 命令使用小結
Linux 網卡 bonding 小知識
Wireshark 中 Len 遠遠大於 MSS,Why ?
淺談 conntrack 連接狀態跟蹤
專輯分享
kubeadm使用外部etcd部署kubernetes v1.17.3 高可用集群
第一篇 使用 Prometheus 監控 Kubernetes 集群理論篇