報錯信息:
Internal error occurred: failed calling webhook "rancherauth.cattle.io": Post https://rancher-webhook.cattle-system.svc:443/v1/webhook/validation?timeout=10s: x509: certificate has expired or is not yet valid
排查思路:
1、根據報錯信息可以看出是證書過期了
可用信息 cattle-system.svc ,去該名稱空間下找到過期的證書
2、接下來需要准備簽發證書所需文件
打開cattle-webhook-ca 查看編輯YAML(找到自己對應簽發的CA文件)
將兩個秘鑰分別用base64進行解密(直接網上搜索)
解密文件分別保存為 ca.crt ca.key (創建單獨目錄存放,后面簽發證書需要這兩個文件)
打開cattle-webhook-tls
將里面的tls證書進行解密,保存文件tls.crt
同時需要查看舊的證書細節:
openssl x509 -in tls.crt -noout -text
DNS 這塊在Chrome55下正常生成證書測試沒問題的,但是Chrome61下測試提示Subject Alternative Name missing
錯誤:
The certificate for this site does not contain a Subject Alternative Name extension containing a domain name or IP address.
所以我們需要生成v3證書,准備openssl.cnf文件(和上面測CA文件放在一起)內容如下:
[v3_req] subjectAltName = @alt_names [alt_names] DNS.1 = rancher.webhook # 填寫tls.crt詳情里面的 DNS 地址 DNS.2 = rancher-webhook.cattle-system.svc # 填寫tls.crt詳情里面的 DNS 地址
3、簽發證書
# 生成服務端私鑰 openssl genrsa -out new.key 2048
# 生成證書請求文件 openssl req -new -key new.key -out new.csr
# 生成最終證書文件,-day指定證書有效期 3650 是十年 openssl x509 -req -days 3650 -sha256 -CA ca.crt -CAkey ca.key -CAcreateserial -extfile openssl.cnf -extensions v3_req -in new.csr -out new.crt
得到 new.key new.crt兩個文件,將兩個證書導入到 cattle-webhook-tls 最后點擊保存
最后我們可以通過API查看,看到我們現在證書有效期