关于浏览器和服务器之间证书信任的问题

证书分为两种:一种是证书,一种是根证书;证书是指颁发者信任被颁发者,根证书是被颁发者信任颁发者。

让我们举例来更详细的分析这两种证书的区别:

  1. 如颁发证书的机构博客可以颁发这两种证书。
  2. 当博客把证书颁给小李,说明小李是被博客所信任的;
  3. 当博客把根证书颁给大李,说明大李是信任博客机构的;

4. 那么小李和大李彼此信任;


再转回到浏览器与服务器对证书的解释:

如,你用chrome的时候,经常会看到浏览器提示“此站点是否信任”,具体是否信任由用户来决定,可以提醒你如果是刻意盗用你账户用户密码的黑客网站的攻击。


那么我们搭建的服务器,我们知道可以信任,但是浏览器不知道啊,所以在每次访问我们的服务器的时候都会弹出这样的提示对话框,会觉得没有必要,那么就该前面说的证书上场了;

1. 我们可以创建两个证书,一个证书让服务器进行安装;

2. 一个根证书让浏览器进行安装;

3. 这样浏览器在访问服务器的时候,服务器首先会返回它的证书,浏览器会用自己的证书和服务器返回的证书进行匹配,如果是可信任的证书,那么就会直接通过,不会出现“此站点是否信任”的阻止对话框;


4. 但是,如果你的浏览器安装了证书,可以你访问服务器的时候用的是ip地址,但是服务器返回的证书用的是域名,浏览器会进行提示,你可以继续进行访问;所以,最好访问的host名字和证书的名字是一样的;


如果你要用websocket,由于它是用wws协议的,所以,必须要安装证书,否则在javascript调用web socket,会直接拒绝。只有你在浏览器显示的信任相应的站点,web socket才可以使用。


至于具体怎么做证书,有专门的工具。