SSL連線出現unsupported certificate purpose
問題
同事前幾天傳來一張憑證要我們幫忙放到伺服器上,放是放了,但鎖頭就是沒有正常變成綠色的。 用指令檢查一下
openssl s_client -connect <host>:<port> -CAfile <ca_file>
發現顯示Verify return code: 26 (unsupported certificate purpose)
找了一下Google,這個問題是因為憑證簽發時可以在extFile指定透過extendedKeyUsage
來指定使用用途,包括clientAuth
用於客戶端驗證、serverAuth
可用於伺服器端驗證,原先簽發的憑證應是只有指定clientAuth
,故無法用於伺服器端,所以把extendedKeyUsage
加上serverAuth
就可以解決問題了。
解決
故在extFile加上serverAuth
extendedKeyUsage = serverAuth, clientAuth
重新簽發憑證
openssl x509 -req -in <csr_file> -CA <ca_cert> -CAkey <ca_key> -out <out_cert> -days 365 -sha256 -extfile <ext_file>
可以用指令檢查用途是否正確
openssl x509 -noout -purpose -in <cert_file>
其中如果有正確設定,SSL server
欄位應為Yes
,更換憑證之後重啟,再用指令檢查,就可以看到是正常的結果了。