程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

程序员创业必备:如何让Web服务支持https协议,有哪些免费CA机构
原创声明
这是本人署名原创文章,未经许可不支持转载且请勿抄袭 。本公众号的所有文章均原创 。为了容易理解和记忆,文章以图解为主、代码为辅 。如果您感兴趣,欢迎关注!文:吴潇/JAVA高级工程师
我们都知道,http协议是明文传送,安全性很差,被用得越来越少,正在被https协议取代 。很多浏览器例如chrome只要访问一个http协议网站,就会弹出风险提示,让用户感觉这个网站不靠谱、有病毒、会泄漏账号密码,不敢进,从而对网站发展产生不利影响 。

程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

文章插图
 
所以,对于要搞副业/创业的程序员来说,搭建web服务一定要支持https 。本文就是要教你如何让web服务支持https协议 。
假如你对https协议中的SSL证书、CA等概念还不太熟悉,建议先学习一下相关基础,可以参考本篇 。
现在我们开始搭建https,首先需要一个合法的SSL证书(后文简称"证书") 。怎么得到合法证书呢?基本上只有两条路 。
向权威CA机构购买证书 。
自己创建CA(经过一系列配置,效果等价于权威机构颁发的SSL证书) 。
向权威CA机构购买证书的方案是正规渠道,可以实现网站HTTPS化,使网站可信,防劫持、防篡改、防监听、安全加密,适合知名大型网站 。然而缺点很明显,就是要花钱,而且不是一次性购买得到的,而是被设置了有效期的,有效期到了之后还要续费才能继续使用,因此不太适合中小型网站/App 。
程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

文章插图
某云平台推荐的收费CA机构
购买证书方案的操作比较简单,只要在云平台上找到相应服务,填资料,然后付款即可 。
不过,这世界上也是有免费的权威CA机构的,可以试试这家免费CA 。如果这个能用,就不用自己搭CA了 。这家免费CA机构名为Let's Encrypt,地址 https://letsencrypt.org/,在国外比较有名气 。
程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

文章插图
免费且使用广泛的CA
(某国内排名第一的云平台为什么不推荐这家CA?钱的问题?)
另一个方案就是自己建CA,把CA证书部署到自己的客户端,再用自己的CA给web服务颁发证书 。效果上是可以实现https安全性,而且不用花钱买证书,缺点只是没有权威机构的认可罢了 。其实,不管是买证书还是自己搭建CA,底层原理都一样 。
下面就介绍怎么自己搭建CA,然后给自己的web服务创建证书,最终在自己的app上实现https 。
一、创建自己的CA你可能认为搭建CA很复杂,需要安装服务端软件、写配置文件等 。然而,实际上,搭建CA的步骤异常简单 。在任意一台安装了openssl(一般系统默认安装好了)的linux机器上,用以下命令生成CA private key:
程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

文章插图
 
执行以上命令之后,要求输入一个密码(给这个CA private key用) 。如果不输入密码,其他人拿到这个CA private key之后,不用输入密码就可以冒充你 。输入完密码之后,输出如下:
程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

文章插图
 
然后,执行以下命令生成根证书(CA证书):
程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

文章插图
 
然后输入前面CA private key的密码,回答一系列问题(即查看证书时显示出来的单位名称、国家、地区之类的信息) 。
程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

文章插图
 
到目前为止,已经创建了2个文件 myCA.key(即CA private key)和myCA.pem(CA根证书) 。持有这2个文件,你就已经成为一个CA,当然,是不出名的那种 。
二、CA证书安装到客户端有了CA private key和CA证书之后,把CA根证书安装到客户端上,这个客户端访问自己的web服务就是https的了 。但是,没有安装CA证书的客户端访问你的web服务,依然不支持https 。
不同平台的客户端安装CA证书的方法不太一样,例如在Android手机上,可以访问"设置->安全和隐私->更多安全设置->加密和凭据"来查看已经安装的CA证书(凭据)和安装自己的CA证书 。
程序员创业必备:如何让Web服务支持https,有哪些免费CA机构

文章插图
android上如何管理根证书
三、给web服务器创建证书有了CA private key 和 CA根证书后,我们就可以对web服务的证书进行签名了 。web服务器也需要自己创建一个证书(然后拿去给CA签名),步骤如下 。首先创建一个web server用的private key,命令如下:


推荐阅读