EasyNVR视频平台支持开启https,https和http的区别之前介绍过,如果不知道如何开启,可以参考本文:EasyNVR硬件设备如何开启使用Https。在某个客户现场,客户开启了 https 接口访问程序,然后使用安全厂商提供的漏洞扫描工具,扫描对应的端口,出现了以下问题:
可以看到EasyNVR的安全扫描出现了3DES 漏洞。
https 由 http 协议和 tls 协议组成,其中 tls 在数据传递后,会使用对称密钥算法进行加密传输数据。使用的对称密钥算法,随着时间的过度,部分密钥算法被认证为非安全,可以通过某种方式破解获取到加密前数据。3DES 算法在 2016 年被证明可以通过某种方式破解,但是 EasyNVR 使用 Go 语言设计,相对于安全厂商的更新速度没那么快速,因此出现该问题。
我们的解决方案是在绑定服务的使用,使用自定义套件,参考代码如下:
tlsCipherSuites := make([]uint16, 0)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_RSA_WITH_AES_128_CBC_SHA)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_RSA_WITH_AES_256_CBC_SHA)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_RSA_WITH_AES_128_GCM_SHA256)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_RSA_WITH_AES_256_GCM_SHA384)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_AES_128_GCM_SHA256)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_AES_256_GCM_SHA384)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256)
tlsCipherSuites = append(tlsCipherSuites, tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256)
p.httpsServer = &http.Server{
Addr: fmt.Sprintf(":%d", p.httpsPort),
Handler: routers.Router,
ReadHeaderTimeout: 5 * time.Second,
TLSConfig: &tls.Config{
GetCertificate: cm.GetCertificate,
CipherSuites: tlsCipherSuites,
},
}
之后漏洞就被修复了,目前EasyNVR还未探测到其他漏洞,在现有的项目应用当中,EasyNVR也表现除了高度的安全性和稳定性。因此如果大家想要了解更多,可以直接下载,部署在自己的项目中进行测试,欢迎大家了解。