nginx申请并配置免费https - 陈乃栾

chennl 2022-01-02 原文


nginx申请并配置免费https


  你还在让你的网站裸奔在网络上吗?在这里我们将搭建免费版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升级或增加模块

  

 

 1  # HTTPS server
 2     #
 3     server {
 4         listen       443 ssl;
 5         server_name api2.nl166.com;
 6         root /data/web/im.nl166.com;
 7 
 8         location / {
 9             index index.php;
10         }
11 
12         #auth_basic "hello world";
13         #auth_basic_user_file /usr/local/nginx/conf/auth/nl166.auth;
14 
15         location ~ \.php$ {
16             include fastcgi_params;
17             fastcgi_pass unix:/tmp/php-fcgi.sock;
18             fastcgi_index index.php;
19             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
20         }
21         location ~ .*.(svn|git|cvs) {
22              deny all;
23         }
24 
25         ssl_certificate /etc/letsencrypt/live/api2.nl166.com/fullchain.pem; # managed by Certbot
26         ssl_certificate_key /etc/letsencrypt/live/api2.nl166.com/privkey.pem; # managed by Certbot
27     }

  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 

      

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

 

    

        

 

 

发表于
2018-12-27 09:56 
陈乃栾 
阅读(878
评论(0
编辑 
收藏 
举报

 

版权声明:本文为chennl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/chennl/p/10177353.html

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

  1. 事件驱动编程 – 木木在唱歌

    事件驱动编程 看完公司的基于Netty的游戏框架,框架中用到了多态,函数式编程和事件驱动编程,第一次看到事件驱 […]...

  2. 国内 搜索网站大全 —— 网盘 、课程、搜索引擎 …… 常用网站

    https://www.kolsou.com/     https://www.xue8nav.com/   […]...

  3. ASP.NET Core 2.2 : 二十一. 内容协商与自定义IActionResult和格式化类

    上一章的结尾留下了一个问题:同样是ObjectResult,在执行的时候又是如何被转换成string和JSON […]...

  4. 10分钟明白对偶建模法 / +Leampms的“主模型建模”和“对偶模型建模” 之 —— 三类最短路径问题

    摘要 对偶模型建模是非常有独特的一种建模方式 —— 当问题本身要求指标极小的情况下,对偶模型表现为求极大。本文 […]...

  5. SequenceFile & SequenceFileInputFormat – satyrs

    SequenceFile & SequenceFileInputFormat<K,V> o […]...

  6. Python的未来发展方向 – 鲁尧尧

    Python的未来发展方向 2019-09-07 13:23  鲁尧尧  阅读(2031)  评论(2)  编 […]...

  7. 百度智能化测试技术及项目交付 – zouhui

    百度智能化测试技术及项目交付 2021-04-07 20:58  zouhui  阅读(71)  评论(0)  […]...

  8. 用户信息不同步的问题 – joe

    用户信息不同步的问题       今日遇到一个怪问题:我在AD改了某个用户的姓名,然后在SSP同步一次用户信息 […]...

随机推荐

  1. 4.Apache POI使用详解

    一.POI结构与常用类 1.POI介绍 Apache POI是Apache软件基金会的开源项目,POI提供AP […]...

  2. 我是李玉宝,我是个程序员!

    我是李玉宝,我是个程序员! 2019-01-18 15:00 by 李玉宝, … 阅读, R […]...

  3. Kubernetes声明式API与编程范式

    声明式API vs 命令时API 计算机系统是分层的,也就是下层做一些支持的工作,暴露接口给上层用。注意:语言 […]...

  4. 远程桌面连不上的解决方法

    点系统—–>属性——->远程—R […]...

  5. Windows环境下安装openface

    由于昨天在学习人脸识别,就涉及到了openface 我使用的是Windows环境下的pycharm开发工具,昨 […]...

  6. 100天搞定机器学习|Day56 随机森林工作原理及调参实战(信用卡欺诈预测)

    本文是对100天搞定机器学习|Day33-34 随机森林的补充 前文对随机森林的概念、工作原理、使用方法做了简 […]...

  7. 微信公众平台开发模式

    微信公众平台提供了开发者模式,开启开发者模式的方法入下图 在右侧的工具栏最后一项“开发者中心”。点击进入“开发 […]...

  8. 面向对象核心技术(java) – 北冥道人骑鲲打代码

    面向对象核心技术(java) 一、类的封装详解 在“面向对象编程基础(java)”的时候讲过,封装是面向对象编 […]...

展开目录

目录导航