为什么需要申请SSL证书？
最近在研究把现有网站换成https，看了下SSL原理介绍，有一点不明白，既然https的本质是为了在通讯过程中讯息对称加密的方式传输，为什么浏览器不直接支持服务端自己生产的加密证书，加密证书只需要提供RSA的公钥不就好了？为什么需要花很多钱申请这个证书呢
如果抛开安全只看加密，那确实，只要像你说的那样提供个公钥就行了。
但这样做的问题是，虽然确保了传输过程中的数据是被加密的，但没办法确保最后解密的那台服务器是你真的想要发送给它的那台。
举个例子，在不使用证书加密之前，我想给你（服务器）传纸条，中间需要经过N个人传话（如路由器等各级中间节点），那么在你收到消息的时候，很可能在中间某个传话的就给它篡改了，或者说没篡改、但是被传话的偷看了小秘密。
那么现在咱俩之间约定一个非对称加密的方式，你先给我个公钥，我用公钥把要给你的纸条加密了，你收到后再用私钥解密，这样中间传话的看不懂密码就没法偷看内容、即使瞎改的话你那解密不出来，你就知道纸条内容被篡改了。
到此为止就像你所说的那样，但这样还有个问题，那就是我怎么确认“你”是“你”？我现在喊：「`Bo丶niu`，我要给你传纸条了，给我个公钥」，结果一个实际叫 `niu丶Bo` 的人站出来了说「来来来，我就是 `Bo丶niu`，我给你公钥，你传纸条吧」，结果咱俩的小秘密最后发给这个不相干的人了。这就是中间人攻击（上面这个例子里其实就是 DNS 劫持）。
那怎么解决呢？现实中好办，传纸条前先看一下身份证，噢，“你”确实是“你”，行了，可以发了。
这是因为你信任身份证这个由国家颁发的凭证。那网络上的凭证谁来颁发？这就是证书签发机构的事儿了，它们作为“权威”给每个域颁发证书，就像国家给每个人颁发身份证一样，你信任这些机构，也就信任它们发的证，从而也就信任有证书这些网站了。（这里还有信任链的问题，不展开讲了）
现实中，你办个护照还需要交个工本费呢。想让证书颁发机构给你发证，那就要给它们钱。而且这个证还分三六九等，越权威的越值钱。
不想花钱怎么办？自己给自己签发呗！然后你让所有使用证书的人都去信任你这个签发人（早期 12306 就是这么干的，自己给自己签证书，你访问的时候还得先下载它们的证书导入到系统的信任链里去）。