13-SSL配置
本章节下载: 13-SSL配置 (258.15 KB)
SSL(Secure Sockets Layer,安全套接字层)是一个安全协议,为基于TCP的应用层协议(如HTTP)提供安全连接。SSL协议广泛应用于电子商务、网上银行等领域,为应用层数据的传输提供安全性保证。
SSL提供的安全连接可以实现如下功能:
· 保证数据传输的机密性:利用对称密钥算法对传输的数据进行加密,并利用密钥交换算法,如RSA(Rivest Shamir and Adleman),加密传输对称密钥算法中使用的密钥。对称密钥算法、非对称密钥算法RSA的详细介绍请参见“安全配置指导”中的“公钥管理”。
· 验证数据源的身份:基于数字证书利用数字签名方法对SSL服务器和SSL客户端进行身份验证。SSL服务器和SSL客户端通过PKI(Public Key Infrastructure,公钥基础设施)提供的机制获取数字证书。PKI及数字证书的详细介绍请参见“安全配置指导”中的“PKI”。
· 保证数据的完整性:消息传输过程中使用MAC(Message Authentication Code,消息验证码)来检验消息的完整性。MAC算法在密钥的参与下,将任意长度的原始数据转换为固定长度的数据,原始数据的任何变化都会导致计算出的固定长度数据发生变化。如图1-1所示,利用MAC算法验证消息完整性的过程为:
a. 发送者在密钥的参与下,利用MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。
b. 接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。
c. 如果二者相同,则接收者认为报文没有被篡改;否则,认为报文在传输过程中被篡改,接收者将丢弃该报文。
图1-1 MAC算法示意图
如图1-2所示,SSL协议可以分为两层:下层为SSL记录协议(SSL Record Protocol);上层为SSL握手协议(SSL Handshake Protocol)、SSL密码变化协议(SSL Change Cipher Spec Protocol)和SSL告警协议(SSL Alert Protocol)。
图1-2 SSL协议栈
· SSL记录协议:主要负责对上层的数据进行分块、计算并添加MAC、加密,最后把加密后的记录块传输给对方。
· SSL握手协议:用来协商通信过程中使用的加密套件(数据加密算法、密钥交换算法和MAC算法等),实现服务器和客户端的身份验证,并在服务器和客户端之间安全地交换密钥。客户端和服务器通过握手协议建立会话。一个会话包含一组参数,主要有会话ID、对方的数字证书、加密套件及主密钥。
· SSL密码变化协议:客户端和服务器端通过密码变化协议通知对端,随后的报文都将使用新协商的加密套件和密钥进行保护和传输。
· SSL告警协议:用来向对端报告告警信息,以便对端进行相应的处理。告警消息中包含告警的严重级别和描述。
目前,SSL协议版本主要有SSL2.0、SSL3.0、TLS1.0(TLS1.0对应SSL协议的版本号为3.1)、TLS1.1、TLS1.2和TLS1.3。
由于SSL 3.0版本存在一些已知的安全漏洞,当设备对系统安全性有较高要求时,可以在SSL服务器上通过命令行关闭SSL 3.0版本。
SM1算法仅在安装了国密加密卡的设备上支持。
非缺省vSystem不支持本特性部分功能,包括配置SSL服务器与客户端进行算法协商时按照服务器端加密套件顺序进行匹配。有关vSystem的详细介绍请参见“虚拟化技术配置指导”中的“vSystem”。
设备作为SSL服务器时,可以与SSL3.0、TLS1.0、TLS1.1、TLS1.2和TLS1.3版本的SSL客户端通信,还可以识别同时兼容SSL2.0/SSL3.0/TLS1.0/TLS1.1/TLS1.2/TLS1.3版本的SSL客户端发送的报文,并通知该客户端采用SSL3.0/TLS1.0/TLS1.1/TLS1.2/TLS1.3版本与SSL服务器通信。
SSL服务器端配置任务如下:
· (可选)禁止SSL服务器使用指定的SSL版本进行SSL协商
· (可选)配置SSL服务器端关闭SSL重协商
SSL客户端配置任务如下:
SSL服务器端策略是设备作为服务器时使用的SSL参数。只有与HTTPS(Hypertext Transfer Protocol Secure,超文本传输协议的安全版本)等应用关联后,SSL服务器端策略才能生效。
在配置SSL VPN服务、负载均衡以及代理策略等业务时,存在需要在服务器端部署两个证书的情况。此时可以使用pki-domain命令一次指定两个PKI域,使SSL服务器端策略能够同时关联两个数字证书。
(1) 进入系统视图。
system-view
(2) 创建SSL服务器端策略,并进入SSL服务器端策略视图。
ssl server-policy policy-name
(3) 配置SSL服务器端策略所使用的PKI域。
pki-domain domain-name&<1-2>
缺省情况下,未指定SSL服务器端策略所使用的PKI域。
如果客户端需要对服务器端进行基于数字证书的身份验证,则必须在SSL服务器端指定PKI域,并在该PKI域内为SSL服务器端申请本地数字证书。PKI域的创建及配置方法,请参见“安全配置指导”中的“PKI”。
(4) 配置SSL服务器端策略支持的加密套件。
ciphersuite { dhe_rsa_aes_128_cbc_sha | dhe_rsa_aes_128_cbc_sha256 | dhe_rsa_aes_256_cbc_sha | dhe_rsa_aes_256_cbc_sha256 | ecc_sm2_sm1_sm3 | ecc_sm2_sm4_sm3 | ecdhe_ecdsa_aes_128_cbc_sha256 | ecdhe_ecdsa_aes_128_gcm_sha256 | ecdhe_ecdsa_aes_256_cbc_sha384 | ecdhe_ecdsa_aes_256_gcm_sha384 | ecdhe_rsa_aes_128_cbc_sha256 | ecdhe_rsa_aes_128_gcm_sha256 | ecdhe_rsa_aes_256_cbc_sha384 | ecdhe_rsa_aes_256_gcm_sha384 | ecdhe_sm2_sm1_sm3 | ecdhe_sm2_sm4_sm3 | exp_rsa_des_cbc_sha | rsa_3des_ede_cbc_sha | rsa_aes_128_cbc_sha | rsa_aes_128_cbc_sha256 | rsa_aes_128_gcm_sha256 | rsa_aes_256_cbc_sha | rsa_aes_256_cbc_sha256 | rsa_aes_256_gcm_sha384 | rsa_des_cbc_sha | rsa_sm1_sha | rsa_sm1_sm3 | rsa_sm4_sha | rsa_sm4_sm3 | tls_aes_128_ccm_sha256 | tls_aes_128_ccm_8_sha256 | tls_aes_128_gcm_sha256 | tls_aes_256_gcm_sha384 | tls_chacha20_poly1305_sha256 } *
缺省情况下,SSL服务器端策略支持的加密套件为ECC_SM2_SM1_SM3、ECC_SM2_SM4_SM3、ECDHE_SM2_SM1_SM3、ECDHE_SM2_SM4_SM3、RSA_SM1_SHA、RSA_SM1_SM3、RSA_SM4_SHA、RSA_SM4_SM3、RSA_AES_128_CBC_SHA、RSA_AES_256_CBC_SHA、DHE_RSA_AES_128_CBC_SHA、DHE_RSA_AES_256_CBC_SHA、RSA_AES_128_CBC_SHA256、RSA_AES_256_CBC_SHA256、DHE_RSA_AES_128_CBC_SHA256、DHE_RSA_AES_256_CBC_SHA256、ECDHE_RSA_AES_128_CBC_SHA256、ECDHE_RSA_AES_256_CBC_SHA384、ECDHE_RSA_AES_128_GCM_SHA256、ECDHE_RSA_AES_256_GCM_SHA384、ECDHE_ECDSA_AES_128_CBC_SHA256、ECDHE_ECDSA_AES_256_CBC_SHA384、ECDHE_ECDSA_AES_128_GCM_SHA256、ECDHE_ECDSA_AES_256_GCM_SHA384、RSA_AES_128_GCM_SHA256、RSA_AES_256_GCM_SHA384、TLS_AES_128_GCM_SHA256、TLS_AES_256_GCM_SHA384、TLS_CHACHA20_POLY1305_SHA256、TLS_AES_128_CCM_SHA256、TLS_AES_128_CCM_8_SHA256。
(5) (可选)配置SSL服务器上缓存的最大会话数目和SSL会话缓存的超时时间。
session { cachesize size | timeout time } *
缺省情况下,SSL服务器上缓存的最大会话数目为500个,SSL会话缓存的超时时间为3600秒。
(6) 配置SSL服务器端对SSL客户端的身份验证方案。
client-verify { enable | optional }
缺省情况下,SSL服务器端不要求对SSL客户端进行基于数字证书的身份验证。
SSL服务器端在基于数字证书对SSL客户端进行身份验证时,除了对SSL客户端发送的证书链进行验证,还要检查证书链中的除根CA证书外的每个证书是否均未被吊销。
(7) (可选)配置SSL协商时SSL服务器端发送完整的证书链。
certificate-chain-sending enable
缺省情况下,SSL协商时,SSL服务器端只发送本地证书,不发送证书链。
SSL客户端策略是客户端连接SSL服务器时使用的参数。只有与应用层协议,如DDNS(Dynamic Domain Name System,动态域名系统),关联后,SSL客户端策略才能生效。有关DDNS的详细介绍请参见“三层技术-IP业务配置指导”中的“域名解析”。
对安全性要求较高的环境下,建议不要为SSL 客户端指定SSL3.0 版本。
(1) 进入系统视图。
system-view
(2) 创建SSL客户端策略,并进入SSL客户端策略视图。
ssl client-policy policy-name
(3) 配置SSL客户端策略所使用的PKI域。
pki-domain domain-name
缺省情况下,未指定SSL客户端策略所使用的PKI域。
如果服务器端需要对客户端进行基于数字证书的身份验证,则必须在SSL客户端指定PKI域,并在该PKI域内为SSL客户端申请本地数字证书。PKI域的创建及配置方法,请参见“安全配置指导”中的“PKI”。
(4) 配置SSL客户端策略支持的加密套件。
prefer-cipher { dhe_rsa_aes_128_cbc_sha | dhe_rsa_aes_128_cbc_sha256 | dhe_rsa_aes_256_cbc_sha | dhe_rsa_aes_256_cbc_sha256 | ecc_sm2_sm1_sm3 | ecc_sm2_sm4_sm3 | ecdhe_ecdsa_aes_128_cbc_sha256 | ecdhe_ecdsa_aes_128_gcm_sha256 | ecdhe_ecdsa_aes_256_cbc_sha384 | ecdhe_ecdsa_aes_256_gcm_sha384 | ecdhe_rsa_aes_128_cbc_sha256 | ecdhe_rsa_aes_128_gcm_sha256 | ecdhe_rsa_aes_256_cbc_sha384 | ecdhe_rsa_aes_256_gcm_sha384 | ecdhe_sm2_sm1_sm3 | ecdhe_sm2_sm4_sm3 | exp_rsa_des_cbc_sha | rsa_3des_ede_cbc_sha | rsa_aes_128_cbc_sha | rsa_aes_128_cbc_sha256 | rsa_aes_128_gcm_sha256 | rsa_aes_256_cbc_sha | rsa_aes_256_cbc_sha256 | rsa_aes_256_gcm_sha384 | rsa_des_cbc_sha | rsa_sm1_sha | rsa_sm1_sm3 | rsa_sm4_sha | rsa_sm4_sm3 | tls_aes_128_ccm_sha256 | tls_aes_128_ccm_8_sha256 | tls_aes_128_gcm_sha256 | tls_aes_256_gcm_sha384 | tls_chacha20_poly1305_sha256 } *
缺省情况下,SSL客户端策略支持的加密套件为DHE_RSA_AES_256_CBC_SHA、RSA_AES_256_CBC_SHA、DHE_RSA_AES_128_CBC_SHA、RSA_AES_128_CBC_SHA。
(5) 配置SSL客户端策略使用的SSL协议版本。
version { gm-tls1.1 | ssl3.0 | tls1.0 | tls1.1 | tls1.2 | tls1.3 }
缺省情况下,SSL客户端策略使用的SSL协议版本为TLS 1.2。
(6) 配置客户端需要对服务器端进行基于数字证书的身份验证。
server-verify enable
缺省情况下,SSL客户端需要对SSL服务器端进行基于数字证书的身份验证。
当设备对系统安全性有较高要求时可以通过配置本功能关闭对应版本号的SSL协商。
禁止SSL服务器使用指定的SSL版本进行SSL协商支持在系统视图下配置或在SSL服务器端策略视图内配置两种方式:系统视图的配置对所有SSL服务器端策略都有效,而SSL服务器端策略内的配置只对当前SSL服务器端策略有效。对于一个SSL服务器端策略来说,优先采用该SSL服务器端策略内的配置,只有该SSL服务器端策略内未进行配置时,才采用全局的配置。
如果通过本功能关闭了指定版本的SSL协商功能,并不会同时关闭比其更低版本的SSL协商功能,例如,ssl version tls1.1 disable命令仅表示关闭了TLS1.1版本的SSL协商功能,不会同时关闭TLS1.0版本。
(1) 进入系统视图。
system-view
(2) 禁止SSL服务器使用指定的SSL版本进行SSL协商。
ssl version { gm-tls1.1 | ssl3.0 | tls1.0 | tls1.1 | tls1.2 | tls1.3 } * disable
缺省情况下,允许SSL服务器使用TLS1.1、TLS1.2和TLS1.3版本的协商功能。
(3) 进入SSL服务器端策略视图。
ssl server-policy policy-name
(4) 禁止SSL服务器使用指定的SSL版本进行SSL协商。
version { gm-tls1.1 | ssl3.0 | tls1.0 | tls1.1 | tls1.2 | tls1.3 } * disable
缺省情况下,SSL服务器采用的SSL协商版本与全局采用的SSL协商版本一致。
关闭SSL重协商是指,不允许复用已有的SSL会话进行SSL快速协商,每次SSL协商必须进行完整的SSL握手过程。关闭SSL重协商会导致系统付出更多的计算开销,但可以避免潜在的风险,安全性更高。
通常情况下,不建议关闭SSL重协商。本命令仅用于用户明确要求关闭重协商的场景。
(1) 进入系统视图。
system-view
(2) 配置SSL服务器端关闭SSL重协商。
ssl renegotiation disable
缺省情况下,SSL重协商功能处于关闭状态。
SSL服务器端和SSL客户端在进行SSL协商时,会在协商过程中确定两端报文交互时使用的密钥交换算法、数据加密算法及MAC算法。缺省情况下,SSL服务器端在收到包含客户端加密套件的SSL协商报文时,会以报文中所带的客户端的加密套件作为匹配条件,在本服务器端配置的加密套件中查找符合条件的套件,即按照优先级从高到低的顺序,依次选取SSL客户端的加密套件,然后从SSL服务器端查找与之匹配的加密套件,直到匹配成功。如果没有任何一个加密套件匹配成功,则协商失败。
开启本功能后,SSL服务器端在收到包含客户端加密套件的SSL协商报文时,会按照服务器端策略配置的加密套件的顺序来进行匹配,即按照优先级从高到低的顺序,依次选取SSL服务器端的加密套件,然后从SSL客户端查找与之匹配的加密套件,直到匹配成功。如果没有任何一个加密套件匹配成功,则协商失败。
(1) 进入系统视图。
system-view
(2) 进入SSL服务器端策略视图。
ssl server-policy policy-name
(3) 开启SSL服务器策略与客户端进行协商时按照服务器端配置的加密套件顺序进行匹配的功能。
ciphersuite server-preferred enable
缺省情况下,SSL服务器与客户端进行算法协商时按照客户端支持的加密套件的顺序进行匹配。
在完成上述配置后,在任意视图下执行display命令可以显示配置后SSL的运行情况,通过查看显示信息验证配置的效果。
表1-1 SSL显示和维护
操作 |
命令 |
显示SSL客户端策略的信息 |
display ssl client-policy [ policy-name ] |
显示SSL服务器端策略的信息 |
display ssl server-policy [ policy-name ] |
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!