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,更換憑證之後重啟,再用指令檢查,就可以看到是正常的結果了。

參考資料