deep-inspection
deep-inspection
注意
基于以下限制,大部分常见场景下更推荐使用 certificate-inspection 模式,而不是 deep-inspection:
- 对性能消耗更大,并可能影响某些对证书绑定/校验严格的应用(需通过白名单/例外策略保障兼容性)。
- 需要每个终端信任 CA 证书,否则可能出现证书告警或连接失败。
- 要求“中间人解密”与重签名的证书必须是 CA 证书或 Sub CA 证书,不能使用用户证书。
功能简介
深度检测(deep-inspection)是 FortiGate 在 SSL/TLS 加密流量场景下提供的一种安全检测机制。通过对加密流量进行解密、检测和重新加密,FortiGate 能够识别并阻断隐藏在加密通道中的恶意行为,从而避免攻击绕过传统的安全防护措施。
深度检测支持 HTTPS 以及多种基于 SSL/TLS 的常见协议,例如 SMTPS、POP3S、IMAPS 和 FTPS。
能力与限制:
- 可对加密流量应用 AV/IPS/Web Filter/DLP 等内容级检测,安全能力最强。
- 对性能消耗更大,并可能影响某些对证书绑定/校验严格的应用(需通过白名单/例外策略保障兼容性)。
- 需要每个终端信任 CA 证书,否则可能出现证书告警或连接失败。
- 要求“中间人解密”与重签名的证书必须是 CA 证书或 Sub CA 证书,不能使用用户证书。
工作模式
虽然 HTTPS 等加密协议为互联网通信提供了隐私保护,但攻击者同样可以利用加密流量隐藏恶意内容,例如:
- 在加密的电子商务会话中下载携带病毒的文件。
- 钓鱼邮件中的“看似正常”附件,在本地执行后建立到 C & C(Command and Control)服务器的加密连接。
- 通过加密通道下载或回传恶意程序数据。
由于上述通信过程均处于加密状态,如果不进行解密检测,相关攻击可能绕过网络安全设备的防护。

启用深度检测后,FortiGate 会执行以下操作:
- 模拟目标服务器,与客户端建立 SSL/TLS 会话。
- 解密并检查流量内容,识别威胁并执行放通/阻断。
- 重新加密流量,再转发至真实的目标服务器。
证书告警提示
在重新加密流量时,FortiGate 会使用本地存储的 CA 证书进行签名,例如:Fortinet_CA_SSL、Fortinet_CA_Untrusted、管理员自行上传的 CA 证书。
在应用 deep-inspection 的防火墙策略中,由于客户端浏览器默认不信任这些内置/自定义 CA 证书,客户端在访问时会收到“证书不受信任”的安全警告(不代表配置错误,点击“继续前往”仍可以显示目标网站)。

消除证书告警
为避免客户端出现访问网站时的 HTTPS 证书警告,需要在终端设备上安装 deep-inspection 配置文件使用的 CA 证书并信任。获取 CA 证书步骤如下:

进入安全配置文件 → SSL/SSH 检测。
编辑当前防火墙策略所使用的 SSL/SSH 检测配置文件,如上所示为系统预置的 deep-inspection 配置文件。
在 CA 证书右侧点击“下载”按钮。
提示
- 内置的 certificate-inspection 配置文件默认使用的 CA 为 Fortinet_CA_SSL,无法修改。
- 可在设备证书库中导入自定义 CA 证书(参考:系统管理 → 系统设置 → 证书管理章节,必须导入带私钥的 CA 证书或 SubCA 证书,不能使用用户证书),并克隆或新建 SSL/SSH 检测配置文件调用自定义 CA 证书。
- 导入的自定义 CA 证书位于“本地证书”分类中。
将下载的 CA 证书加入客户端系统或者浏览器的信任列表。
重要
Chrome/Edge 依赖系统的证书信任列表。
而 Firefox 有自己的信任列表,需要在浏览器设置中添加,或在浏览器的证书设置中开启“允许 Firefox 自动信任您安装的第三方证书”,开启后 Firefox 也会信任系统的证书信任列表。

