http网站快捷免费升级到https

前言

能看到这篇文章我想你们对http和https都不陌生,我也不作过多阐述,直接开干nginx

工具

  • 已备案域名一个
  • CentOS 7
  • Nginx
  • Let's Encrypt

这里我详细介绍下Let's Encrypt,它是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由 Mozilla、思科、Akamai、IdenTrust 和 EFF 等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由 HTTP 过渡到 HTTPS,目前 Facebook 等大公司开始加入赞助行列。面试

Let's Encrypt 已经得了 IdenTrust 的交叉签名,这意味着其证书如今已经能够被 Mozilla、Google、Microsoft 和 Apple 等主流的浏览器所信任,用户只须要在 Web 服务器证书链中配置交叉签名,浏览器客户端会自动处理好其它的一切,Let's Encrypt 安装简单,使用很是方便。api

这么多浏览器共同发起的,因此不要担忧过期,重点是免费,是否是免费就很差呢,并非,开源精神所在,Linux免费,它很差吗?浏览器

通配符证书支持

有个新的好消息,在2017年我使用该SSL的时候还不能对二级域名作https,一个站就只能作一个,2018年3月14日,Let's Encrypt的执行董事Josh Aas对外宣布,他们的通配符证书正式上线,用户能够基于此特性轻松部署/开启全部子域名的HTTPS功能。ruby

通配符好处

假设你有个域名叫www.itmsbx.com,在通配符不支持以前呢,你只能对www这个主域名作解析,可是如今你能够:
a.itmsbx.comv.itmsbx.comz.timsbx.com,是否是很开心呢服务器

上手就开干

获取证书生成工具

certbot-auto做为咱们的证书生成工具,咱们先下载而后受权使用,命令以下ssh

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

 

若是不知道下载到哪去了,经过以下命令查找位置工具

find / -name certbot-auto

 

获取证书

这里我以域名: itmsbx.com 举例子,大家注意记得替换成大家的网站

  1. 首先请先打开阿里云或腾讯云域名解析网站,找到解析的地方,以下阿里云


     
    个人主机为阿里云
  2. 执行前面下载的certbot-auto

./certbot-auto certonly  -d *.itmsbx.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

 

 

执行后有三个交互式的提示,不要着急一步步来,请仔细查看配置输出:

  • 是否赞成 Let's Encrypt 协议要求


     
     
  • 询问是否对域名和机器(IP)进行绑定


     
     
  • 输入邮箱,给你发送一封验证邮件
    若是是第一次操做应该须要验证邮箱,我这里由于已经操做屡次了,因此不须要再次验证了

 
 

阿里云配置完成后不要心急,等待3分钟左右,云解析生效须要几分钟时间,不然你就前功尽弃从新来了

 
 

输入以下命令查看证书信息

./certbot-auto certificates 

到这里的话证书申请已经操做完了,接下来咱们来看Nginx配置部分

nginx配置证书

要想让 Web服务器支持 HTTPS ,首先你的服务器确定要支持 SSL ,因此咱们先检查 Nginx 是否支持 SSL

 
 

若是configure arguments没有with-http_ssl_module描述的话则须要安装,这里由于我已经配置过了,因此没办法再次演示,你们能够去查看nginx开通ssh支持的具体配置

证书准备
接下来咱们将生成的证书放到一个指定的目录,随你放哪都行,nginx能读取到便可

[root@iz2zeip7gvbiukof8kwdapz itmsbx]# pwd
/usr/local/nginx/conf/cert/itmsbx
[root@iz2zeip7gvbiukof8kwdapz itmsbx]# ls
cert.pem  chain.pem  fullchain.pem  privkey.pem

将如上四个文件copy到自定义的文件夹,而后进入nginx.conf

 
 

 

 
改造前
 
改造后的配置

这时候,你就能够打开浏览器访问一下试试了。若是访问不到,请先检查443端口是否开放,设置一下防火墙,若是能成功访问到,那么恭喜你。

 
改造后

到这里,服务器支持 HTTPS 升级已经完成,可是不少人在浏览器地址栏输入域名的时候都不输入http://或https://的,由于浏览器会自动帮咱们加上http://的,因此,这时候输入咱们刚刚设置的域名其实仍是没有走https://请求,那怎么让就是输入http://也走HTTPS呢?

同级server加入以下代码作跳转

server
{
    listen 80;
    server_name *.itmsbx.com;
    rewrite ^(.*)$  https://$host$1 permanent;
}

修改完配置后必定要从新加载让配置生效

$ ./nginx -s reload

有效期

该证书的有效期只有3个月,切记在快满3个月的时候从新更新一次,执行以下代码便可

./certbot-auto renew 

总结

上面讲解了怎么将http升级到https,其实很简单,可是须要考虑的却有不少,系统从http升级到https都须要考虑服务中代码配置状况,好比代码底部若是有写死的http尽可能配置成灵活的,不然系统在作升级的时候很麻烦,一些静态资源都须要进行路径的配置,若是文件中存在http路径请求,在地址栏是会出现信任但https警告的状况。

http慢慢的会被抛弃,因此升级为https是项目一开始就须要考虑进去的


文章转载至:Java面试必修网 www.itmsbx.com ,请自备水,更多干、干、干货等着你

若是你有过人的技术,若是你有好的文章,欢迎投稿,咱们将在Java面试必修首发