你还在让你的网站裸奔在网络上吗?在这里我们将搭建免费版HTTPS,免费的,免费的,免费的,重要的事情说三遍,申请来源为letsencrypt,

  超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,如果攻击者截取了客户端与服务器之间的传输报文,将能直接获取到其中信息,

  为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,

  HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为客户端和服务器之间的通信加密。

阅读目录

  1. 下载certbot
  2. 查看certbot
  3. 申请https证书(证书有效期3个月,过期需要重新申请)
    1. 方式一:使用DNS方式验证,该方式需要你能配置域名,我个人喜欢这种方式
    2. 方式二:使用插件方式
  4. 配置nginx支持https
  5. 使用shell脚本与定时任务定时续期证书
    1. 方式一的续期
    2. 方式二的续期

1、下载certbot

  这里使用git下载,还没有安装git的 查看如何安装

  

  切换目录

   cd /usr/local

  克隆git仓库

   git clone https://github.com/certbot/certbot.git

  克隆完成将会在/usr/loca/  出现certbot目录

2、查看certbot

  切换到certbot目录

   cd /usr/local/certbot

  如果目录是这样的说明安装成功了

  

  certbot常用命令 查看官方文档

3、申请https证书(证书有效期3个月,过期需要重新申请)

   查看当前证书,第一次执行将会安装一些依赖,中途有一次确认询问,输入Y即可

   ./certbot-auto certificates

  3.1 方式一:使用DNS方式验证,该方式需要你能配置域名,我个人喜欢这种方式

         ./certbot-auto --server https://acme-v02.api.letsencrypt.org/directory -d  你的域名 --manual --preferred-challenges dns-01 certonly  如:

       配置泛域名

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

      配置制定域名

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

      配置二级泛域名 

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

      

      如上图所示,第一次会让你输入一个邮箱,按要求输入就可以了,到时候会发送一个邮件给你,需要点击确认邮箱,所以务必填写真实邮箱,然后按要求确认就可,不确认是执行不下去的。

      

      接下来会让你验证域名,按要求解析个TXT类型的记录

      

      保存确认以后再回到服务器中确认

      

      上面这两个文件就是配置https用到的证书了

  3.2 方式二:使用插件方式

      

      我们先看看官方怎么说的

      

      这里我使用的是nginx(申请完会自动帮你重启nginx)这种方式配置不了泛域名,只能一个一个添加

       ./certbot-auto --nginx -d api2.nl166.com

      

      

      解决上述报错,请注意,/usr/local/nginx 请替换为你的nginx实际安装位置  安装LNMP 

       ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

       ln -s /usr/local/nginx/conf/ /etc/nginx

      再次执行申请

      

      中途会询问你请选择是否将HTTP流量重定向到HTTPS,删除HTTP访问。可根据自己的需求选择,我这里是c取消选择(实际上这一步可以直接不理,经测试,这一步没有选择前,访问网址https已经可以访问了。)

      如果想省略询问这一步,可以添加certonly 该种方式只会生成证书,不做其余操作,证书配置需要自己手动添加 如下:

       ./certbot-auto certonly --nginx -d api2.nl166.com

      

      如上图所示,如果你配置了监听443端口的server,他会帮你自动找到对应域名的配置文件,并添加下面两行,还把我格式打乱了,}号与上面{的缩进不对应了,不过不影响功能,这里不知道会不会根据nginx的版本选择是否添加ssl on;

      因为我这个nginx版本是不需要这个的,较低版本需要添加ssl on;才能开启https访问。

      如没有监听该域名的443端口,则会在如下位置添加信息

      

     其他方式请自行摸索

4、配置nginx支持https

  查看nginx是否支持配置https

   /usr/local/nginx/sbin/nginx -V

  如果还没有--with-http_ssl_module模块则需要添加模块  查看如何给nginx升级或增加模块

  

  # HTTPS server
#
server {
listen ssl;
server_name api2.nl166.com;
root /data/web/im.nl166.com; location / {
index index.php;
} #auth_basic "hello world";
#auth_basic_user_file /usr/local/nginx/conf/auth/nl166.auth; location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ .*.(svn|git|cvs) {
deny all;
} ssl_certificate /etc/letsencrypt/live/api2.nl166.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/api2.nl166.com/privkey.pem; # managed by Certbot
}

  nginx配置https很简单,只需要复制上面代码到监听80端口的server同级。

  ssl_certificate 跟 ssl_certificate 分别对应自己的证书文件,其他配置跟普通http的配置一样修改为自己对应信息。

  较低版本需要增加ssl on;才能开启https访问。

5、使用shell脚本与定时任务定时续期证书

   注意:为避免遇到操作次数的限制,加入 --dry-run 参数,可以避免操作限制,等执行无误后,再去掉进行真实的renew 操作。

  

    5.1 方式一的续期

      其中域名为/etc/letsencrypt/renewal/目录下的****.conf ,****就是你要填写的域名,比如我生成的时候是*.nl166.com,但是在实际生成的时候是没有*号的
      home/certbot-sh/au.sh 替换成你自己更新DNS的脚本

      如下:

        ./certbot-auto renew --cert-name nl166.com --manual-auth-hook /data/shell/crontab/auto_update_httpscert.sh --dry-run

      

      把更新命令放到一个文件,我这里是放在了/data/shell/crontab/auto_update_httpscert.sh 内容如下 ,原来的auto_update_httpscert.sh 更改到/data/shell/cnl_update_httpscert.sh
      

      增加系统定时任务

         crontab -e

       #每个星期天凌晨5点执行更新https证书操作
       0 5 * * 0 sh /data/shell/crontab/auto_update_httpscert.sh

    5.2 方式二的续期

      如下:

         ./certbot-auto certonly --renew-by-default --nginx -d api2.nl166.com --dry-run 

      

      增加系统定时任务操作参考方式一

    

        

