Skip to content

Commit e88ca8a

Browse files
add more SSL_ meta vars from the mod_ssl family
adding a few more variables when webrick is run in SSL, and mutual tls is in place; in such a case, it's important to send information to the backend whether the certificate has been verified, among others.
1 parent 158a7ef commit e88ca8a

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

lib/webrick/https.rb

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,25 @@ def meta_vars
6969
if server_cert
7070
meta["HTTPS"] = "on"
7171
meta["SSL_SERVER_CERT"] = @server_cert.to_pem
72-
meta["SSL_CLIENT_CERT"] = @client_cert ? @client_cert.to_pem : ""
72+
if @client_cert
73+
meta["SSL_CLIENT_M_VERSION"] = @client_cert.version
74+
meta["SSL_CLIENT_M_SERIAL"] = @client_cert.serial
75+
meta["SSL_CLIENT_S_DN"] = @client_cert.subject.to_s
76+
meta["SSL_CLIENT_I_DN"] = @client_cert.issuer.to_s
77+
meta["SSL_CLIENT_V_START"] = @client_cert.not_before.httpdate
78+
meta["SSL_CLIENT_V_END"] = @client_cert.not_after.httpdate
79+
meta["SSL_CLIENT_V_REMAIN"] = (@client_cert.not_after - @client_cert.not_before) / 60 / 60 / 24
80+
meta["SSL_CLIENT_A_SIG"] = @client_cert.signature_algorithm
81+
meta["SSL_CLIENT_A_KEY"] = @client_cert.public_key.oid
82+
meta["SSL_CLIENT_CERT"] = @client_cert.to_pem
83+
meta["SSL_CLIENT_VERIFY"] = if @socket.context.verify_mode == OpenSSL::SSL::VERIFY_NONE
84+
"NONE"
85+
elsif @socket.verify_result == OpenSSL::X509::V_OK
86+
"SUCCESS"
87+
else
88+
"FAILED"
89+
end
90+
end
7391
if @client_cert_chain
7492
@client_cert_chain.each_with_index{|cert, i|
7593
meta["SSL_CLIENT_CERT_CHAIN_#{i}"] = cert.to_pem

0 commit comments

Comments
 (0)