欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Http与Https

程序员文章站 2022-05-07 08:46:33
...

两个协议的默认端口

在申请的域名处一般要配制域名对应的ip地址。那么,在访问这个域名的时候,如果是 http://域名,就默认解析到 http://ip:80 https://域名 是不是就默认解析到 https://ip:443

证书问题

商业证书是收费的,但是实际上商业证书也只是给一个证书回来。做商业证书的客服说 他们给的证书就不会被浏览器拦截了,这是怎么个实现机制? 另外,就算商业证书,具体的加密传输过程也是自己apache跟openssl实现的吧?

客户证书

另外,这个客户证书是什么时候被安装的呀?对这些有点迷糊,有精通此项的能不能给讲讲。

回复内容:

两个协议的默认端口

在申请的域名处一般要配制域名对应的ip地址。那么,在访问这个域名的时候,如果是 http://域名,就默认解析到 http://ip:80 https://域名 是不是就默认解析到 https://ip:443

证书问题

商业证书是收费的,但是实际上商业证书也只是给一个证书回来。做商业证书的客服说 他们给的证书就不会被浏览器拦截了,这是怎么个实现机制? 另外,就算商业证书,具体的加密传输过程也是自己apache跟openssl实现的吧?

客户证书

另外,这个客户证书是什么时候被安装的呀?对这些有点迷糊,有精通此项的能不能给讲讲。

  1. (HTTP(S) 协议使用的)域名解析是把域名解析到 IP 地址。与端口无关。默认端口是浏览器的行为。
  2. 浏览器信任的证书是经过它所拥有的根证书签名的。不被浏览器/操作系统信任的 CA 机构,或者自己签名的证书,没有浏览器信任的签名。如果你给浏览器/操作系统导入这样的 CA 机构的根证书,那么浏览器也会信任由它们签名的(任何有效)证书。
  3. 客户证书是客户端(浏览器)出示的证书。在服务器要求验证时使用,以验证客户方的身份。

两个协议的默认端口 http协议默认端口是80,https协议默认端口是443,当然你可以在Web服务器或者正向/反向代理服务器的配置中进行修改,在访问时加上:端口。浏览器使用https协议的时候会使用TLS(传输层安全)对传输内容进行加密,只有通过SSL证书的私钥才能进行解密。

证书问题

因为系统内附带了由Verisign、GlobalSign、Thawte等证书颁发公司的可信根证书,域名的所有人要通过一些验证来购买证书,并获得用户的认可和一些服务。 Web服务器证书大致可以分为Domain Validation(域名验证)、Organization Validation(机构验证)、Extended Validation(增强型验证)三种。 比如网银、电子支付等重要领域,一般采用Extended Validation(增强型验证),就是通常说的绿色地址栏,用户可以很明确的看到自己说访问的网站是由那个证书颁发商验证的哪个公司的服务。 如PayPal:https://www.paypal.com/、美国银行:https://www.bankofamerica.com/ Organization Validation(机构验证)一般是公司或者一些组织使用。 如QQ邮箱:https://mail.qq.com/、哈佛大学:https://implicit.harvard.edu/,在证书的使用者那里写明了公司、组织。 Domain Validation(域名验证)由于验证方法简单,只需要验证WHOIS邮箱,一般是个人或者一些中小企业使用。

客户端证书 一些软件在安装的过程中也会将自己颁发的证书安装到系统中,如SSL VPN客户端程序、网银插件、一些OA系统等。全球可信根证书是在操作系统安装的时候或者打补丁安装到系统中的,比如以前的DigiNotar被入侵事件,操作系统提供商会将黑客伪造的DigiNotar颁发的证书进行吊销,从而黑客将无法使用那些被吊销的证书。

之前做登录的时候涉及过https,这真是一个麻烦的东西,配置不难,但是弄懂原理就不容易了,看过很多资料,太深入的看不懂,说的简单的又不能完全解释自己的疑问,纠结了好一会,于是总结了一篇博客,算是阶段性的理解:http://diaocow.iteye.com/blog/1743273(仅供楼主参考)

现在回答楼主提的几个问题:

  1. 80默认作为http服务端口,443默认作为https服务端口,这是一种约定;当你不写明端口时,浏览器会根据你使用的协议,使用协议默认端口(但是你完全可以监听在其他端口(譬如:8443)来提供https服务,这时候用户必须以https:8443//...的形式访问)

  2. 安全问题永远需要一个信任基点(不然就变成鸡生蛋的问题,永无止境),https传输过程的信任基点就是证书,只有权威机构的颁发的证书才能够被浏览器信任(譬如:verisign,当然你可以手动添加信任一些证书);另外,具体的加解密过程是在ssl层实现的(ssl层位于http层之下)

  3. 客户端证书我只在公司内网中用过,像我们一般访问的网站都只涉及服务器证书(譬如访问:https://accounts.google.com/),并且客户端(浏览器)安装服务器证书都是在正式会话开始前进行的,这一过程你完全感知不到(有点类似在传输TCP数据前,需要先进行TCP 3次握手,貌似叫SSL握手?)

说了这么多,貌似说的也不是很清楚,这玩意太复杂,楼主见谅