[每日短篇] 24 - HTTPS 和 SSL 自签名证书的现代知识
今天因故需要测试 SSL 自签名证书,在翻阅资料时发现中文社区介绍 HTTPS 和 SSL 证书的网帖不仅陈旧而且存在不少同源的错误,一旦错误内容到处都是就容易被人当成正确的,所以写一篇帖子更新一下现代知识和更正一些错误观点。现在是 2019-11-06,如果很久以后看到这篇帖子,其中与协议版本、密钥强度相关的内容已经过时了,请注意识别。
关于 HTTPS
- HTTPS 是 HTTP 的扩展,重点解决传输安全的问题,以前是 HTTP over SSL,新的是 HTTP over TLS。需要注意的是 HTTPS 解决的是传输安全,防范窃听、中间人攻击之类的,不解决两端的安全问题,见过一些系统中试图用 HTTPS 解决防客户端破解的问题,实际上是没有任何用处的。
- 一般场景下只有客户端验证服务器的证书,客户端不向服务器提供证书。对安全性要求特别高又高不到需要额外硬件支持的时候,还可以双向验证证书,比如早期的网银、支付宝会需要申请数字证书,自己下载安装之后,登录时需要向服务器提供证书验证客户端身份。
关于 SSL 和 TLS
- SSL 和 TLS 也有多个版本,按照 Google、Mozilla、Cloudflare 等大厂的认识,为现代客户端提供的服务应该使用 TLSv1.3,为远古客户端提供的服务应该向下支持到 TLSv1,为不太古老的客户端提供的服务可以使用 TLSv1.2 TLSv1.3。这跟国内状况差别巨大,国内还在大量使用远古客户端都不应该支持的 SSLv3,要是用到 TLSv1.3 也常会被抱怨版本太高。
- 密钥位数现在推荐 2048 位,1024 位的现代浏览器都会吐槽不安全。
- SSL 证书有几种分类方式,其中一种是根据域名格式分的,*.xxx.yyy.zzz 叫做泛域名证书,不包含 xxx.yyy.zzz 本身。
- SSL 证书支持对 IP 签发,与对域名签发一样,签发之后任意端口可用。
- Cipher 也分强弱,TLSv1.2 里也有弱密钥算法,要用 TLSv1.2 的话 Mozilla 推荐
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
,TLSv1.3 目前看都还行。 - 在 Nginx 里如果只用 TLSv1.3 的话,不要添加
ssl_ciphers
指令,即使指定的是 TLSv1.3 的几个 cipher 也照样报错,不写就没错了。如果是同时用几个版本,也不需要在ssl_ciphers
里面写 TLSv1.3 的 cipher。 - 签发一个证书不会让另外一个证书失效,在一个新服务器上使用证书也不会让老服务器上的同一个证书失效。CA 那里有让证书失效的机制,第一需要人为申请,第二需要客户端知道要到网上查且能到网上查某个证书的有效性,所以这个机制并不总是能够生效。
关于自签名
- 很多网帖里面(包括英文帖子)提到自签名第一步生成私钥时需要输入密码,并且还要第二步去掉密码,实际上罪魁祸首是命令里面的
-des3
,这个参数的作用是用 DES3 加密私钥,那不要密码就怪了。蛮奇怪第一个这么写帖子的人在想啥,后面的人抄的时候在想啥。 - 如果没加
-des3
也要输入密码,试试-nodes
参数,有些系统缺省参数不一样,可能需要显式禁用加密私钥。 - 自签名密钥也记得改 2048,强度跟是否受信是两码事。
- 访问自签名网址时注意看浏览器的风险提示,是这个证书是自签名的还是这个证书跟域名不匹配,提示是自签名的服务器就配置对了,不然就还得继续改。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
等保2.0实施在即,企业如何提升全网安全能力?
【责任编辑: 蓝雨泪 TEL:(010)68476606】
- 下一篇
ApiBoot 2.1.5.RELEASE 发布,接口服务落地解决方案
简介 ApiBoot是接口服务的落地解决方案,提供了一系列开箱即用的组件,通过封装来简化主流第三方框架的集成,从而提高开发者开发效率、学习成本、降低入门门槛,真正的实现开箱即用!!! 对SpringBoot简单了解的开发者就可以编写安全稳定的接口服务,可为移动端、网页端等多个端点提供丰富的安全接口。 ApiBoot依赖于SpringBoot,可以使用ApiBoot构建独立的Java应用程序。 2.1.5.RELEASE更新日志 新增ApiBoot Alibaba Oss西南成都地域 修复ApiBoot Logging与Seata提供的openfeign拦截器冲突问题 修复ApiBoot Enhance Codegen生成实体时,不创建codegen.setting.json文件抛出异常问题 升级SpringBoot为2.1.9.RELEASE 修改ApiBoot DataSource Switch多线程切换为Deque方式 修改框架源码描述 修复ReadMe公众号不显示问题 修复Banner输出版本错误问题 文档 & 源码 ApiBoot 官网文档:http://apiboot...
相关文章
文章评论
共有0条评论来说两句吧...