• 做免费的https证书


    转:  https://www.qikqiak.com/post/make-https-blog/

    谁都不愿意在使用网站服务的时候,被恶心的运营商劫持加上一些他们的服务(真的很贱,不是吗?),不过这能难道我们程序员吗?当然不能,上https,老子全站https,你再劫持给我看看。

    https证书服务大部分都是收费的,而且很贵,阿里云可以申请一个免费的证书,只能绑定一个域名,这里我们使用更加友好的免费https服务:Let’s Encrypt

    Let’s Encrypt 简介

    如果要启用HTTPS,我们就需要从证书授权机构(以下简称CA) 处获取一个证书,Let's Encrypt 就是一个 CA。我们可以从Let's Encrypt 获得网站域名的免费的证书。这篇文章也主要讲的是通过 Let's Encrypt + Nginx 来让网站升级到HTTPS

    获取证书

    Certbot是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let's Encrypt 证书。安装命令:

    yum install certbot
    

    生成证书:

    certbot certonly --email icnych@gmail.com --agree-tos --webroot -w /var/www/blogs -d blog.qikqiak.com
    

    其中-w后面是网站根目录,-d后面是网站域名,所以需要保证目录存在并且可以正常访问。

    执行完生成证书的命令后,会生成相关的证书文件到/etc/letsencrypt/live/blog.qikqiak.com/目录下面:

    $ ls /etc/letsencrypt/live/blog.qikqiak.com/
    cert.pem  chain.pem  fullchain.pem  privkey.pem  README
    

    至此证书生成完成。

    Nginx 配置https

    证书生成完成后,还需要更改我们的Nginx配置服务,主要是监听443端口,启用SSL,并配置SSL的证书路径(公钥,私钥的路径)。如下:

    server
    {
        listen       443;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/blog.qikqiak.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/blog.qikqiak.com/privkey.pem;
        server_name blog.qikqiak.com;
        root /home/notes/apps/blog;
        index index.html;
    }
    

    配置更改过后重新加载Nginx即可生效:

    nginx -s reload
    

    现在我们访问https://blog.qikqiak.com已经可以正常访问了,但是还有一个问题就是访问http://blog.qikqiak.com依然还是http的,所以我们需要配置将http更改为https,这样就完美了。这里可以用到之前我们的301跳转来解决这个问题,完整的配置如下:

    server {
        listen  80;
        server_name blog.qikqiak.com;
        rewrite ^(.*)$  https://$host$1 permanent;
    }
    
    server
    {
        listen       443;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/blog.qikqiak.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/blog.qikqiak.com/privkey.pem;
        server_name blog.qikqiak.com;
        root /home/notes/apps/blog;
        index index.html;
    }
    

    更新证书

    到这里我们已经将博客https化了,但是还没有完的,由于Let's Encrypt证书的有效期只有90天,所以在到期之前我们需要更新整数,certbot给我们已经提供了这样的更新命令,我们只需要将更新命令添加到crontab下面定期更新即可:

    $ crontab -l
    30 5 1 * * root /usr/bin/certbot renew --renew-hook "/usr/sbin/nginx -s reload"
    

    到这一步才算革命成功了~~~ 我们再也不用担心恶心的害虫了~~~

    「真诚赞赏,手留余香」

  • 相关阅读:
    jQuery实现AJAX定时局部页面刷新
    设为首页,收藏本站
    Js 实现页面跳转的几种方式
    js Javascript刷新页面的几种方法
    js 返回上一页或上几页
    ASP.NET, IE6下URL中文乱码问题 ASP.NET程序,当URL后缀包含奇数个中文字符
    SQL数据库。按年,月,日查询
    20155324 2016-2017-2 《Java程序设计》第6周学习总结
    20155324 2016-2017-2 《Java程序设计》第5周学习总结
    20155324 2016-2017-2 《Java程序设计》第4周学习总结
  • 原文地址:https://www.cnblogs.com/fyy-hhzzj/p/10075383.html
Copyright © 2020-2023  润新知