您好,登錄后才能下訂單哦!
這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)kubernetes中怎么設(shè)置CA雙向數(shù)字證書認證,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
opessl中RSA算法指令主要有三個:
指令 | 功能 |
---|---|
genrsa | 生成并輸入一個RSA私鑰 |
rsa | 處理RSA密鑰的格式轉(zhuǎn)換等問題 |
rsautl | 使用RSA密鑰進行加密、解密、簽名和驗證等運算 |
genrsa [args] [numbits] //密鑰位數(shù),建議1024及以上 -des encrypt the generated key with DES in cbc mode //生成的密鑰使用des方式進行加密 -des3 encrypt the generated key with DES in ede cbc mode (168 bit key) //生成的密鑰使用des3方式進行加密 -seed encrypt PEM output with cbc seed //生成的密鑰還是要seed方式進行 -aes128, -aes192, -aes256 encrypt PEM output with cbc aes //生成的密鑰使用aes方式進行加密 -camellia128, -camellia192, –camellia256 encrypt PEM output with cbc camellia //生成的密鑰使用camellia方式進行加密 -out file output the key to 'file //生成的密鑰文件,可從中提取公鑰 -passout arg output file pass phrase source //指定密鑰文件的加密口令,可從文件、環(huán)境變量、終端等輸入 -f4 use F4 (0x10001) for the E value //選擇指數(shù)e的值,默認指定該項,e值為65537 -3 use 3 for the E value //選擇指數(shù)e的值,默認值為65537,使用該選項則指數(shù)指定為3 -engine e use engine e, possibly a hardware device. //指定三方加密庫或者硬件 -rand file:file:... load the file (or the files in the directory) into //產(chǎn)生隨機數(shù)的種子文件 the random number generator
req 命令:使用已有私鑰生成證書請求
openssl req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey] [-noout] [-verify] [-modulus] [-new] [-rand file(s)] [-newkey rsa:bits][-newkey alg:file] [-nodes] [-key filename] [-keyform PEM|DER] [-keyout filename] [-keygen_engine id] [-[digest]] [-config filename] [-subj arg] [-multivalue-rdn] [-x509] [-days n] [-set_serial n][-asn1-kludge] [-no-asn1-kludge] [-newhdr] [-extensions section] [-reqexts section] [-utf8] [-nameopt] [-reqopt] [-subject] [-subj arg] [-batch] [-verbose] [-engine id] -new :說明生成證書請求文件 -x509 :說明生成自簽名證書 -key :指定已有的秘鑰文件生成秘鑰請求,只與生成證書請求選項-new配合。 -newkey :-newkey是與-key互斥的,-newkey是指在生成證書請求或者自簽名證書的時候自動生成密鑰, 然后生成的密鑰名稱由-keyout參數(shù)指定。當指定newkey選項時,后面指定rsa:bits說明產(chǎn)生 rsa密鑰,位數(shù)由bits指定。 如果沒有指定選項-key和-newkey,默認自動生成秘鑰。 -out :-out 指定生成的證書請求或者自簽名證書名稱 -config :默認參數(shù)在ubuntu上為 /etc/ssl/openssl.cnf, 可以使用-config指定特殊路徑的配置文件 -nodes :如果指定-newkey自動生成秘鑰,那么-nodes選項說明生成的秘鑰不需要加密,即不需要輸入passphase. -batch :指定非交互模式,直接讀取config文件配置參數(shù),或者使用默認參數(shù)值
CSR - Certificate Signing Request,即證書簽名請求,這個并不是證書,而是向權(quán)威證書頒發(fā)機構(gòu)獲得簽名證書的申請,其核心內(nèi)容是一個公鑰(當然還附帶了一些別的信息),在生成這個申請的時候,同時也會生成一個私鑰,私鑰要自己保管好
CRT - CRT應(yīng)該是certificate的三個字母,其實還是證書的意思。
//生成私鑰文件 # openssl genrsa -out ca.key 2048 Generating RSA private key, 2048 bit long modulus .......................+++ ................................................+++ e is 65537 (0x10001)
openssl req -x509 -new -nodes -key ca.key -subj "/CN=master" -days 7000 -out ca.crt
openssl genrsa -out server.key 2048
創(chuàng)建一個master-ssl.cnf配置文件,用來生成書證簽名請求文件和證書文件:
[req] req_extensions = v3_req distinguished_name = req_distinguished_name [req_distinguished_name] [v3_req] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_name [alt_name] DNS.1 = kubernetes DNS.2 = kubernetes.default DNS.3 = kubernetes.default.svc DNS.4 = kubernetes.default.svc.cluster.local # master hostname DNS.5 = master # master IP IP.1 = 192.168.1.122 # kubernetes.default's ClusterIP IP.2 = 10.254.0.1
查看kubernetes.default的cluster IP:
# kubectl get svc kubernetes -o yaml apiVersion: v1 kind: Service metadata: creationTimestamp: 2019-01-10T08:31:18Z labels: component: apiserver provider: kubernetes name: kubernetes namespace: default resourceVersion: "18" selfLink: /api/v1/namespaces/default/services/kubernetes uid: 1a258e01-14b2-11e9-86b7-525400bea75c spec: clusterIP: 10.254.0.1 ports: - name: https port: 443 protocol: TCP targetPort: 6443 sessionAffinity: ClientIP type: ClusterIP status: loadBalancer: {}
基于mstaer_ssl.cnf創(chuàng)建server.csr和server.crt文件.
創(chuàng)建證書簽名請求文件:
openssl req -new -key server.key -subj "/CN=master" -config master_ssl.cnf -out server.csr
創(chuàng)建證書文件:
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 7000 -extensions v3_req -extfile master_ssl.cnf -out server.crt
下面生成server.crt 和ca.srl
KUBE_API_ARGS="--client-ca-file=/var/run/kubernetes/ca.crt --tls-private-key-file=/var/run/kubernetes/server.key --tls-cert-file=/var/run/kubernetes/server.crt --secure-port=6443"
--client-ca-file
表示CA根證書文件、--tls-private-key-file
服務(wù)端證書文件、--tls-cert-file
服務(wù)端私鑰文件;
重啟kube-apiserver服務(wù):
systemctl restart kube-apiserver
私鑰文件:
openssl genrsa -out cs_client.key 2048
證書簽名請求(Certificate Signing Request)文件:
openssl req -new -key cs_client.key -subj "/CN=master" -out cs_client.csr
證書文件:
openssl x509 -req -in cs_client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 7000 -out cs_client.crt
apiVersion: v1 kind: Config users: - name: controllermanager user: client-certificate: /var/run/kubernetes/cs_client.crt client-key: /var/run/kubernetes/cs_client.key clusters: - name: local cluster: certificate-authority: /var/run/kubernetes/ca.crt contexts: - context: cluster: local user: controllermanager name: my-context current-context: my-context
/etc/kubernetes/controller-manager
# Add your own! KUBE_CONTROLLER_MANAGER_ARGS="--master=https://192.168.1.122:6443 --service-account-key-file=/var/run/kubernetes/server.key --root-ca-file=/var/run/kubernetes/ca.crt --kubeconfig=/etc/kubernetes/kubeconfig"
重啟服務(wù)
systemctl restart kube-controller-manager
# Add your own! KUBE_SCHEDULER_ARGS="--address=0.0.0.0 --master=https://192.168.1.122:6443 --kubeconfig=/etc/kubernetes/kubeconfig"
重啟服務(wù):
systemctl restart kube-scheduler
從master復制ca.crt和ca.key到Node節(jié)點上,按照前面的方式生成證書簽名請求和證書文件。
私鑰:
openssl genrsa -out kubelet_client.key 2048
證書簽名請求文件:
openssl req -new -key kubelet_client.key -subj "/CN=node2" -out kubelet_client.csr
證書文件:
openssl x509 -req -in kubelet_client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 7000 -out kubelet_client.crt
設(shè)置kubelet啟動:
KUBELET_ARGS="--certificate-authority=/var/run/kubernetes/ssl_keys/ca.crt --client-certificate=/var/run/kubernetes/ssl_keys/cs_client.crt --client-key=/var/run/kubernetes/ssl_keys/cs_client.key"
# Add your own! KUBELET_ARGS="--kubeconfig=/etc/kubernetes/keubeconfig"
重啟:
systemctl restart kubelet
KUBE_PROXY_ARGS="--bind-address=0.0.0.0 --master=https://192.168.1.122:6443 --kubeconfig=/etc/kubernetes/kubeconfig"
重啟:
systemctl restart kube-proxy
在設(shè)置完成之后master注意開啟6443端口:
#添加端口 firewall-cmd --zone=public --add-port=6443/tcp --permanent #重新載入 firewall-cmd --reload
測試是否成功:
# kubectl --server=https://192.168.1.122:6443 --certificate-authority=/var/run/kubernetes/ssl_keys/ca.crt --client-certificate=/var/run/kubernetes/ssl_keys/cs_client.crt --client-key=/var/run/kubernetes/ssl_keys/cs_client.key get nodes NAME STATUS AGE node1 Ready 5d node2 Ready 5d
上述就是小編為大家分享的kubernetes中怎么設(shè)置CA雙向數(shù)字證書認證了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。