zoukankan      html  css  js  c++  java
  • http网站快捷免费升级到https

    前言

    能看到这篇文章我想大家对http和https都不陌生,我也不做过多阐述,直接开干

    工具

    • 已备案域名一个
    • 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 安装简单,使用非常方便。

    这么多浏览器共同发起的,所以不要担心过时,重点是免费,是不是免费就不好呢,并不是,开源精神所在,Linux免费,它不好吗?

    通配符证书支持

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

    通配符好处

    假设你有个域名叫www.itmsbx.com,在通配符不支持之前呢,你只能对www这个主域名做解析,但是现在你可以:
    a.itmsbx.comv.itmsbx.comz.timsbx.com,是不是很开心呢

    上手就开干

    获取证书生成工具

    certbot-auto作为我们的证书生成工具,我们先下载然后授权使用,命令如下

    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面试必修首发

  • 相关阅读:
    安装配置ZooKeeper及基本用法
    关于SqlServer数据库数据备份失败的问题
    input 框自动检测输入是否为数字
    nginx配置负载均衡
    nginx日志文件的配置
    nginx的proxy模块详解以及参数
    nginx配置反向代理
    正向代理和反向代理
    Linux建立虚拟ip的方法
    nginx基于ip的虚拟主机
  • 原文地址:https://www.cnblogs.com/itmsbx/p/9685880.html
Copyright © 2011-2022 走看看