• 使用Let's Encrypt搭建永久免费的HTTPS服务



    1.概述
    1.1 HTTPS概述
    HTTPS即HTTP + TLS,TLS 是传输层加密协议,它的前身是 SSL 协议。我们知道HTTP协议是基于TCP的。简而言之HTTPS就是在TCP的基础上套一层TLS协议,对HTTP原来在TCP明文传输的内容进行加密,达到安全的目的。

    HTTP 和 TLS 在协议层的位置以及 TLS 协议的组成如下图:



    目前很多网站都启用了HTTPS,这肯定是未来的趋势。而且一些场景必须使用HTTPS协议的,比如微信公众号的某些功能、小程序接入H5等等。
    详情参考:https://developer.baidu.com/resources/online/doc/security/https-pratice-1.html
    1.2 Let’s Encripty介绍
    Let’s Encrypt是一个非盈利的,免费的CA,可以提供免费HTTPS认证服务。
    提供了一套完整的工具,基于这套工具,我们可以免费来搭建HTTPS 网站。
    详情参考:https://letsencrypt.org/
    1.3 ssllabs介绍
    ssllabs可以提供对https部署进行安全监测,评价的服务。
    详情参考:https://www.ssllabs.com/ssltest/analyze.html


    2.Let’s Encrypt部署HTTPS服务
    2.1 为什么使用Let’s Encrypt
    国内有许多机构可以提供免费的SSL证书,但是一般只有一年的免费服务。而且基于cron可以实现定时更新证书,从而实现永久免费的目的。

    2.2 安装Let’s Encrypt
    第一步:安装git
    因为后面需要使用从github拉取安装文件。
    yum install git

    第二步:获取letencrypt安装代码
    cd /home
    git clone https://github.com/letsencrypt/letsencrypt.git

    letsencrypt就是从github下载下来的安装代码;


    certbot-auto 是主要的安装命令。
    第三步:签发SSL证书和密钥文件
    ./certbot-auto centonly --renew-by-default --email 1981715364@qq.com -d digdeep.diantusoft.com

    可以看到使用standalone模式对 域名 digdeep.diantusoft.com 签发SSL证书成功。需要注意,standalone模式会使用本服务器的80端口来完成域名所有权的校验。所以需要保证80端口和443端口没有被占用。
    standalone是一个独立的服务,可以看作是一个小型的webserver,它使用80或443端口来和letsencrypt服务器进行通信。因此,在使用standalone获取证书时,需要关闭正在运行的webserver,除非webserver使用的是80端口和443端口之外特殊的端口。

    在完成Let's Encrypt证书的生成之后,我们可以看到生成的密钥证书文件:

    cert.pem - Apache服务器端证书
    chain.pem - Apache根证书和中继证书
    fullchain.pem - Nginx所需要ssl_certificate文件
    privkey.pem - 安全证书KEY文件
    如果我们使用的Nginx环境,那就需要用到fullchain.pem和privkey.pem两个证书文件,在部署Nginx的时候需要用到。
    第四步:配置nginx启用SSL

    第五步:测试https

    如何nginx –s reload 没有加载证书,则重启Nginx.

    可以看到https访问正常。
    2.3 证书续期
    Let’s Encrypt证书的有效期为90天,过期时需要手动更新续期。
    下面我们是有cron来进行定期更新:

    在每个月的1号,1点30分进行证书的更新;
    在每个月的1号,1点35分重启nginx,使用新的证书;

    2.4 对证书安全性进行测试
    https://www.ssllabs.com/ssltest/analyze.html 访问这个网址,输入域名:
    digdeep.diantusoft.com就可以进行测试,测试结果:

    可以看到A级,是很好的安全级别。
    这个测试结果还包括其他有用的信息:
    1. TLS版本支持信息


    2. 模拟不同客户端进行测试,测试兼容性信息:


    可以看到不支持 XP下面的IE8,对XP的IE6没有进行测试。

    2.5     转发到Tomcat

    使用nginx配置了https,后端的tomcat就无需配置https。配置如下:

    upstream配置,这里因为测试没有配置集群和对集群的健康检查。

    再次访问测试:

    可以看到已经被nginx代理到了tomcat了。并且tomcat无需另外再配置https. 

     2.5 http强制跳转https

    浏览器访问:http://digdeep.diantusoft.com:88 会被重定向到 https://digdeep.diantusoft.com

    3.参考文档
    1. https://developer.baidu.com/resources/online/doc/security/https-pratice-1.html
    2. https://letsencrypt.org/
    3. https://www.ssllabs.com/ssltest/analyze.html
    4. https://www.cnblogs.com/kevingrace/p/6187072.html
    5. https://www.cnblogs.com/intval/p/5763929.html

  • 相关阅读:
    如何删除完全重复的列
    串联多个字符串,引发string和stringBuilder的比较
    借鉴ANJOU的方法改写了上次的TreeView
    如何改变ListBox中内容的顺序
    执行Insert语句时使用string的Format用法
    moss 2007 中FCKEditor编辑器的使用
    qt 获得cmd 命令运行的结果 GIS
    迭代器 GIS
    win32 创建带图片的button GIS
    c++标准库的构成 GIS
  • 原文地址:https://www.cnblogs.com/digdeep/p/10658335.html
Copyright © 2020-2023  润新知