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

chennl 2022-01-02 原文

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

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

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

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

 

 

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

  

  切换目录

   cd /usr/local 

  克隆git仓库

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

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

  切换到certbot目录

   cd /usr/local/certbot 

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

  

  certbot常用命令 查看官方文档

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

   ./certbot-auto certificates

 

       配置泛域名

       ./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用到的证书了

 

      

      我们先看看官方怎么说的

      

      这里我使用的是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端口,则会在如下位置添加信息

      

  查看nginx是否支持配置https

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

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

  

 

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

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

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

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

  

      其中域名为/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

 

      如下:

         ./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. 移动互联网广告 – 第一更 – 精准投放 – 2016/12/04

    一、互联网广告及其相关投放技术 1.1 展示方式   广告主要分为网络广告、电视广告以及杂志广告等,主要表现形 […]...

  2. 详解docker实战之搭建私有镜像仓库 – kurbernetes

    1、实战目的 搭建企业私有的镜像仓库,满足从开发环境推送和拉取镜像。当我们使用k8s来编排和调度容器时,操作的 […]...

  3. 初次使用SVN心得 – 新一

    初次使用SVN心得              进入实验室, 一个项目往往需要多天多人次共同维护,所以版本控制也 […]...

  4. 图像(层)正常混合模式详解(上) – 阿发伯

    图像(层)正常混合模式详解(上) 最基本正常图像混合模式也是很复杂的。因为按照目标图Alpha信息、源图Alp […]...

  5. 壹度DIY_微信小程序组件_小程序插件开发 – 壹度技术

    壹度DIY_微信小程序组件_小程序插件开发 开源免费插件,diy特有的页面机制,搭配30+自定义组件,让你的站 […]...

  6. 服务器性能查看常用命令 – 轩脉刃

    服务器性能查看常用命令 2012-06-01 06:35  轩脉刃  阅读(22559)  评论(1)  编辑 […]...

  7. .Net Core + 微信赋能企业级智能客服系统–学习笔记

    摘要 围绕目前需求猛增的微信及移动端企业智能客服业务,利用 .NET Core 的一系列优秀特性及 Signa […]...

  8. 纸张尺寸 – fqzhang

    纸张尺寸 A4纸(210×297) A3纸(297×420) A2纸(420×594) A1纸(594×841 […]...

随机推荐

  1. .NET Core 3.0及ASP.NET Core 3.0 前瞻

    前几天微软发布了 .NET Core 3.0 Preview 9 ,这是.NET Core 3.0 最后一个预 […]...

  2. 查看Python安装目录 — 一个命令

    pip –version...

  3. python字符串反转 高阶函数 @property与sorted(八)

    (1)字符串反转 1倒序输出 s = 'abcde' print(s[::-1]) #输出: 'edcba' […]...

  4. 《两地书》–K8s基础知识(docker容器技术)

    大家都知道历史上有段佳话叫“司马相如和卓文君”。“皑如山上雪,皎若云间月”。卓文君这么美,却也抵不过多情女儿薄 […]...

  5. SOA——面向服务的体系架构

        上一篇博文中提到了“紧耦合”的现象。怎样解决?SOA。採用面向服务的体系架构。   一、What?   […]...

  6. Linux中两个重要的基础服务

    本文服务器基于centos7,客户端Windows10 FTP FTP(File Transfer Proto […]...

  7. 阿里云、腾讯云、华为云哪个好?迄今最全面的云服务评测报告出炉

    云计算厂商到底哪家强,各家有各家的说法,今天就来跟你聊一聊,各家厂商的云计算技术到底怎么样。我选取了国内知名度 […]...

  8. 微信小程序自定义组件-下拉框

    这个是网址https://www.cnblogs.com/zjjDaily/p/9548433.html 微信 […]...

展开目录

目录导航