SSL加速之证书透传iRule.doc
文本预览下载声明
SSL加速之证书透传iRule
(v1.0)
作者 刘念 审核 分类 网络 别类 F5 更新时间 2009年6月5日
关键字 三个以上的关键字 摘要 SSL加速 证书透传 irule
主要适用环境 SSL加速应用
版本说明
版本 日期 内容 编写人 V1.0 2007-4-11 报告初稿 刘念
关于SSL加速其它的废话就不多说了。这里主要介绍一个实际案例中的iRule。
目的:将client证书以一个完整的无换行的base64格式字符串透传证书所有有效内容。
下面,我们先看一下正常用文本打开的PEM的客户证书:
-----BEGIN CERTIFICATE-----
MIIC1DCCAj2gAwIBAgIDBNxMMA0GCSqGSIb3DQEBBAUAMIGNMQswCQYDVQQGEwJD
TjEPMA0GA1UEChMGTU9GVEVDMQwwCgYDVQQLEwNFREkxCzAJBgNVBAgTAkJKMRsw
GQYDVQQDExJHRkEgQ0EgQ0VSVElGSUNBVEUxEjAQBgNVBAcTCURvbmdDaGVuZzEh
MB8GCSqGSIb3DQEJARYSY2FAY2FjZW50ZXIuY29tLmNuMB4XDTA2MDkyNTE3MDMx
OFoXDTA3MDkyNjEyMTUxOFowgawxCzAJBgNVBAYTAkNOMQ8wDQYDVQQKEwZNT0ZU
RUMxDDAKBgNVBAsTA0VESTEQMA4GA1UECBMHQmVpSmluZzExMC8GA1UEAxMoNTEw
MDAwMDAwMDAxOC2xsb6pytC3v8m9x/i9+LP2v9rT0M/euavLvjEYMBYGA1UEDBMP
VXNlcklkIElzIEVtcHR5MR8wHQYJKoZIhvcNAQkBFhB0aWFud2pAZWMuY29tLmNu
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDm4Rbd0zfycP0k4nPd3OF7B9rZ
vTQMkb/0ryGO4euygQYlAiXI6H/wA5JJb+Dxyv3KpE95xyK0u2uiLmihjMCN+eS4
54Cl5vAi5Us38pOIfomOj2RBcy+X+LC61BQB+WB8LwisGmM4hOu3Twd+9o1Vlulr
EdjDuEoosUeg7XGvpQIDAQABoyEwHzAMBgNVHRMBAf8EAjAAMA8GA1UdDwEB/wQF
AwMAoAAwDQYJKoZIhvcNAQEEBQADgYEAZvVMeBosPBO1AhbbyoG0MiLo1ZRAn62Z
K0rqITlQKcM+caFzZ9Rwhs+7SNI+rzZ/+T6xN1fdczeiwQHwESom+MLg+ChH5IrU
YmwExbkCrur4Qkj6mS+SUs82pC+8zi3OnLGoyFRoRnJWPzC4BhleZ0QroR9A469i
yoPfhzrd9Ok=
-----END CERTIFICATE-----
可以看到,证书实际内容为BEGIN和END中间的部分。并且,在每64个字符(最后一行可能不足64位)后会有一个回车换行符,其16进制数为\x0d\0x0a。可以用UltraEdit打开查看。
现在将这些回车换行去掉后透传给后台服务器。
实验测试时发现的问题如下:
使用X509::whole读出的证书串会把回车换行符从\x0d\x0a换成一个字符\0x20。
直接将X509::whole插入到http header中回重新出现回车换行符\x0d\x0a,同时还会出现\x20
regsub命令无法替换\x20这种不可见字符。
因此,最终实现方法是根据证书格式的规律,取出每65位字符串中的前64位(最后一行不定),将这些小串最终拼接成需要的证书串。以达到去掉回车换行符的目的。
具体的iRule如下:
when CLIENTSSL_CLIENTCERT {
session add ssl [SSL::sessionid] [SSL::cert 0] 3600
}
when HTTP_REQUEST {
set id [SSL::sessionid]
set cert [session lookup ssl $id]
set subject [X509::subject $cert]
set cert [X509::whole $cert]
set sub_cert [substr $cert 28 -]
set subcert_len [st
显示全部