第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

OpenSSL

OpenSSL 是一個開源的軟件庫,里面包含了SSL協(xié)議庫、應(yīng)用程序以及密碼算法庫。通過這個工具我們可以實現(xiàn)自簽名證書,也可以更好的了解證書生成的過程。

1. OpenSSL 使用

1.1 安裝環(huán)境

Linux 系統(tǒng)一般自帶 OpenSSL 工具:

[root@instance-fk6xgagd ~]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

Window 環(huán)境到官網(wǎng)下載 exe 應(yīng)用工具,并將 exe 應(yīng)用配置到系統(tǒng)環(huán)境變量 Path 路徑中即可。

1.2 命令

OpenSSL 的命令可以分為以下3類

  1. Standard commands :一些標準的工具集合(ca證書工具等);
  2. Message Digest commands: 摘要生成的命令工具(哈希算法等);
  3. Cipher commands :加密工具(對稱非對稱算法等)。
[root@instance-fk6xgagd ~]# openssl help
openssl:Error: 'help' is an invalid command.

Standard commands
asn1parse         ca                ciphers           cms               
crl               crl2pkcs7         dgst              dh                
dhparam           dsa               dsaparam          ec                
ecparam           enc               engine            errstr            
gendh             gendsa            genpkey           genrsa            
nseq              ocsp              passwd            pkcs12            
pkcs7             pkcs8             pkey              pkeyparam         
pkeyutl           prime             rand              req               
rsa               rsautl            s_client          s_server          
s_time            sess_id           smime             speed             
spkac             ts                verify            version           
x509              

Message Digest commands (see the `dgst' command for more details)
md2               md4               md5               rmd160            
sha               sha1              

Cipher commands (see the `enc' command for more details)
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb       
aes-256-cbc       aes-256-ecb       base64            bf                
bf-cbc            bf-cfb            bf-ecb            bf-ofb            
camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb  
camellia-256-cbc  camellia-256-ecb  cast              cast-cbc          
cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb         
des               des-cbc           des-cfb           des-ecb           
des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb       
des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb      
des-ofb           des3              desx              idea              
idea-cbc          idea-cfb          idea-ecb          idea-ofb          
rc2               rc2-40-cbc        rc2-64-cbc        rc2-cbc           
rc2-cfb           rc2-ecb           rc2-ofb           rc4               
rc4-40            rc5               rc5-cbc           rc5-cfb           
rc5-ecb           rc5-ofb           seed              seed-cbc          
seed-cfb          seed-ecb          seed-ofb          zlib

2. TLS服務(wù)認證案例

Kubernets 是一個開源的容器編排工具,它內(nèi)部包含了多個職能組件。Kubernetes 提供了基于 CA 簽名的雙向認證和基于 HTTP BASE 或 TOKEN 的認證方式,其中 CA 是安全性最高的一種。(不了解 Kubernetes 的把他想成一個多組件服務(wù)的系統(tǒng)即可)

Kubernetes

Kubernetes 有上圖那么多組件,具體每個組件的用途我們這里不用去了解,其中 ApiServer 是一個核心服務(wù)。

圖中服務(wù)需要的證書:

  1. Kube-APIserver對外提供服務(wù),要有一套 kube-apiserver server 證書;
  2. kube-scheduler、kube-controller-manager、kube-proxy、kubelet;和其他可能用到的組件,需要訪問 kube-APIserver,要有一套 kube-APIserver client 證書;
  3. kube-controller-manager 要生成服務(wù)的 service account,要有一對用來簽署 service account 的證書(CA證書);
  4. kubelet 對外提供服務(wù),要有一套 kubelet server 證書;
  5. kube-APIserver 需要訪問 kubelet,要有一套 kubelet client 證書;

2.1 基于CA 的雙向數(shù)字證書認證

各個服務(wù)都需要雙向認證,所以每個服務(wù)都需要有自己的證書,證書是需要向 CA 申請的,所以我們要先制作 CA 根證書。

CA 證書的生成

先生成根證書,這個根證書后續(xù)將用于為每個組件生成屬于他們的證書。

  1. 先生成 CA 私鑰,長度為 2048。
# openssl genrsa -out ca.key 2048
  1. 用私鑰直接生成 CA 的根證書,證書的版本是 x509,過期時間 5000 天,使用者信息用的是主機名 /CN=k8s-master
openssl req -x509 -new -nodes -key ca.key -sub "/CN=k8s-master" -days 5000 -out ca.crt

ApiServer 證書生成

  1. 生成長度為 2048 的私鑰
openssl genrsa -out server.key 2048
  1. 通過配置文件創(chuàng)建 csr(證書請求文件)
openssl req -new -key server.key -sub "/CN=k8s-master" -config master_ssl.cnf -out server.csr

其中 master_ssl.cnf 文件主要包含了請求主體的一些基礎(chǔ)信息,這邊主要是服務(wù)器所在節(jié)點的主機名,IP 地址。這些信息后面也會生成到證書里面,像 IP 地址后續(xù)也可以作為校驗使用。

  1. 通過 csr 文件生成最終的 crt 證書:
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 5000 -extensions v3_req -extfile master_ssl.cnf -out server.crt

生成證書的時候都需要借助 CA ,CA用自己的私鑰簽名生成證書,把公鑰開放出去,供驗證者使用。

到此,我們已經(jīng)總的已經(jīng)生成了 5 個文件,回顧下它們的作用:

  • ca.key:為了生成 CA 根證書;
  • ca.crt:根證書,為了給后續(xù)的其它組件服務(wù)頒發(fā)證書用的;
  • server.key:為了生成 apiServer 證書;
  • server.csr:為了生成證書請求文件(這邊沒有直接通過私鑰生成證書,而是多了一個 CSR 的環(huán)節(jié));
  • server.crt:最終 apiServer 的證書。

ApiServer 啟動的時候有下面 3 個核心參數(shù):

  1. 提供 TLS 安全服務(wù)所需的證書(讓別人驗證自己的);
    tls-cert-file :apiServer 自己的證書文件;
    tls-private-key-file :apiServer 的私鑰;
  2. apiServer 提供給很多客戶端用,每個客戶端都需要自己的證書,這邊指定了根證書,客戶端必須是從該證書申請的才認可;
    client-ca-file string :CA 根證書。

某個訪問 apiServer 客戶端證書的生成

openssl genrsa -out cs_client.key 2048
openssl req -new -key cs_client.key -sub "/CN=k8s-master" -out cs_client.csr
openssl x509 -req -in cs_client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 5000 -extensions v3_req -extfile master_ssl.cnf -out cs_client.crt

依然是生成自己的私鑰,證書請求CSR文件,后面生成最終的證書需要借助上面的 CA 私鑰 和 CA 根證書。

這邊一個組件的雙向證書都生成了,其它組件就不一一舉例。

3. 小結(jié)

TLS 的整個認證還是比較復(fù)雜的,OpenSSL 幫我們封裝了很多內(nèi)置算法,即便這樣這個過程下來流程還是比較多,需要我們抽絲剝繭慢慢了解。