引入了 SSL DataScript 事件和 API,以将 SSL 握手级别事件添加到读取或写入参数,以控制 SSL 握手并更改 SSL 配置文件、证书、PKI 设置、重新协商等属性。
通过此功能,对于特定的客户端 IP 地址或端口,您可以:
更改 SSL 握手属性,如限制 TLS 协议版本和/或密码以及其他配置参数。
更改用于 TLS 连接的模式或 CA 证书等 PKI 设置。
更改连接的服务器证书。
读取和/或忽略特定错误的双向客户端身份验证。
根据使用重新协商请求的 URI 触发客户端身份验证。
SSL 握手事件允许编写特定于事件的 DataScript 以控制 SSL 握手流,例如更改 SSL 配置文件设置、服务器证书和其他操作,如基于 IP/URI 的客户端身份验证、SSL 标头插入等。
SSL 握手流
以下关键事件有助于通过 SSL DataScript API 自定义 SSL 握手流。API 仅特定于相应的事件:
事件 |
描述 |
---|---|
SSL_PRE_CONNECT |
此事件在 TLS 握手开始时触发。此事件可用于根据客户端 IP 或 VS 服务端口来更改 SSL 设置,如 SSL 配置文件、SSL 密钥和证书以及 PKI 配置文件等。 |
SSL_CLIENT_HELLO |
此事件在完成客户端 Hello 预处理后触发。此事件用于根据客户端 IP 或 VS 服务端口来更改 SSL 设置,如 SSL 配置文件、SSLKeyandCertificate 和 PKI 配置文件等。 |
SSL_HANDSHAKE_DONE |
此事件在 TLS 握手完成后触发。此事件可用于获取客户端证书身份验证错误和日志记录。 |
流中的虚拟服务 DataScript 事件如下所示:
VS_DATASCRIPT_EVT_CLIENT_SSL_PRE_CONNECT
VS_DATASCRIPT_EVT_CLIENT_SSL_CLIENT_HELLO
VS_DATASCRIPT_EVT_SSL_HANDSHAKE_DONE
引入了以下 DataScript API,将在上面列出的事件中执行:
API |
描述 |
---|---|
此 API 用于根据客户端 IP、TLS 服务器名称等因素,将 SSL 配置文件更改为不同的配置文件。 |
|
此 API 用于根据客户端 IP、TLS 服务器名称等因素,将 SSL 密钥和证书更改为不同的对象。 |
|
此 API 用于根据客户端 IP、TLS 服务器名称、HTTP 主机或 URI 等因素,更改初始或重新协商的 TLS 会话的 PKI 配置文件。 |
|
此 API 用于获取客户端证书身份验证和 CRL 检查的结果。 |
|
根据客户端 IP、TLS 服务器名称、HTTP 主机或 URI 等因素,在更改 PKI 配置文件、模式和频率后,使用此 API 重新协商与客户端的 TLS 连接。 |
|
此 API 接受验证错误代码,并返回与该错误代码关联的错误字符串。 |
|
此 API 用于获取客户端证书身份验证模式。 |
|
此 API 用于确定客户端证书验证是否完成。 |
|
此 API 用于清除 TLS 连接上的 SSL 客户端证书验证错误。 |
|
此 API 用于记录客户端证书身份验证失败。错误将作为重要性添加到应用程序日志中。 |
|
此 API 用于清除 TLS 连接的 SSL 会话缓存条目。 |
注意事项
仅 L7 虚拟服务支持这些事件和 API。
增强虚拟托管 (Enhanced Virtual Hosting, EVH) 子项不支持 SSL 事件。
FIPS 不支持 SSL 客户端 Hello 事件
以下连接不支持 Avi.ssl.renegotiate():
TLS1.3 连接
HTTP/2.0
如果执行该 API,TLS 或 HTTP/2.0 连接将失败。