- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
SSL,https(HTTP over SSL), X.509, SSL 证书 ,证书申请 /导入/签发, 等名词,想必有一定工作经验的小伙伴,一定都会略有耳闻,或者至少也听神边大神念叨过。虽然司空见惯,但是能够比较系统理清其中关系,能够从整体到局部深入浅出讲解下的人,估计至少也是十里挑一。反正没人给我讲,我只好自己梳理下。(注意本文不涉及密码学原理以及SSL协议具体细节,但具备密码学基础,会有助于愉快阅读) 。
起因是公司最近在搞安全加固,想起了历史原因用了很久的FTP服务,这东西众所周知是明文的,裸奔的用户名密码,被监听是分分钟的事儿。于是寻思加个密吧,搜了下发现有个FTPS( FTP over SSL),很容易联想到一个更常用的https(http over。SSL), 展开一搜还有各种 XXXX - over - SSL。 如SMTPS,POP3S, LDAPS等,于是问题来了,SSL到底是个啥东西,为啥可以被各种over.
我们从大家比较熟悉的http协议角度说起,HTTP这个协议(就是header,body,post get这些)是在大概1991年附近发布,其设计初衷就是用来传输显示网页内容。这协议是明文的,明文的含义——就是你阅读的网页内容以及提交的,经过的每一个网络节点都可以知道传输的具体是啥内容。我猜早期的网页既不动态,也不私密,也没有个人相册:-),所以为了简单,http协议本身并没有考虑加密机制.
后来,WWW就火了,网络时代正式来临,页面功能越来越强大,支持动态化,可以为不同用户提供不同内容,已经可以发个悄悄话,照片啥的了。这时自然就产生了加密需求。于是1994年有一个叫网景(Netscape)的公司,做浏览器的,开始琢磨怎么加密http协议传输的网页内容。琢磨着,琢磨着,就琢磨出了SSL协议,后来历经完善,变成了标准,改了名字 目前叫TLS,至今广泛使用.
网景已乘黄鹤去,但对互联网的发展和安全起了重要贡献.
SSL协议的制定目标是解决http传输的安全问题,目前仍在广泛应用,可见网景制定的这个协议还是比较科学的。所谓天下文章一大抄,SSL也是借鉴了前人基础,融会贯通而成.
大约1976年,大洋彼岸的大壮,提出了非对称加密,数字证书的概念。1977年,同样远在彼岸的小明,发明了实用的非对称加密RSA算法,标志着公开密钥加密的诞生(就是现在常提的公钥,私钥,非对称啥的).
有了天才的大壮和小明,数字证书以及非对称加密的相关理论已经完备,只待应用。于是在一些安全需求较高的专用内部网络(军事,金融,企业)中,一些系统开始根据大壮和小明提供的思路,实现基于数字证书和非对称加密算法的身份认证与通信加密功能.
凡事都是先发明,再应用,再有标准(参照电池,先发明,再使用,再规定5号 ,7号电池啥规格)。基于数字证书和RSA算法的加密机制,因为缺乏标准,导致出现各系统实现间的不兼容,证书互不认可等问题.
于是1988年诞生了一个叫做X.509的标准,定义了数字证书的字段内容,比如应该有持有者的名称、公钥、有效期、序列号以及证书颁发机构(CA)的签名等。这个标准的产生,也推动了CA的标准化和普及.
X.509 标准仅定义了证书的字段内容,而另外的一些文件格式标准,则具体定义了证书文件的存储格式。如.pem .der .p12 .p7b等,这些就是我们在系统中可见的证书和私钥的存在形式.
基于以上,网景公司定义了在互联网中,客户端和服务器进行网络通信时,类似 发送ABC 表示 请求证书,发DEF ,表示协商双方都支持的密码套件的,发XYZ,表示XXX。 这样一个网络协议,将其命名为SSL/TLS.
SSL(Secure Sockets Layer )为啥可以被各种over,Layer 顾名思义,SSL协议的作用主要是加解密,与具体传输数据无关,应用把数据扔给 SSL层后,细节就不太需要关心了。他自然会帮你加密好,传送到目的地,解密好,再送达应用。所以所有的应用层协议,都是可以over SSL的。如http,FTP等.
通信的过程,大致都是先建立SSL通道,证书验证好,对称密钥交换好。这个建立SSL通道的过程,概念上称为——SSL协商握手。握手完成后,后续的通信内容就都是加密的了。你应用层需要传个 GET ,POST,Header,body 之类,还是按你应用层的协议来,该咋咋滴。所以你应用层是http 那就是 http over SSL. 如果是 ftp 就是FTP over ssl.
举一反三: 如果你自己写了个聊天客户端和服务器,是否可以用你的自定义聊天协议来 LAOWANG over SSL 呢? 。
如何实践应用 XXX over SSL。 。
1. 向CA申请服务器端ssl证书(x.509证书)——通过上面我门可以知道,x.509证书适用于,各种的 https ftps pop3s laowangs . 以及其他依赖于x509证书的领域,如电子签章。注意,我门有时候会说 https 证书,ssl证书,ftps证书,本质都是x509证书,习惯称为ssl证书,不要混淆.
2. 在服务器端将申请到的证书及对应私钥放置好,并配置启动SSL支持——这是ssl协议通信的基础。证书虽然都是x.509证书,但具体的证书文件可能需要格式转换,nginx倾向于使用PEM文件格式的证书(.pem)和私钥.
3. 申请客户端证书(可选)——我也是刚知道不久,原来ssl协议是支持双向认证的。Web浏览器模式使用的是单向认证,但在一些安全需求较高的应用,可能会需要进行双向认证,服务器可以验证客户端的证书是否有效,并且根据证书信息如持有人,决定是否可以进行连接.
4.客户端对应使用支持SSL的客户端进行通信。 。
。
ok,写到这里拜了个拜~ *关于密码学基础,在我的其他网络安全相关文章中,有简要介绍,欢迎参考 。
最后此篇关于SSL/TLS深入浅出的文章就讲到这里了,如果你想了解更多关于SSL/TLS深入浅出的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在 Cloudflare 的域名服务器上有一个域名 example.com。该域指向我的专用服务器的 IP 地址,该服务器运行 CentOS/WHM/cPanel。该站点可访问 - 一切都很好。 我
我正在努力将 SSL 支持添加到我们现有的应用程序中,并已开始考虑向后兼容性。 与我读过的其他帖子不同的一个特殊情况是服务器可能不一定使用 SSL 代码更新。所以我将有一个 SSL 客户端连接到一个对
我有几个 https://*.rest-service.mydomain.com。随着服务数量的增加,我觉得管理 SSL 证书的成本很高。我为 *.mydomain.com 购买了通配符证书。 新添加
我的客户要求我在他的网站上做反向 ssl。但我是这个学期的新手。谁能帮我解决这个问题。 请描述或引用如何做。 最佳答案 查看 this wiki article . In the case of se
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 去年关闭。 Improve this
我连接到我的网络服务器上的存储库,但是当我尝试推送我的更改时,它显示:“错误 403:需要 ssl”,但在我的存储库设置中我已经激活了 ssl 选项。 有什么建议吗? 最佳答案 当您连接到存储库时,您
抱歉,如果这听起来像是转储问题,我已经阅读了很多关于 SSL 握手和 SSL 工作原理的文章和文档。我对一件事感到困惑,如果有人能澄清我就太好了。 我知道私钥要保密。但是我已经看到通过在请求中指定私钥
随着物联网越来越主流,越来越需要从硬件发送http请求。 一个主要问题是硬件微 Controller 无法发送 ssl 请求,但大多数服务器/网站/服务都在使用 ssl。 所以,问题是,有没有桥(一个
我有一个 ssl 页面,它还从非 ssl 站点下载头像。我能做些什么来隔离该内容,以便浏览器不会警告用户混合内容吗? 最佳答案 只是一个想法 - 或者: 尝试在头像网站上使用 ssl url,如有必要
我在 Digital Ocean droplet(使用 nginx)上设置了两个域。我已经在其中一个(domain1)中安装了一个 SSL 证书,并且那个证书一切正常。第二个域 (domain2) 不
我收到这个错误: Error frontend: 502 Bad gateway 99.110.244:443 2017/09/28 13:03:51 [error] 34080#34080: *10
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 6 年前。 Improve
我遇到了一个问题,我正在构建一个 nginx 反向代理以定向到不同 url 路径上的多个微服务。 该系统完全基于 docker,因此开发和生产使用相同的环境。这在安装 SSL 时给我带来了问题,因为
所以我知道要求 SSL 证书和接受之间的根本区别,一个意味着您必须拥有 SSL 证书,另一个意味着您不需要。 在某个网页的 IIS 管理器中,我有以下设置: 我遇到的问题是,当我设置需要 SSL 证书
我今天才发现 .app 域名需要 SSL 证书。我购买它是为了将 DNS 重定向到已经设置了 SSL 证书的站点,所以我的问题是是否可以设置它? 我正在使用 Google Domains,在将合成临时
堆栈 : react ,NGINX 1.14.0,GUnicorn,Django 2.2.8,Python 3.6.9 错误 : 在浏览器:当 React 调用 Django API(当然是在请求头中
假设我在计算机上编辑主机文件以使 google.com 指向我的 VPS 服务器 IP,并且服务器具有通过 Apache 或 Nginx 配置的 google.com 的虚拟主机/服务器 block
我有一个场景,我正在处理用于 URL 路由的 IIS 网站配置。我已添加网站并在服务器上导入所需的证书。 我的情况是(我有多个网站 URL 和两个 SSL 证书 - 如下所示): qatest1.ab
我知道服务器发送的证书无法伪造(仍然存在 MD5 冲突,但成本高昂),但是伪造客户端又如何呢?在中间人攻击中:我们不能告诉服务器我们是合法客户端并从该服务器获取数据并对其进行操作,然后使用合法客户端公
我已通读相关问题,但无法完全找到我要查找的内容。我设置了一个名为“domain.com”的域,并创建了两个子域“client.domain.com”和“client-intern.domain.com
我是一名优秀的程序员,十分优秀!