为什么要使用 HTTPS ?
首先来说一下 HTTP 与 HTTPS 协议的区别吧,他们的根本区别就是 HTTPS 在 HTTP 协议的基础上加入了 SSL 层,在传输层对网络连接进行加密。简单点说在 HTTP 协议下你的网站是光着身子在奔跑,但到了 HTTPS 下你穿了一件衣服,别人看不到你的肌肉了(当然,这好像不是好事,不重要),更安全了一点点,就大概这个意思。
SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。采用 HTTPS 的服务器必须从证书颁发机构 CA(Certificate Authority)申请一个用于证明服务器用途类型的证书,当然一般都有收费,而且不便宜,其实你也可以通过 OpenSSL 自己造一个证书,这样有一个弊端是大家都不信任你造的证书。那怎么办?
你必须知道的步骤通过上面的简单介绍你应该知道了,要想你的网站支持 HTTPS ,就必须有一个 被信任的证书 ,那这个证书就必须由证书颁发机构(如VeriSign、Microsoft等)颁发的,否则你就会遇到如打开 12306.cn 这样的 您的连接不是私密连接 的尴尬。
你肯定不想用户打开后,你的网站是上面这样的,身边有好多朋友买票时问过我这是什么意思?我都没办法解释给他们,哎。所以你需要要有下面几个东西:
一个域名(你肯定有)
Web 服务器(Nginx,Apache,IIS都行)
SSL 证书(最好 CA 机构颁发的)
就完了,上面三个东西可能最麻烦就是搞到一个被全世界都信任的证书了,没关系,现在我试着让你免费获取一个,注意是 免费!!!
提供免费的证书商也就那么几个,最知名的可能是 StartSSL ,其他我还知道 Let's Encrypt ,不过这里我用的是国内腾讯云的。
感谢腾讯云对于得到一个 受信任的证书 很简单,找第三方证书颁发机构购买就行了,但是一个每年大几千的证书费用对于小企业或个人来说,有点接受不了,或者是没钱。现在好了,腾讯云认证用户可以申请到赛门铁克(Symantec)免费的 TrustAsia DV SSL 证书了。
登录腾讯云管理平台
SSL 证书申请地址在这里: https://console.qcloud.com/ssl ,点击 申请证书 ,会弹出下面的框:
上面显示什么 价值1900元/年 ,不要管,点击 确认 按钮。弹出表单你填写你要绑定的域名就行了:
接下来会验证你的域名,简单说就是验证一下这个域名是不是你的,所以你要在域名解析添加一条 CName 记录,实在不懂的话,官方也有怎么添加的文档。
一般验证过程会很快,几个小时吧,申请通过后,这时候你看到状态是 已颁发 后,就能下载证书了。
下载下来你打开文件会看到 Nginx,Apache,IIS 三个文件夹,里边放的就是对应各个服务器的证书。到这里,整个证书申请流程就算完了,接下来就是配置 Web 服务器来支持网站的 HTTPS 访问了。我这里用的 Nginx 演示。
Nginx 平滑升级以支持 HTTPS要想让 Web服务器支持 HTTPS ,首先你的服务器肯定要支持 SSL ,所以我们先检查 Nginx 是否支持 SSL :
/usr/local/nginx/sbin/nginx -V通过命令显示信息,我们看 configure arguments 中是否有 -with-http_ssl_module 字样,如果像我这样没有的话,你就需要重新编译 Nginx 以支持 SSL 了。如果有,请跳过这步骤,直接看 Nginx 配置 HTTPS 服务 那一节。
安装 Nginx 可能大家都会,不会的可以看 CentOS 7 下安装 Nginx (),但是平滑升级 Nginx 可能你没有体验过,这样说吧,在线上服务器环境下,你要支持 HTTPS 访问,但是你发现你的 Nginx 不支持 SSL ,你肯定不能卸载 Nginx 重新安装时加载 SSL 模块,因为那是线上服务器。你只能在现有安装的 Nginx 下进行无痛升级以以支持 SSL ,这就用到了 Nginx 的 平滑升级 概念。
找到你之前安装 Nginx 时的编译目录,如果你和我一样找不到或许删除了,那我们就需要重新下载一个 Nginx 了,当然我们是通过 wget 方式,看命令:
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz tar -zxvf nginx-1.10.1.tar.gz cd nginx-1.10.1配置,加入 SSL 模块:
./configure --with-http_ssl_module make注意,千万不能在像安装的时候 make install 了,因为我们这是升级。
备份原 Nginx 执行脚本
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old把新版本 Nginx 编译脚本放到可执行文件目录下
cd objs/ cp nginx /usr/local/nginx/sbin/进行平滑升级,命令:
make upgrade