Windows双击下载的 CA 证书,点击“安装证书 (I)...”。

存储位置选择“本地计算机 (L)”,然后点击下一步。

选择“将所有的证书都放入下列存储 (P)”,点击“浏览 (R)...”按钮,选择“受信任的根证书颁发机构”。

完成证书导入。

macOS双击下载的 CA 证书,会打开“钥匙串访问”应用。
进入“系统 → 证书”页面,可以看到刚刚导入的 CA 证书,然后双击该证书。

在“使用此证书时”选项中选择“始终信任”,关闭窗口(会提示输入系统密码)。

客户端再次访问该网站时,会直接显示出目标网页,页面显示连接安全,不会弹出证书告警页面。
提示
同时诸如 Web Filter 阻断页面的 FortiGate 替换页面的证书告警也会消失,参考:UTM → SSL/SSH 检查 → certificate-inspection 章节。

自定义 deep-inspection 配置文件
默认的 deep-inspection 配置文件为只读,无法修改任何配置(使用出厂自带的 Fortinet_CA_SSL 作为 CA 证书等),当有如下配置需求(包含但不限),必须新建或克隆一个证书检查配置文件:
- 需要使用自定义的 CA 证书。
- 其他自定义参数,如针对无效 SSL 证书配置处理方式,例如允许、阻断、根据不同证书错误类型设置不同动作等,请参考:UTM → SSL/SSH 检查 → SSL/SSH 检测配置文件章节。
进入安全配置文件 → SSL/SSH 检测,新建或克隆 deep-inspection 配置文件。

在“SSL 检测选项”中配置自定义的 CA 证书,保存配置。
提示
- 可在设备证书库中导入自定义 CA 证书(参考:系统管理 → 系统设置 → 证书管理章节,必须导入带私钥的 CA 证书或 SubCA 证书,不能使用用户证书),并克隆或新建 SSL/SSH 检测配置文件调用自定义 CA 证书。
- 导入的自定义 CA 证书位于“本地证书”分类中。

对应的 SSL/SSH 检查配置文件 CLI 命令如下。
config firewall ssl-ssh-profile edit "test-deep-inspection" config https set ports 443 set status deep-inspection set quic inspect end config ftps set ports 990 set status deep-inspection end config imaps set ports 993 set status deep-inspection end config pop3s set ports 995 set status deep-inspection end config smtps set ports 465 set status deep-inspection end config ssh set ports 22 set status disable end config dot set status disable set quic inspect end set caname "testca_bing" next end在防火墙策略中调用该 SSL/SSH 检测配置文件。
提示
使用 deep-inspection 类型的配置文件时,必须在防火墙策略中至少调用一个 UTM 配置文件,否则深度检测功能不会生效。
config firewall policy edit 1 set name "to_Internet1" set srcintf "lan" set dstintf "wan1" set action accept set srcaddr "all" set dstaddr "all" set schedule "always" set service "ALL" set utm-status enable set ssl-ssh-profile "test-deep-inspection" set webfilter-profile "default" set nat enable next end随后客户端访问 HTTPS 443 或 8443 端口的网站时,FortiGate 的阻断页面证书会被替换成自定义 CA 证书。

其他选项
免除 SSL 检查
提示
此功能仅支持 deep-inspection 模式。
在某些场景下,可能因隐私或合规要求需要跳过深度检测。
在“免除 SSL 检查”中配置需要跳过深度检测的内容,可免除以下类型的目标地址(按需开启“记录 SSL 免除日志”,相关的日志可以在“日志 & 报表 → 安全事件 → 日志”下的 SSL 分类中查看):

