HTTPS(Hypertext Transfer Protocol over Secure Socket Layer,基于SSL的HTTP协议)使用了HTTP协议,但HTTPS使用不同于HTTP协议的默认端口及一个加密、身份验证层(HTTP与TCP之间)。
HTTPS = HTTP + SSL HTTP:80端口、HTTPS:443端口

1、证书demo

1
2
3
4
5
6
7
8
9
10
11
// CA.crt
-----BEGIN CERTIFICATE-----
MIIDcTCCAlmgAwIBAgIBADANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJDTjER
J3+DBrapKeF3UXBRvGAAeIX62CrBfdB5wKgN7HUiRKIu6VG6x+QZGEwQAzKQNvbe
K3/uYnFmbbtgC3y9XD95TozC0/hS
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDDO1jBfDK2A3YR
xsBmvN8iJDTkVfHNS/RwtRKq0BkyzMyF3mLPEnVf55gyN8Eyt703vf0Ld6cjOXqz
HygaQY7YTaB6a3Ir9czO8CDp
-----END PRIVATE KEY-----

2、加密和认证:加密是将数据资料加密,使得非法用户即使取得加密过的资料,也无法获取正确的资料内容,所以数据加密可以保护数据,防止监听攻击。其重点在于数据的安全性。身份认证是用来判断某个身份的真实性,确认身份后,系统才可以依不同的身份给予不同的权限。其重点在于用户的真实性。两者的侧重点是不同的。
3、每个通信方均需要两个密钥,即公钥和私钥,这两把密钥可以互为加解密。公钥是公开的,不需要保密,而私钥是由个人自己持有,并且必须妥善保管和注意保密。
4、HTTPS通信方式:
a、客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
b、Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
c、客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
d、客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
e、Web服务器利用自己的私钥解密出会话密钥。
f、Web服务器利用会话密钥加密与客户端之间的通信。

5、HTTPS解决的问题:(代码涉及的改动)
a、信任主机
采用https的server必须从CA申请一个用于证明服务器用途类型的证书. 此证书只有用于对应的server的时候,客户端才信任此主机.
b、通讯过程中的数据的泄密和被窜改
  1. 一般意义上的https, 就是server有一个证书.
    a)主要目的是保证server就是他声称的server. 这个跟第一点一样.
    b)服务端和客户端之间的所有通讯,都是加密的.
      i.具体讲,是客户端产生一个对称的密钥,通过server的证书来交换密钥. 一般意义上的握手过程.
      ii.接下来所有的信息往来就都是加密的.第三方即使截获,也没有任何意义.因为他没有密钥.当然窜改也就没有什么意义了.
  2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书.
    a)这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA认证过的身份. 应为个人证书一般来说上别人无法模拟的,所以这样能够更深的确认自己的身份.
    b)目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体.
6、Let’s Encrypt is a free, automated, and open certificate authority brought to you by the non-profit Internet Security Research Group (ISRG).
7、今天,我把CoolShell变成https的安全访问了。我承认这件事有点晚了,因为之前的HTTP的问题也有网友告诉我,被国内的电信运营商在访问我的网站时加入了一些弹窗广告。另外,HTTP的网站在搜索引擎中的rank会更低。现在用HTTP访问CoolShell会被得到一个301的HTTPS的跳转。
8、2015年6月,Let’s Encrypt得到了一个存储在硬件安全模块中的离线的RSA根证书。这个由IdenTrust证书签发机构交叉签名的根证书被用于签署两个证书。其中一个就是用于签发请求的证书,另一个则是保存在本地的证书,这个证书用于在上一个证书出问题时作备份证书之用。因为IdenTrust的CA根证书目前已被预置于主流浏览器中,所以Let’s Encrypt签发的证书可以从项目开始就被识别并接受,甚至当用户的浏览器中没有信任ISRG的根证书时也可以。
9、certbot sends a request to the letsencrypt api/service, and that service uses external DNS to connect back to your server to validate that the request is made by someone controlling the domain’s live website. Your resolv.conf file won’t affect that external validation.
10、
11、
12、启用HTTPS后,你的网页中的所有的使用 http:// 的方式的地方都要改成 https:// 不然你的图片,js, css等非https的连接都会导致浏览器抱怨不安全而被block掉。
13、Caddy 是一款使用 Go 语言的简单易用的单文件网页服务器,原生支持 HTTP/2,自动创建 Let’s Encrypt 证书,支持反代、rewrite、git、REST API、ipfilter、jsonp 等,非常适合各种轻量级的网页应用,或者在本地电脑使用,无论是静态 HTML、图片,或者是 WordPress、Drupal、Markdown,统统都支持。
14、很多网站在启用 HTTPS 之后,都会接到无法访问的用户反馈。最常见的干扰是运营商劫持了域名 DNS 解析,这种劫持服务器一般会将用户请求反代到源网站,再在响应里夹带私货。在 HTTP 时代,这种劫持多半只会造成页面出现广告,网站还能用;而升级到 HTTPS 后,由于身份认证机制的存在,劫持服务器无法成功反代第三方网站,从而导致网站完全不可用。
15、https界面连套http都不行,http里嵌套https是可以的。HTTPS只是代表传输安全,跟网站本身安不安全并没有绝对的关系。
16、为什么办法给cocre.com的证书,但是域名是coolshell.cn也认为是安全的证书?因为证书里面还有一个字段Subject Alternative Name, 这里也可以写多个域名。
17、HTTP1.0最早在网页中使用是在1996年,那个时候只是使用一些较为简单的网页上和网络请求上,而HTTP1.1则在1999年才开始广泛应用于现在的各大浏览器网络请求中,同时HTTP1.1也是当前使用最为广泛的HTTP协议。

18、2012年google如一声惊雷提出了SPDY的方案,大家才开始从正面看待和解决老版本HTTP协议本身的问题,SPDY可以说是综合了HTTPS和HTTP两者优点于一体的传输协议。SPDY位于HTTP之下,TCP和SSL之上,这样可以轻松兼容老版本的HTTP协议(将HTTP1.x的内容封装成一种新的frame格式),同时可以使用已有的SSL功能。

19、HTTP2.0可以说是SPDY的升级版(其实原本也是基于SPDY设计的),但是HTTP2.0跟SPDY仍有不同的地方,主要是以下两点:
HTTP2.0支持明文HTTP传输,而SPDY强制使用HTTPS。
HTTP2.0消息头的压缩算法采用HPACK,而非SPDY采用的DEFLATE。
20、

Comments

去留言
2017-05-23

⬆︎TOP