如何快速的给网站加持HTTPS
前言
写在前面的话,因为小程序访问服务器需要有HTTPS的支持,很多小伙伴都遇到了给服务器配置HTTPS的麻烦。所以有必要介绍一下。
给大家介绍的内容如下:
1.了解HTTPS
2.如何从startssl申请个人免费证书
3.Nginx中配置HTTPS
1.HTTPS是什么
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。
目前很多互联网公司都已经开始全站使用HTTPS连接。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
啦啦啦啦,我是知识的搬运工,上述知识来自百度百科,不一定全对哦。想要更深入了解HTTP和HTTPS的区别,请看这篇文章《HTTPS的七大误解》
讲完了上面的文字理论,接下来可以跟我一步一步的从证书申请开始,完成HTTPS的配置,恩,看图说明。
2.从StartSSL申请免费的SSL证书
注册并登录
1:先登录StartSSL官网,点击右上角的Sign-up链接进入注册页面

2:首次使用先注册帐号,注册超简单,只需要填写邮箱,获取验证码就好了

3:上一步发送验证码成功后,会到接下来的页面,填写你邮箱收到的验证码。
点击Sign Up后即可成功注册。

4.回到首页,点击Login,进入登录页面,登录方式有两种客户端授权登录(Client Certificate Login)和一次性密码登录(One Time Password Login)。
我们选择一次性密码登录。网站会向你的邮箱发送本次登录需要的密码。

5.在下面框中输入你注册时的邮箱,获取临时密码

6.在下一步的窗口输入收到的临时密码,确认后,进入控制台,好多英文,看着容易晕,关注两个Certificates Wizard(协助申请SSL证书) 和 Validations Wizard(协助验证域名)。

验证域名
7.在申请证书前,先验证你是域名的拥有者。网站会通过给域名拥有者的邮箱发送确认的验证码来进行验证。点击Validations Wizard进入域名验证页面。

选择Domain Validation方式,点击Continue按钮,进入下一步,输入你的域名:

接下来,请输入服务器自动给域名拥有者的邮箱发送验证码,完成验证。

8.SSL证书申请,选择Certificates Wizard,进入SSL证书申请页面。这里面列出了网站提供的不同类型的证书服务。我们选择Free User类型的证书,点击DV SSL Certification(已经红框框出)链接。进入证书生成页面。
申请证书

在证书生成页面我们可以看到之前已经验证了的域名。接下来可以申请证书了,我们可以为一级域名x.com申请证书,也能为二级域名申请证书y.x.com。只能申请验证成功的域名的证书。

在这里,我们选中Generated by Myself 选项,选择在本地生成CSR。复制这行代码在本地运行,请注意yourname.key yourname.csr是可以自己取名的,比如我取joke.key和joke.csr。
在这一步会先要求你设置密码,后面会用到。
Enter PEM pass phrase
一共输入两次。
后面就可以一直回车,回车,回车直到完成。

接下来把生成的yourname.csr的内容粘贴到文本框中

点击Submit按钮,服务器就会为你申请SSL证书。

当你看到上面的提示,就说明你的证书已经声明成功了。
下载证书
成功申请证书之后,点击ToolBoox,进入Certificate list就能够看到刚才成功申请的证书了,而且证书的有效期是3年。

点击Retrive,可以下载crt文件。

接下来选择ToolBox的Decrypt Private Key,进入证书的私钥生成页面

在Decrypt Private Key框中粘贴上之前生成yourname.key的内容,Passphrase中输入之前设置的密码

点击Decrypt按钮,即可生成证书的私钥。

将crt 和 私钥都保存起来,我的存为joke.xxx.crt和joke.xxx.key。
为Nginx配置HTTPS证书
接下来介绍如何给Nginx配置HTTPS证书,其他Apache或者IIS可自己搜索查看如何配置。
1.将crk和key保存在服务器的文件夹中,比如我存放在/root/crt中。
2.将原先域名访问配置进行修改,原先http的访问统一重定向为https的方式。新增443端口监听,并且设置
ssl_certificate {crt文件的路径}
ssl_certificate_key {key文件的路径}

3.保存配置后,通过重启nginx使刚修改的配置生效。
最好,我们就能通过浏览器来访问刚才申请了SSL证书的域名,在Chrome浏览器下会有一把锁着的绿色钥匙和https绿字。

后记
好了,本以为很快就写好了的说明,没想到还是要折腾个把小时。一步一步把申请ssl和部署到nginx的步骤走完,也是醉了。由于joke.imdao.cn是临时起意想申请来做笑话网站的子域名,DNS解析还没有生效,所以最后一张图是哪另外的子域名做说明的,请忽略这一瑕点。
最后呢,恩,如果大家这篇文章有帮助,请收藏本文或者关注我,这很重要,正向动力。后续,我还会写些服务器和客户端开发的文章分享给大家,关注我了你们就能及时收到我的更新啦。
谢谢。