Web Filter 分类。
提示
默认配置下,在执行“免除 SSL 检查”功能时,网站域名与其 IP 地址会同时被 FortiGuard 评级,且返回的分类结果不一致时,FortiGate 会优先采用 IP 地址的分类结果。
可以通过如下 CLI 关闭 IP 地址评级,在执行“免除 SSL 检查”功能时,FortiGate 不会再使用 IP 分类结果,仅基于域名的 FortiGuard 分类进行判断。
该命令只针对“免除 SSL 检查”功能生效。
config firewall ssl-ssh-profile edit <profile-name> set ssl-exemption-ip-rating disable next end
IP/IP 范围/IP 子网/地址位置/FQDN/通配符 FQDN。
启用“信誉良好的网站”,可跳过 FortiGuard 认定的常见可信网站。
config firewall ssl-ssh-profile
edit "test-deep-inspection"
config ssl-exempt
edit 1
set type address
set address "10.10.1.1-10.10.1.100"
next
edit 2
set type address
set address "192.168.100.0/24"
next
edit 3
set type address
set address "China"
next
edit 4
set type address
set address "handbook.fortinet.com.cn"
next
edit 5
set type wildcard-fqdn
set wildcard-fqdn "*.fortilab.com"
next
edit 6
set fortiguard-category 33
next
edit 7
set fortiguard-category 31
next
end
set ssl-exemption-log enable
next
endSSL/TLS 版本检测
提示
此功能仅支持 deep-inspection 模式。
FortiGate 提供两种方式限制深度检测适用的 SSL/TLS 版本。
全局配置:启用后,系统默认将最低允许的 SSL/TLS 版本设置为 TLS 1.1(默认开启)。
config system global set strong-crypto enable end深度检测配置文件配置:当客户端或服务器尝试使用低于最低允许版本的 SSL/TLS 时阻断会话(默认为 tls-1.0)。
提示
当检测模式为 certificate-inspection 时,无法设置
min-allowed-ssl-version,因为此模式下 FortiGate 不会代理与服务器协商具体的 SSL/TLS 版本。config firewall ssl-ssh-profile edit <name> config {ssl | https | ftps} set min-allowed-ssl-version {ssl-3.0 | tls-1.0 | tls-1.1 | tls-1.2 | tls-1.3} end next end
不支持 SSL 版本的处理策略
当客户端或服务器尝试使用 FortiGate 无法识别的 SSL/TLS 版本协商时的动作,默认为 block。
config firewall ssl-ssh-profile
edit <name>
config {ssl | https | ftps | imaps | pop3s | smtps | dot}
set unsupported-ssl-version {allow | block}
end
next
end检测所有端口

为优化系统资源,FortiGate 支持针对特定协议启用或禁用协议端口映射。每种协议都有默认的 TCP 端口,管理员可以根据实际需要修改端口配置,以便对非标准端口上的加密流量进行检测。FortiGate 会根据数据包头部信息识别协议类型。支持的协议包括:
- HTTPS
- SMTPS
- POP3S
- IMAPS
- FTPS
- DNS over TLS(DoT)
“检测所有端口”的实际效果,取决于防火墙检测模式(flow/proxy)和 SSL 检查深度(certificate-inspection/deep-inspection)的配置。
相关信息
- 防火墙策略的检测模式介绍可参考:故障排查 → 数据包处理流程 → 安全检测模式章节。
- 在 Flow-based + deep-inspection 检测模式下,FortiGate 会对所有端口进行检测,而不受端口映射配置影响。
| 策略检测模式/证书检测模式 | 检测所有端口状态 | 行为 |
|---|---|---|
| Proxy + deep-inspection | 禁用 | 仅扫描“协议端口映射”中指定端口 |
| Proxy + deep-inspection | 启用 | 扫描所有端口 |
| Flow + deep-inspection | 启用/禁用 | 扫描所有端口 |
| certificate-inspection | 禁用 | 仅扫描“协议端口映射”中指定端口(Flow/Proxy 一致) |
| certificate-inspection | 启用 | 扫描所有端口(Flow/Proxy 一致) |