教程篇(7.0) 07. FortiGate安全 & 证书的操作 ❀ Fortinet 网络安全专家 NSE 4
Posted meigang2012
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教程篇(7.0) 07. FortiGate安全 & 证书的操作 ❀ Fortinet 网络安全专家 NSE 4相关的知识,希望对你有一定的参考价值。
在本课中,你将了解FortiGate为什么使用数字证书,如何配置FortiGate以使用证书(包括使用证书来检查加密通信的内容),以及FortiGate如何管理证书。
本节课,你将学习上图显示的主题。
完成本节后,你应该能够实现上图显示的目标。
通过演示对FortiGate如何使用证书的理解,你将能够更好地判断如何以及何时可以在你自己的网络中使用证书。
FortiGate使用数字证书来增强安全性。
FortiGate使用数字证书进行检查。设备可以根据需要生成证书,用于检测两台设备之间传输的加密数据;本质上,是中间人(MITM)攻击。FortiGate还可以在允许个人或设备完全连接到它所保护的实体之前,检查证书以识别(网络和互联网上的)人和设备。如果FortiGate信任该证书,则它允许连接。但是如果FortiGate不相信证书,它会阻止连接。如何配置FortiGate决定了行为;但是,正在使用的其他策略也可能影响连接尝试的接受或拒绝。
FortiGate使用数字证书来加强隐私。证书及其相关的私钥确保FortiGate能够建立到其他设备(如FortiGuard、web浏览器或web服务器)的私有SSL连接。
FortiGate还使用证书进行身份验证。拥有由已知且受信任的CA颁发的证书的用户可以通过FortiGate进行身份验证,从而访问网络或建立VPN连接。管理员用户可以使用证书作为第二因素身份验证来登录FortiGate。
什么是数字证书?
数字证书是由CA生成并签名的数字文件,它标识一个终端实体,如一个人(如Joe Bloggins)、一个设备(如webserver.acme.com)或一个东西(如证书吊销列表)。FortiGate通过读取Subject字段中的值来标识设备或人员,该字段表示为专有名称(DN)。FortiGate还可以使用替代标识符,如Subject Alternative Name字段所示,其值可以是网络ID或电子邮件地址。FortiGate可以使用主题密钥标识符和授权密钥标识符值来确定证书的颁发者(在颁发者字段中确定)和证书之间的关系。FortiGate支持X.509v3证书标准,这是最常用的证书标准。
FortiGate在信任证书之前会执行以下检查:
● 通过检查本地的CRL(在FortiGate上)来验证CA是否已吊销该证书,如果证书的序列号在CRL中,则该证书已被吊销,不再受信任。FortiGate还支持在线证书状态协议(OCSP),其中FortiAuthenticator作为OCSP响应器。
● 读取Issuer字段中的值,以确定它是否具有相应的CA证书。如果没有CA证书,FortiGate不信任该证书。Fortios使用Mozilla CA证书存储。可以通过单击 安全配置文件>SSL检查>查看受信任CA列表>工厂包 查看。
● 验证当前日期是否在Valid From和Valid To值之间。否则,证书将失效。
● 验证证书上的签名。签名必须验证成功。因为有效的签名是信任证书的关键需求,所以回顾一下FortiGate如何验证数字签名可能会很有用。
在生成数字签名之前,CA通过哈希函数运行证书的内容,该函数生成哈希结果。哈希结果是数据的数学表示,被称为原始哈希结果。CA使用它的私钥加密原始哈希结果。加密后的哈希结果就是数字签名。
FortiGate验证数字签名时,它通过哈希函数运行证书,产生一个新的哈希结果。FortiGate必须使用与CA用于创建数字签名的散列函数或散列算法相同的散列函数。在证书中标识哈希算法。
在验证过程的第二部分中,FortiGate使用CA公钥解密加密的哈希结果(或数字签名),并应用CA用于加密哈希结果的相同算法。这个过程验证签名。如果密钥不能将加密后的哈希结果恢复到原来的值,则签名验证失败。
在验证过程的第三部分(也是最后一部分)中,FortiGate将新哈希结果与原始哈希结果进行比较。如果两个值相同,则确认证书的完整性。如果这两个哈希结果不同,那么FortiGate拥有的证书版本与CA签名的证书版本不相同,数据完整性就会失败。
基于证书的用户认证使用最终实体证书来标识用户。此证书包含用户公钥和颁发证书的CA的签名。身份验证服务器(例如,FortiGate)必须拥有CA证书,该CA证书的私钥签名了用户证书。FortiGate验证证书签名是有效的,证书没有过期,证书没有被吊销。如果其中任何一个验证失败,则基于证书的用户验证失败。
你可以配置FortiGate,要求管理员使用证书进行第二因素身份验证。验证管理员证书的过程相同。
正如你在上图所示的示例中所看到的,web模型中的信任取决于你的证书存储是否拥有验证SSL证书上的签名所需的CA证书。证书存储预先填充了根证书和下级CA证书。你可以选择添加或删除证书,这将影响你信任的网站。
默认情况下,FortiGate使用自签名证书向HTTPS客户端验证自己。
你可以配置自签名证书以建立SSL会话,就像Verisign、Entrust Datacard和其他证书供应商颁发的证书一样。但是,由于自签名证书没有预先填充在客户端证书存储区中,所以你的最终用户会收到一个安全警告。你可以选择将自签名证书添加到客户端,或者为FortiGate设备从经过批准的CA供应商购买SSL证书。
FortiGate使用SSL确保数据在与服务器(如FortiGuard)连接时保持私有。还有客户端,比如网络浏览器。SSL的另一个特性是FortiGate可以使用它来识别使用证书的一方或双方。SSL使用对称和非对称加密技术在两点之间建立安全会话。
为了理解FortiGate如何保护私有会话,了解SSL握手的高级过程是有好处的。
对称加密技术的一个重要属性是使用相同的密钥对数据进行加密和解密,当FortiGate在自己和另一个设备之间建立SSL会话时,它必须共享对称密钥(或者说是生成该密钥所需的值),以便数据可以由一方加密、由另一方发送和解密。
非对称加密使用一对密钥:一个密钥执行一个功能,另一个密钥执行相反的功能。例如,当FortiGate连接到一个web服务器时,它使用web服务器公钥来加密一个名为premaster secret的字符串。web服务器私钥解密premaster secret。
现在,你将进一步了解建立SSL会话的过程。
在上图所示示例的第一步中,FortiGate连接到一个配置为SSL的web服务器。在最初的hello消息中,浏览器提供了与web服务器通信所需的关键信息。该信息包括SSL版本号和它支持的加密算法的名称。
在第二步中,web服务器接收来自FortiGate的消息,并选择消息中包含的第一套加密算法,并验证该消息是否也被web服务器支持。web服务器用选择的SSL版本和密码套件回应,然后将其证书发送给FortiGate。请注意,证书信息在公共网络上以明文形式传递。证书中包含的信息通常是公开的,因此这不是安全问题。
在第三步中,FortiGate验证web服务器证书。上图显示的检查表表示FortiGate对该证书执行的检查,以确保它是可信任的。如果FortiGate确定证书可以信任,则继续进行SSL握手。
在第四步中,FortiGate生成一个称为premaster secret的值。FortiGate使用位于证书中的服务器公钥来加密premaster secret。FortiGate然后将加密的premaster secret发送到web服务器。如果第三方截获了主密钥,他们将无法读取它,因为他们没有私钥。
在第五步中,web服务器使用它的私钥来解密premaster secret。现在,FortiGate和web服务器共享一个只有这两种设备才知道的secret值。
在第六步中,FortiGate和web服务器都在premaster secret的基础上派生出master secret。
在第七步中,FortiGate和web服务器根据master secret值生成会话密钥。会话密钥为对称密钥。需要对数据进行加密和解密。因为双方都有会话密钥,所以双方可以为对方加密和解密数据。
在这两个实体建立安全连接之前的第八步,也是最后一步,FortiGate和web服务器互相发送到目前为止发送的消息的摘要(或文摘)。摘要使用会话密钥加密。摘要确保在会话创建期间交换的任何消息都没有被拦截或替换。如果摘要匹配,则建立安全通信通道。
SSL握手现在完成了。FortiGate和web服务器都已准备好使用会话密钥进行安全通信,以加密和解密它们通过网络或互联网发送的数据。
答案:A
答案:A
你现在了解了FortiGate为什么以及如何使用证书来验证设备和人员。你还了解了FortiGate如何在数据从FortiGate流向另一个设备或从另一个设备流向FortiGate时使用证书来确保数据的私密性。
接下来,你将了解如何检查加密数据。
完成本节后,你应该能够实现上图显示的目标。
通过展示理解和配置完整SSL检查和证书检查的能力,你将能够在你的网络中实现这些SSL检查解决方案之一。
虽然使用HTTPS有好处,但它的使用也有风险,因为加密的流量可以用来绕过正常的防御。例如,如果在下载包含病毒的文件时对会话进行了加密,那么病毒可能会通过你的网络安全措施。
在上图所示的示例中,Bob使用合法CA颁发的证书连接到一个站点。因为CA是一个已批准的CA,所以CA验证证书在Bob的证书存储中,Bob的浏览器能够与example.com站点建立一个SSL会话。然而,Bob不知道的是,example.com网站已经感染了病毒。这种病毒在加密的掩护下,通过FortiGate而不被发现,进入了Bob的计算机。该病毒能够破坏安全性,因为没有启用完整SSL检查。
在SSL握手开始时交换hello消息期间,FortiGate解析来自客户机hello的服务器名称指示(SNI),这是TLS协议的扩展。SNI告诉FortiGate SSL服务器的主机名,在接收服务器证书之前,会根据DNS名称对其进行验证。如果没有交换SNI,则FortiGate通过服务器证书中的Subject字段或SAN(主题替代名称)字段中的值来标识服务器。
使用证书检测时,FortiGate只检测数据包的头部信息。通过证书检查来验证web服务器的身份。你也可以用它来确保HTTPS协议不会被用来作为一种解决方案来访问你用网络过滤屏蔽的网站。
通过SSL证书检测方式可以应用的安全特性只有web过滤。然而,由于只检查数据包,这种方法不会引入证书错误,当你使用web过滤时,可以作为完整SSL检查的一种有用的替代方法。
证书检查提供了一定程度的安全性,但它不允许FortiGate检查外部服务器和内部客户机之间的加密数据流。
FortiGate有一个用于SSL证书检查的只读预配置配置文件,名为certificate-inspection。如果需要启用SSL证书检查,请在配置防火墙策略时选择此配置文件。
或者,你可以按照以下步骤创建自己的SSL证书检查配置文件:
1. 在FortiGate GUI上,单击 安全配置文件>SSL/SSH检测。
2. 单击 新建 创建新的SSL/SSH检查配置文件。
3. 选择 多个客户端连接多个服务器,单击 SSL证书检查。
FortiGate必须充当CA,以便执行完整的SL检查。当内部用户每次连接到外部SSL服务器时,内部CA必须生成SSL私钥和证书。密钥对和证书立即生成,用户与web服务器的连接不会延迟。
虽然看起来用户浏览器连接到web服务器,但浏览器连接到FortiGate。FortiGate是一个代理web服务器。为了让FortiGate扮演这些角色,它的CA证书必须将基本约束扩展设置为cA=True,并将keyUsage扩展的值设置为keyCertSign。
cA=True表示该证书为CA证书。keyUsage=keyCertSign表示允许对应私钥的证书进行证书签名。更多信息请参见RFC 5280 Section 4.2.1.9 BasicConstraints。
所有支持完整SSL检查的FortiGate设备都可以使用FortiGate提供的自签名的Fortinet_CA_SSL证书或内部CA颁发FortiGate CA证书。当FortiGate使用内部CA时,FortiGate充当下属CA。请注意,你的客户端机器和设备必须导入根CA证书,以便信任FortiGate并接受SSL会话。你必须在FortiGate上安装CA证书链。FortiGate将证书链发送给客户端,以便客户端可以验证签名并构建信任链。
一些FortiGate设备提供了一种机制来检查在外部SSL服务器和内部客户机之间流动的加密数据。如果没有完整SSL检查,FortiGate就无法检查加密的流量,因为防火墙没有解密数据所需的SSL密钥,而且该密钥是在SSL握手期间客户机和服务器之间协商的。
完整SSL检查有两种可能的配置:一种用于出站流量,另一种用于入站流量。
如果连接请求为出站(内部客户端向外部服务器发起),则必须选择〖多个客户端连接多个服务器〗。然后,你必须选择用于签署新证书的CA证书。在上图所示的示例中,它是内置的FortiGate_CA_SSL证书,该证书可在支持SSL检查的FortiGate设备上获得。在本课中,你还将了解为入站流量配置完整SSL检查。
在步骤1中,内部web浏览器连接到启用SSL的web服务器。通常情况下,当浏览器连接到安全站点时,web服务器会将自己的证书发送给浏览器。但是,在步骤2中,FortiGate拦截了web服务器证书。在步骤3中,FortiGate内部CA生成新的密钥对和证书。新的证书主题名称必须是网站的DNS名称(例如,ex.ca)。在步骤4和步骤5中,使用新的密钥对和证书在FortiGate和web浏览器之间建立安全连接。每次客户端请求与外部SSL服务器连接时,都会生成新的临时密钥对和证书。
在步骤5中,FortiGate使用web服务器证书发起与web服务器的安全会话。在这种配置中,FortiGate可以同时解密来自web服务器和浏览器的数据,以便在重新加密数据并将其发送到目的地之前对数据进行威胁扫描。这个场景本质上是MITM攻击。
当你试图访问使用未受信任证书的HTTPS站点时,浏览器会提示证书警告。未受信任的证书包括自签名SSL证书,除非该证书被导入到受浏览器信任的证书存储区中。FortiGate在SSL/SSH检测页面上有自己的配置设置,包括允许、阻断或忽略未受信任的SSL证书选项。
当未受信任的SSL证书设置为〖允许〗时,FortiGate检测到未受信任的SSL证书时,FortiGate会生成一个由内置的Fortinet CA签名的临时证书。FortiGate然后将临时证书发送到浏览器,这将向用户显示一个警告,表明该站点不受信任。如果FortiGate收到一个受信任的SSL证书,那么它会生成一个由内置的Fortinet_CA_SSL证书签名的临时证书,并将其发送给浏览器。如果浏览器信任Fortinet_CA_SSL证书,则浏览器完成SSL握手。否则,浏览器还会显示一条警告消息,通知用户该站点是不受信任的。换句话说,为了使此功能正常工作,你必须将Fortinet_CA_SSL证书导入到浏览器的可信根CA证书存储中。不支持导入Fortinet_CA_Untrusted证书。
当设置为〖阻断〗时,FortiGate会收到一个未受信任的SSL证书,FortiGate会彻底阻断连接,用户无法继续。
当设置为〖忽略〗时,无论SSL证书的状态是受信任还是未受信任,FortiGate都会向浏览器发送一个由Fortinet_CA_SSL证书签名的临时证书。FortiGate接着建立SSL会话。
上图显示的场景描述了FortiGate如何处理受信任的外部站点,而不考虑未受信任的SSL证书设置。
在步骤1中,浏览器发起与FortiGate信任的外部站点的连接。在步骤2中,受信任的服务器将其SSL证书发送到FortiGate。在步骤3中。FortiGate信任该证书,因为它的受信任证书存储区中有相应的CA证书。FortiGate可以验证SSL证书上的签名。在第4步中,因为FortiGate信任SSL证书,所以它生成了一个由Fortinet_CA_SSL证书签名的临时证书。FortiGate将临时证书发送到浏览器。最后,在第5步中,浏览器信任临时证书,因为Fortinet_CA_SSL证书位于其受信任的根CA存储中。在浏览器完成对证书的验证后,它通过FortiGate完成SSL握手。下一步,FortiGate继续与受信任的服务器进行SSL握手。
上图中显示的场景描述了当未受信任的SSL证书设置为允许时,FortiGate如何处理未受信任的外部站点。
在步骤1中,浏览器发起与FortiGate未受信任的外部站点的连接。在步骤2中,未受信任的服务器将其自签名SSL证书发送给FortiGate。在步骤3中,FortiGate在其受信任的证书存储库中找不到证书的副本,因此不信任SSL证书。在第4步中,因为FortiGate不信任SSL证书,所以它生成了一个由Fortinet_CA_Untrusted证书签名的临时证书,将此临时证书发送到浏览器。在步骤5中,浏览器不信任临时证书,因为它的受信任根CA存储中没有Fortinet_CA_Untrusted证书。浏览器会显示一条警告,提醒用户证书不受信任。如果用户决定忽略警告并继续,浏览器完成与FortiGate的SSL握手。下一步,FortiGate继续与不受信任的服务器进行SSL握手。
用户可以选择将此临时证书写入浏览器受信任的证书存储区,但这在将来不会产生影响。下次用户连接到同一个未受信任的站点时,将为会话生成一个新的临时证书。
上图显示的场景描述了当未受信任的SSL证书设置为〖阻断〗时,FortiGate如何处理不受信任的外部站点。
在步骤1中,浏览器发起与FortiGate未受信任的外部站点的连接。在步骤2中,未受信任的服务器将其自签名SSL证书发送给FortiGate。在步骤3中,FortiGate在其受信任的证书存储区中找不到该证书,因此不信任SSL证书。在步骤4中,因为FortiGate不信任SSL证书,所以它停止会话。在步骤5中,FortiGate通知浏览器站点被阻断。
上图中显示的场景描述了当未受信任的SSL证书设置为忽略时,FortiGate如何处理未受信任的外部站点。
在步骤1中,浏览器发起与FortiGate未受信任的外部站点的连接。在步骤2中,未受信任的服务器将其自签名SSL证书发送给FortiGate。因为设置为〖忽略〗,FortiGate不会检查证书存储区。在步骤3中,FortiGate生成了一个由Fortinet_CA_SSL证书签名的临时证书,并将该证书发送给浏览器。在步骤4中,浏览器信任该证书,因为Fortinet_CA_SSL证书位于其受信任的根CA存储区中。在浏览器完成证书检查后,它将完成与FortiGate的SSL握手。接下来,FortiGate继续与受信任的服务器进行SSL握手。
到受信任站点的连接以同样的方式处理。
在完整SSL检查配置文件中,你还可以指定希望豁免SSL检查的SSL站点(如果有的话)。如果SSL检查引起了流量问题,或者出于法律原因,你可能需要豁免流量的SSL检查。
例如,在启用了HTTP公钥固定(HPKP)的站点上执行SSL检查,可能会导致流量问题。请记住,FortiGate检查加密流量的唯一方法是拦截来自服务器的证书,并生成一个临时证书。FortiGate提供临时SSL证书后,使用HPKP的浏览器将拒绝继续。因此,SSL检查配置文件允许你豁免特定的流量。
保护隐私的法律可能是绕过SSL检查的另一个原因。例如,在一些国家,检查SSL银行相关的流量是不合法的。为站点配置豁免比为每个银行设置防火墙策略更简单。你可以根据网站类别豁免网站,比如金融或银行网站,或者你可以根据它们的地址豁免网站。或者,你可以启用声誉良好的网站,这将排除FortiGuard维护的声誉良好的域名的允许列表,使其不受完整的SSL检查。该列表定期更新,并通过FortiGuard下载到FortiGate设备。
FortiGate可以检测由于以下原因而无效的证书:
● 已过期:证书已过期。
● 已撤销:证书已根据CRL或OCSP信息被撤销。
● 验证超时:由于通信超时,无法验证证书。
● 验证失败:由于通信错误,无法验证证书。
当证书由于上述原因失效时,你可以配置以下任何一种操作:
● 保持不受信任&允许:FortiGate允许网站并让浏览器决定采取什么行动。FortiGate将证书视为受信任证书。
● 阻断:FortiGate屏蔽了该网站的内容。
● 信任&允许:fortigate允许该网站并将该证书视为受信任证书。
证书检查功能可以分为两个主要的检查,它们是并行执行的:
● FortiGate检查证书是否因为上述描述的四个原因而无效。
● FortiGate根据本地安装的CA证书和SSL服务器提供的证书执行证书链验证。这在本课中有描述。
根据配置的操作和检查结果,FortiGate将证书表示为受信任的(由Fortinet_CA_SSL签名)或不受信任的(由Fortinet_CA_Untrusted签名),并允许或阻断其内容。你也可以通过启用记录SSL异常日志选项来跟踪证书异常。
当选择多客户端连接多服务器时,可以〖开启SSH深度检测〗功能。当启用SSH深度检测时,FortiGate对SSH流量进行MITM攻击。这个过程与完全SSL检查的过程类似。FortiGate拦截服务器发送的SSH密钥,生成一个新的SSH密钥并发送给客户端。如果SSH客户端已经存储了原始的主机密钥,那么它会检测到主机密钥的变化,并警告用户。然后,用户可以用FortiGate生成的新主机密钥替换原来的主机密钥。
缺省情况下,SSH深度检测监听TCP端口22。可以选择其他端口号,也可以在SSH端口中选择Any。当你这样做时,FortiGate将扫描所有连接,以识别使用不同端口的SSH流量。为SSH流量指定端口不像搜索所有端口那样全面,但在性能上更容易。
最后,请注意SSH深度检测只是一个基于代理的检查功能。此外,使用SSH深度检测的安全功能只有反病毒和数据防泄漏。
在上图的例子中,FortiGate保护的是一个web服务器。这是完全SSL检查的第二个配置选项。在配置此服务器的SSL检查配置文件时,必须选中保护SSL服务器,将服务器密钥对导入到FortiGate中,然后在服务器证书下拉框中选择证书。
当Alice尝试连接受保护的服务器时,FortiGate通过使用服务器密钥对与客户端建立安全连接,从而成为代理web服务器。FortiGate还与服务器建立安全连接,但充当客户机的角色。此配置允许FortiGate从任意方向解密数据、扫描数据,如果数据是干净的,则重新加密并将其发送给预期的接收方。
你必须安装服务器证书和私钥,以及构建信任链所需的证书链。FortiGate为此将证书链发送到浏览器。
通过对入站流量创建完整SSL检查配置文件,你可以将配置文件配置为使用多个网站,如果它们可以通过相同的外部IP地址访问。当FortiGate接收到客户端和服务器hello消息时,它会根据检查配置文件中证书部分的公共名称(CN),根据服务器名称指示符(SNI)值选择证书来执行完整SSL检查。如果证书CN与请求中的SNI匹配,FortiGate就会选择这个证书来替换原来的证书,并使用它来检查流量。
如果SNl与SSL配置文件中的证书列表中的CN不匹配,FortiGate将选择列表中的第一个服务器证书。
创建并配置SSL检查配置文件后,必须将其分配给防火墙策略,以便FortiGate知道如何检查加密的流量。现在大部分的互联网流量都被加密了。出于这个原因,你通常希望启用SSL检查,以保护你的网络免受通过加密流量传输的安全威胁。如果不需要启用SSL或SSH检查,请在下拉列表中选择no-inspection配置文件。如果策略中没有启用SSL检测功能,FortiGate将不对匹配该策略的SSL或SSH加密流量进行扫描。
如果你选择启用了完整SSL检查的配置文件,则会出现〖解密的流量镜像〗选项。如果你希望FortiGate将已解密SSL通信的副本发送到某个接口,则启用该选项。当你启用解密的流量镜像时,FortiGate将显示一个带有此功能的使用条款的窗口。用户必须同意条款,才能使用该功能。
当使用FortiGate自签名CA进行完整SSL检查时,每次连接到HTTPS站点时,浏览器都会显示一个证书警告。这是因为浏览器正在接收由FortiGate签名的证书,这是一个它不知道和不信任的CA。在进行SSL证书检查时,浏览器也会弹出证书警告,并且有HTTPS网站被FortiGate屏蔽。因为FortiGate需要向浏览器显示替换消息,所以FortiGate执行MITM并使用自签名CA签名证书。
你可以通过以下方法来避免这个警告:
● 下载Fortinet_CA_SSL证书,并将其作为受信任的根证书机构安装在所有工作站上。
● 使用CA颁发的SSL证书,并确保该证书已安装在必要的浏览器中。
你需要在FortiGate上安装SSL证书,并配置设备使用该证书进行SSL检测。如果SSL证书是由从属CA签名的,请确保从SSL证书到根CA证书的整个证书链都安装在FortiGate上。确认所有客户端浏览器上都安装了根CA。这是信任目的所必需的。因为FortiGate在SSL握手期间将证书链发送到浏览器,所以你不必在浏览器上安装中间CA证书。
IETF引入了一些安全措施来减轻MITM攻击。当你实现出站完整SSL检查时,其中一些措施会导致问题。
HTTP严格传输安全(HSTS)和HTTP公钥固定(HPKP)是旨在阻止MITM攻击的安全特性。根据IETF的RFC 6797, HSTS是“一种让网站声明自己只能通过安全连接访问的机制……”。换句话说,当一个用户从一个网络浏览器连接到一个有这个策略的网站时,将被迫使用HTTPS;没有使用HTTP连接的选项。公共安全保障计划是一项由网络伺服器推行的保安措施,在指定时间内,把一个或多个公开密码匙与网站相关联。公钥不必是web服务器公钥,它可以是中间或根CA公钥之一,只要它存在于证书链中。当网页浏览器访问一个启用hpkp的网站时,与该网站相关联的公开密钥的哈希值被缓存在客户端机器上。
接下来,每次网络浏览器连接到网络服务器时,它都会将一个或多个密钥与缓存的密钥指纹进行比较。如果浏览器不能匹配至少一个密钥,SSL握手终止。这是出站完整SSL检查的一个问题。FortiGate生成新的证书和公钥,与web浏览器建立SSL会话。FortiGate不能提供一个真实的证书链,因此连接会被浏览器拒绝。可以预见的是,这可能会阻止用户连接到许多合法网站。
规避HPKP的选择是有限的。一种选择是豁免对这些站点的SSL检查。另一种选择是使用SSL证书检查。第三种选择是使用不支持HPKP的浏览器,如Chrome、Internet Explorer或Edge。最后,在某些浏览器中,可以禁用HPKP。
越来越多的应用程序正在使用SSL在互联网上安全地交换数据。虽然本课的大部分内容集中于SSL检查对浏览器的操作和影响,但同样适用于使用SSL的其他应用程序。毕竟,浏览器只是在设备上使用SSL的另一个应用程序。
由于这个原因,当你在FortiGate上启用SSL检查时,你需要考虑对基于SSL的应用程序的潜在影响。例如,当你启用完整SSL检查时,Microsoft Outlook 365会报告一个证书错误,因为FortiGate使用的CA证书不受信任。要解决这个问题,你可以将CA证书作为受信任的根证书颁发机构导入你的Windows证书存储区。因为Microsoft Outlook 365信任Windows证书存储中的证书,所以应用程序不会再报告证书错误。另一种选择是使Microsoft Exchange服务器地址免于SSL检查。虽然这可以防止证书错误,但你不再对电子邮件流量执行SSL检查。
还有一些应用程序内置了额外的安全检查来防止MITM攻击,例如HPKP或证书固定。例如,Dropbox使用证书固定来确保对用户流量不可能进行SSL检查。因此,当你在FortiGate上启用完整SSL检查时,你的Dropbox客户端停止工作,并报告它不能建立安全连接。在Dropbox的情况下,解决连接错误的唯一方法是通过免除Dropbox连接域的SSL检查。
此外,请记住SSL是由不同的协议使用的,而不仅仅是HTTP。例如,还有其他基于SSL的协议,如FTPS、POP3S、SMTPS、STARTTLS、LDAPS和SIP TLS。如果你有一个使用这些基于SSL的协议中的任何一个的应用程序,并且你已经打开了SSL检查以及检查这些协议的安全配置文件。然后应用程序可能报告SSL或证书错误。解决方案依赖于应用程序采用的安全措施。
答案:B
答案:A
现在你可以描述证书和深度检查,并且可以配置FortiGate以使用这些选项中的任何一个。
接下来,你将学习如何在FortiGate上管理数字证书。
完成本节后,你应该能够实现上图显示的目标。
通过演示生成证书请求、导入CRL以及备份和恢复证书的能力,你将能够在FortiGate上管理证书。
为FortiGate获取数字证书的过程从创建证书签名请求(CSR)开始。流程如下:
1. FortiGate生成CSR。已为FortiGate创建私钥对和公钥对。CSR由FortiGate私钥签名。
2. FortiGate将CSR提交给CA, CSR包括FortiGate公钥和有关FortiGate的特定信息(IP地址、可识别名称、电子邮件地址等)。请注意,FortiGate上的私钥仍然是机密的。
3.CA验证CSR中的信息是否有效,然后为FortiGate创建一个数字证书。证书是使用CA私钥进行数字签名的。CA还将证书发布到一个中央存储库。该证书将公钥绑定到FortiGate。
4. 返回安装到FortiGate的证书。
通过单击generate,你可以在GUI的证书页面上生成CSR。输入所需的所有信息,例如IP地址(或FQDN)和公司名称。确保钥匙的类型和大小符合你的要求。可以通过以下两种方式向CA提交CSR:
● 选择〖其于文件〗将CSR生成为a.csr文件,然后将其发送给CA。
● 选择〖在线SCEP〗使用简单证书注册协议(SCEP)在线向CA提交CSR。例如,如果你使用FortiAuthenticator作为CA,你可以在FortiAuthenticator上启用和配置SCEP,并使用此方法。
如果你正在使用基于文件的方法,那么CSR将被添加到证书页面上的证书列表中。选择CSR并单击Download。管理员现在可以向CA提交文件(.csr),它是一个PKCS#10请求。PKCS#10是证书请求最常见的格式。CA使用该文件生成签名证书。
如果采用在线SCEP方式,则需要输入用于SCEP的CA服务器地址和CA管理员提供的挑战密码。CSR自动在线提交。
使用这两种方法提交CSR后,FortiGate会显示证书状态为Pending,直到CA返回证书并导入FortiGate。此时,状态变为Valid,可以使用数字证书了。
请注意,如果删除CSR,则无法安装证书,必须重新开始。
提交CSR的基于文件的方法是一个手工过程。SCEP过程是自动在线进行的,不需要手动导入文件。
你可以通过证书页面导入证书。单击〖导入〗,选择〖本地证书〗。在导入证书对话框中,在Type字段中,选择本地证书并浏览到CA提供的CER文件。
导入证书后,证书的状态由Pending变为Valid。请注意,可以添加FortiGate在SSL通信中使用的证书,而无需生成和签署CSR。CA可以在没有CSR的情况下为你的FortiGate创建证书(尽管CA负责为你的FortiGate设备提供所有证书详细信息)。可以通过以下方式添加证书:
● 上传一个PKCS#12文件,它是一个单独的文件,包括签署的证书文件和密钥文件
● 上传证书文件和密钥文件
拥有超级管理员配置文件的管理员用户可以在证书上设置密码,并控制对其私钥的访问。
你还可以导入由外部服务使用ACME协议提供的本地证书。RFC 8555中定义。自动的本地证书导入可以使用公共的Let’s Encrypt CA来提供免费的SSL服务器证书。你可以将FortiGate配置为使用Let’s Encrypt管理的证书和其他使用ACME协议的证书管理服务。
导入ACME证书需要满足以下条件:
● FortiGate必须有一个公共IP地址和一个主机名FQDN,可以解析为相同的公共IP地址。
● ACME可以访问的面向公共的接口必须没有配置转发端口80 (HTTP)或443 (HTTPS)的VIP。接口必须侦听ACME更新请求。
● SAN字段自动用FortiGate FQDN进行归档。它不能被编辑,也不允许有多个SAN或通配符。
FortiGate在验证证书时,会检查导入到FortiGate的CRL中是否列出证书序列号。
单击 导入>CRL,可以在证书页面中导入CRL。在导入CRL对话框中,可以选择以下四个导入选项之一:HTTP、LDAP、SCEP和File Based。前三个选项指向外部存储库,并要求你连接到存储库,以便将CRL上传到FortiGate。最后一个选项,基于文件,要求你在将CRL上传到FortiGate之前,先将CRL文件存储在本地。
在CRL过期前,FortiGate将根据配置中指定的协议自动检索最新的迭代值。
当你备份FortiGate配置时,密钥和证书也会备份。
FortiGate还提供了将数字证书存储为PKCS#12文件的选项,该文件包括私钥、公钥以及证书。你可以将PKCS#12文件恢复到任何型号或固件版本的FortiGate设备,或恢复到非FortiGate设备。
备份和恢复操作只能在CLI下进行,需要使用TFTP服务器。
CA和本地证书可以全局配置,也可以针对VDOM配置。如果你将证书上传到VDOM,则只能在VDOM内部访问该证书。如果你全局上传证书,所有VDOM和全局都可以访问该证书。
全局证书和基于VDOM的证书配置包括查看证书详细信息、下载、删除和导入证书的功能。
请注意,一些FortiGate证书的名称中有特定的签名算法和密钥长度,如椭圆曲线数字Siąnature算法256 (ECDSA256)和RSA2048。策略和技术需求可能决定你使用哪些证书。
如果使用的是私有CA颁发的SSL证书,则必须将该CA证书安装在受信任CA列表中。如果此操作失败,当你访问HTTPS网站时,浏览器将会显示一个警告信息。加密的通信也可能失败,原因很简单,因为颁发和签署证书的CA不受信任。
从FortiGate下载SSL证书后,你可以将其安装在任何web浏览器或操作系统上。并非所有浏览器都使用相同的证书存储库。例如,Firefox使用自己的存储库,而Internet Explorer和Chrome在系统范围的存储库中存储证书。为了避免证书警告,你需要将SSL证书安装为受信任的根CA。
在安装证书时,确保将其保存到根权威机构的证书存储区。
答案:B
答案:A
恭喜你!你已经学完了这一课。现在,你将回顾你在这一课中涉及的目标。
上图展示了你在这节课中涉及的目标。
通过掌握本课所涵盖的目标,你了解了FortiGate如何使用证书,以及如何在你的网络中管理和使用证书。
以上是关于教程篇(7.0) 07. FortiGate安全 & 证书的操作 ❀ Fortinet 网络安全专家 NSE 4的主要内容,如果未能解决你的问题,请参考以下文章
教程篇(7.0) 01. FortiGate安全&简介及初始配置 ❀ Fortinet 网络安全专家 NSE 4
教程篇(7.0) 12. FortiGate安全 & SSL安全隧道 ❀ Fortinet 网络安全专家 NSE 4
教程篇(7.0) 09. FortiGate安全 & 应用控制 ❀ Fortinet 网络安全专家 NSE 4
教程篇(7.0) 10. FortiGate安全 & 反病毒 ❀ Fortinet 网络安全专家 NSE 4