{ proc ReversedList mystrOrig { set mymystrReversed [split $mystrOrig ','] # 将原始字符串按逗号分隔成列表 set listReversed [list ] # 定义一个空列表 for { set i [llength $mymystrReversed] } { [incr i -1] >= 0 } {} { lappend listReversed [lindex $mymystrReversed $i] } # 循环将反转后的字符串列表添加到空列表中 set strReversed [join $listReversed ','] # 将反转后的字符串列表转换成字符串 return $strReversed # 返回反转后的字符串 } when HTTP_REQUEST # 当收到HTTP请求时执行以下操作 { if { [ findstr [HTTP::uri] 'CUPSecureSR/' 12 7] != 'servlet' } { # 如果请求不包含'CUPSecureSR/servlet'则丢弃请求 discard } set cert [SSL::cert 0] # 获取客户端证书 if { $cert != '' } # 如果客户端证书存在 { HTTP::header insert subject [call ReversedList [X509::subject $cert]] # 将反转后的证书主题添加到HTTP头部 HTTP::header insert serial_number [X509::serial_number $cert] # 将证书序列号添加到HTTP头部 HTTP::header insert issuer [call ReversedList [X509::issuer $cert]] # 将反转后的证书颁发者添加到HTTP头部 HTTP::header insert not_valid_before [X509::not_valid_before $cert] # 将证书生效时间添加到HTTP头部 HTTP::header insert not_valid_after [X509::not_valid_after $cert] # 将证书失效时间添加到HTTP头部 } else { # 如果客户端证书不存在 log local0. 'NO CLIENT CERT!' # 记录日志 log local0. 'HTTP uri = [HTTP::uri]<--->SSL COUNT = [SSL::cert count]<--->SessionID = [SSL::sessionid]<--->Client Addr = [IP::client_addr]' log local0. '-----------SSL was renegotiated.' SSL::session invalidate # 使SSL会话无效 SSL::renegotiate # 重新发起SSL握手 } }

iRule 翻译:反转证书信息并添加到 HTTP 头部

原文地址: https://www.cveoy.top/t/topic/ozAg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录