Ssl
lighttpd 上的錯誤“SSL3_GET_CLIENT_CERTIFICATE:peer 未返回證書”
我正在使用有效的證書,但我無法獲得客戶端證書。lighttpd 服務失敗並出現錯誤:
(connections-glue.c.200) SSL: 1 error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate
我的配置是這樣的:
$SERVER["socket"] == ":443" { protocol = "https://" ssl.engine = "enable" ssl.disable-client-renegotiation = "enable" #server.name = "mywebsite.com" ssl.pemfile = "/etc/lighttpd/ssl/mywebsite.com.pem" ssl.ca-file = "/etc/lighttpd/ssl/mywebsite.com.csr" ssl.ec-curve = "secp384r1" ssl.use-sslv2 = "disable" ssl.use-sslv3 = "disable" ssl.honor-cipher-order = "enable" ssl.cipher-list = "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS" # HSTS(15768000 seconds = 6 months) #setenv.add-response-header = ( # "Strict-Transport-Security" => "max-age=15768000;" #) #ask for client cert ssl.verifyclient.exportcert = "enable" ssl.verifyclient.activate = "enable" ssl.verifyclient.username = "SSL_CLIENT_S_DN_CN" ssl.verifyclient.enforce = "enable" ssl.verifyclient.depth = 3 } }
ssl.ca 文件讀取內容,您可以在此處呼叫任何文件類型,即使是 .txt 文件,如果內容是證書或證書鏈,對於 lighttpd 都沒關係。
當您啟用 ssl.verifyclient.activate 時,lighttpd 將請求在 ca 文件中具有根 CA 證書的證書。
如果我想使用第 3 方證書,例如 ICP-Brazil,它是所有個人證書的根。該證書由該實體簽署,證明您是真正的您,並且在您的法庭上具有法律效力。ICP-Brazil 目前有 5 個版本的根證書,因此如果系統應該支持舊證書(可能有效期為 6 年),這意味著您需要在 ssl.ca-file 中放置多個證書。如此處所述:https ://schnouki.net/posts/2014/08/12/lighttpd-and-ssl-client-certificates/
關於錯誤:
(connections.c.305)SSL:1 錯誤:140890C7:SSL 常式:SSL3_GET_CLIENT_CERTIFICATE:peer 沒有返回證書
發生這種情況是因為一些原因:
- 客戶端沒有任何有效證書(與 ssl.CA 文件中的根證書匹配)
- 連接在 ssl 握手完成之前中斷。這可能是由於選擇證書或輸入證書密碼的時間過長,甚至是網路重啟造成的。
- 您使用的是 CDN 網路(例如 cloudflare 或 ovh cdn),客戶端和伺服器之間的連接應該直接進行握手。
所以我得出的結論是,這並不是真正需要糾正的錯誤,而是 ssl 握手技術的局限性。