nginx申请并配置免费https的更多相关文章

  1. Nginx安装及配置免费HTTPS证书

    第一步:安装Nginx 安装Nginx 第二步:安装HTTPS证书( Let's Encrypt) 安装HTTPS证书 第三步骤:浏览器验证 Chrome浏览器打开开发者工具->Security ...

  2. 利用腾讯云为你的域名申请并配置免费SSL一年

    我想,点进来的朋友,应该都知道SSL的重要性吧.这里就简单提一下,大型网站域名只有配置了SSL后,才会更加安全. 现在,微信小程序也开始要求后台必须是SSL配置后的域名了.说了这么多,估计有些人还是有 ...

  3. startssl申请配置免费https证书

    之前给业务配置都是在沃通上申请免费证书,而后通过反向代理层的Nginx进行https认证. 今天来了个新需求,要求域名直接解析至阿里云SLB.https配置需要通过阿里云的控制台部署这倒无所谓,只是在 ...

  4. 微信公众平台HTTPS方式调用配置免费https服务器

    微信公众平台数据传输安全,提高业务安全性,公众平台将不再支持HTTP方式调用.避免影响正常使用中含有HTTP方式调用的服务,请开发者尽快调整,将现有通过HTTP方式调用的切换成HTTPS调用,平台将于 ...

  5. nginx用Certbot配置免费SSL证书(ngx_http_ssl_module模块)

    一.准备工作 1.先安装nginx https://files.cnblogs.com/files/blogs/676936/nginx-1.18.0.sh #nginx-1.18.0版安装脚本2.在 ...

  6. 为阿里云域名配置免费SSL支持https加密访问简单教程

    阿里云之前有免费ssl入口申请,现在已经关闭了.那么现在怎么为自己的域名配置https呢? 首先打开阿里云域名控制台,如以下界面.(这里暂且用我的这个域名讲解吧)  如上图点击ssl证书,点击单域名免 ...

  7. 免费SSL-HTTS 申请与配置 NGINX配置

    Let's Encrypt是很火的一个免费SSL证书发行项目,自动化发行证书,证书有90天的有效期.适合个人使用或者临时使用,不用再忍受自签发证书不受浏览器信赖的提示.Let's Encrypt已经发 ...

  8. Nginx反向代理+负载均衡简单实现(手动申请https证书,申请免费https证书,http强转https)

    背景:A服务器(192.168.1.8)作为nginx代理服务器B服务器(192.168.1.150)作为后端真实服务器 现在需要访问https://testwww.huanqiu.com请求时从A服 ...

  9. nginx 配置本地https(免费证书)

    Linux系统下生成证书 生成秘钥key,运行: $ openssl genrsa -des3 -out server.key 20481会有两次要求输入密码,输入同一个即可 输入密码 然后你就获得了 ...

随机推荐

  1. 纯css实现翻书效果

    前言 最近研究了一下css3的3D效果,写了几个demo,写篇博客总结一下实现的经过.PS:如果对transform-origin/perspective/transform-style这些概念还不了 ...

  2. DAY 24继承与组合

    一.继承 继承就是子类与父类形成的一种关系,可以让子类能直接从父类中获取属性与方法 优点:减少了类与类之间的代码冗余 语法: class 父类: # 父类是多个有共同点的普通类抽离共有属性与方法形成的 ...

  3. NetSec2019 20165327 Exp3 免杀原理与实践

    NetSec2019 20165327 Exp3 免杀原理与实践 pre基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. 要做好免杀,就时清 ...

  4. FreeMaker入门介绍

    一.FreeMaker介绍 FreeMarker是一款免费的Java模板引擎,是一种基于模板和数据生成文本(HMLT.电子邮件.配置文件.源代码等)的工具,它不是面向最终用户的,而是一款程序员使用的组 ...

  5. GitHub 托管的10款免费开源 windows 工具

    GitHub 是如今所有开源事物的中央仓库, 这个网站最近发布了一个叫做<2016 Octoverse  状态报告>,详细列出了从去年起其一系列亮点, 包括总的活跃用户数,最常见的 emo ...

  6. leetcode 78,236,300

    ---恢复内容开始--- 2018.3.16目前已刷27题,打卡记录有意思的题目. leetcode78 subsets 思路1:DFS遍历子集,每遇到一个数就把该数加上原来的子集变成新的子集. cl ...

  7. Struts 2中如何解决中文乱码问题?

    在配置文件中定义如下常量值配置: <constant name=”struts.i18n.encoding” value=”UTF-8”/> 注意:只能解决post请求的乱码问题,针对ge ...

  8. uva 10288 gailv

    Problem F Coupons Input: standard input Output: standard output Time Limit: seconds Memory Limit: MB ...

  9. SQLite数据库 简介、特点、优势、局限性及使用

    SQLite简介 SQLite是一个进程内的轻量级嵌入式数据库,它的数据库就是一个文件,实现了自给自足.无服务器.零配置的.事务性的SQL数据库引擎.它是一个零配置的数据库,这就体现出来SQLite与 ...

  10. spring cloud config svn仓库配置

    之前快速入门了一下spring cloud config 但是仓库用的别人博客上的git仓库,公司用的是svn项目管理中心,下面这个自己配置的时候出现的错误 You need to configure ...