zoukankan      html  css  js  c++  java
  • nginx 服务器自签https协议 (Let’s Encrypt)

    一.检测Python以及git

    #检查Python的版本是否在2.7以上
    python -v //2.7版本
    如果没有安装Python的话,执行以下命令进行安装(如果检测到已安装则略过)
    #安装python所需的包
    yum install zlib-devel
    yum install bzip2-devel
    yum install openssl-devel
    yum install ncurses-devel
    yum install sqlite-devel
    #获取到Python
    cd /usr/local/src
    wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz
    #解压Python2.7.12
    tar -xvf Python-2.7.12.tar.xz
    #编译python
    cd Python-2.7.12/
    ./configure --prefix=/usr/local/python2.7
    make && make install
    #建立link
    ln -s /usr/local/python2.7/bin/python2.7 /usr/local/bin/python
    #解决系统 Python 软链接指向 Python2.7 版本后,因为yum是不兼容 Python 2.7的,所需要指定 yum 的Python版本
    # vim /usr/bin/yum 
    将头部的
    #!/usr/bin/python
    改成
    #!/usr/bin/python2.6.6
    检测Git指令
    
    #检查系统是否安装git
    git  --version
    如果没有安装Git的话,执行以下命令进行安装(如果检测到已安装则略过)
    
    #git 安装
    yum install git

    二. 快速获取Let's Encrypt免费SSL证书

    #获取letsencrypt
    git clone https://github.com/letsencrypt/letsencrypt
    #进入letsencrypt目录
    cd letsencrypt
    #生成证书  --email后填写自己的邮箱   -d 后面填写需要配置证书的域名(支持多个哦)
    ./letsencrypt-auto certonly --standalone --email 邮箱 -d 域名一 -d 域名二

    ./letsencrypt-auto certonly --standalone --email test@gmail.com -d test.come -d www.test.com
    #出现错误的话:

    Problem binding to port80: Could not bind to IPv4 or IPv6.

    则原因是 nginx 占用了80端口,输入 service nginx stop。然后再次执行证书安装命令,即可顺利安装。 安装完毕后,输入 service nginx start,重启 nginx 服务
    Let's Encrypt免费SSL证书获取与应用
    在完成Let's Encrypt证书的生成之后,我们会在"/etc/letsencrypt/live/hxkj.vip/"域名目录下有4个文件就是生成的密钥证书文件。
    
    cert.pem  - Apache服务器端证书
    chain.pem  - Apache根证书和中继证书
    fullchain.pem  - Nginx所需要ssl_certificate文件
    privkey.pem - 安全证书KEY文件

    ullchain.pemprivkey.pem两个证书文件配置到Nginx环境中。找到nginx.conf(做好备份并修改):

    # nginx.conf
    server { listen
    443; server_name test.com www.test.com; ssl on; root /usr/share/nginx/html; ssl_certificate "/etc/letsencrypt/live/hxkj.vip/fullchain.pem"; ssl_certificate_key "/etc/letsencrypt/live/hxkj.vip/privkey.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }

     OK,到这里就完成了使用Let's Encrypt免费证书的方法配置https协议,只有90天

    编写shell脚本,自动续签
    执行以下命令,在"/etc/letsencrypt/live/hxkj.vip/"域名目录下创建脚本,方便管理
    
    vim /etc/letsencrypt/live/hxkj.vip/updatessl.sh    //创建一个名字为updatessl的脚本
    然后在脚本里添加如下代码
    
    #!/bin/sh
    /usr/local/src/Python-2.7.12/letsencrypt/certbot-auto renew --force-renew --pre-hook "service nginx stop" --post-hook "service nginx start"
    #第一行是指此脚本使用/bin/sh 来执行
    #第二行中--force-renew参数代表强制更新
    退出并保存,然后给脚本添加可执行权限
    
    // 这里的文件路径填写你自己的文件路径
    chmod +x /etc/letsencrypt/live/hxkj.vip/updatessl.sh
    2.4.2 创建定时任务
    打开crontab文件
    
    crontab -e
    然后在文件末尾添加一行以下内容
    
    0  0  28 *  * root /etc/letsencrypt/live/hxkj.vip/updatessl.sh   //我这里代表每月28号更新一次证书文件,文件路径填写你自己的文件路径
    具体格式如下:
    
    Minute Hour Day Month Dayofweek command
    分钟 小时 天 月 天每星期 命令
    
    每个字段代表的含义如下:
    
    Minute 每个小时的第几分钟执行该任务
    Hour 每天的第几个小时执行该任务
    Day 每月的第几天执行该任务
    Month 每年的第几个月执行该任务
    DayOfWeek 每周的第几天执行该任务
    Command 指定要执行的程序
    
    在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
    
    记得重启crontab服务哦。好了,自动更新证书已经配置完了,再也不用担心证书过期啦!这也是我推荐使用这种方式生成证书的原因之一,没办法,懒啊~~~
  • 相关阅读:
    【算法•日更•第二十七期】基础python
    【算法•日更•第二十六期】非常基础的数论
    【算法•日更•第二十五期】万能算法(一):搜索+?
    【算法•日更•第二十四期】二分查找和二分答案的区别
    Hadoop学习9--动态增加datanode
    java-Spring-1
    Hadoop学习6--里程碑式的开始之执行第一个程序wordcount
    Hadoop学习5--配置本地开发环境(Windows+Eclipse)
    Hadoop学习4--安装Hadoop
    Hadoop学习3--安装ssh服务
  • 原文地址:https://www.cnblogs.com/jum-bolg/p/13757578.html
Copyright © 2011-2022 走看看