acme.sh介绍:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E

github:https://github.com/Neilpang/acme.sh

1. 安装 acme.sh

安装非常简单,就一个命令,建议使用root账户进行安装,以下演示都是root账户。

curl  https://get.acme.sh | sh

安装所在的目录为 ~/.acme.sh/

创建一个别名方便使用

alias acme.sh=~/.acme.sh/acme.sh

安装时已经为系统创建crontab定时任务,续签证书的调度任务。可以通过 crontab -l 查看,如下

自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。

安装过程中所有的修改都限制在安装目录~/.acme.sh/中,因此不用担心对已有的系统任何功能和文件污染。

2. 生成SSL证书

2.1

假设为 www.mydomain.com 这个域名配置证书。

在生成之前需要先安装 socat ,使用如下命令安装

mkdir ~/src
cd ~/src
wget http://www.dest-unreach.org/socat/download/socat-1.7.3.0.tar.gz
tar -xf socat-1.7.3.0.tar.gz
cd socat-1.7.3.0
./configure --prefix=$HOME
make
make install

下面开始正式生成ssl证书,生成证书的方式有多种,可以参考:https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert

在此生成证书的方案选择standalone方式(需要80端口不被占用,acme.sh 自己作为一个web服务临时监听80端口完成证书验证),由于此时服务器(nginx)已经占用80端口

通过咨询acme.sh作者续签问题,注:由于使用nginx服务,后面会一直占用80端口,如下:

所以最终我们的生成证书命令为:

acme.sh --issue -d www.mydomain.com --standalone --pre-hook "/nginx/nginx/sbin/nginx -s stop" --post-hook "/nginx/nginx/sbin/nginx"

其中 /nginx/nginx/sbin/nginx 为自己服务器中nginx执行文件

成功之后,生成的证书目录在:/root/.acme.sh/www.mydomain.com

2.2 续签相关

2.1中也有提到生成签名需要80端口不被占用,那么问题来了,后面服务器要启动nginx,而且需要占用80端口,所以上面的续签定时是有问题的,所以crontab定时修改如下:

crontab -e

44 3 * * * source ~/.bash_profile && ~/.acme.sh/acme.sh --issue -d www.mydomain.com --standalone --pre-hook "/nginx/nginx/sbin/nginx -s stop" --post-hook "/nginx/nginx/sbin/nginx" > /dev/null

保存即可!注:crontab定时中需要绝对路径。

3. nginx配置SSL证书

    #ssl
upstream mydomain7777 {
server 127.0.0.1:7777 weight=1;
}
server {
listen 443 ssl;
server_name www.mydomain.com; location / {
proxy_pass http://mydomain7777;
proxy_redirect default;
client_max_body_size 10m; #表示最大上传10M,需要多大设置多大。
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Scheme $scheme;
} ssl_certificate /root/.acme.sh/www.mydomain.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/www.mydomain.com/www.mydomain.com.key; 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;
}

还可以配置http强制转https(可选)

    server {
listen 80;
server_name www.mydomain.com;
rewrite ^(.*) https://$server_name$1 permanent;
}

注:proxy_set_header X-Forwarded-Scheme $scheme; 配置是为了程序中获取到请求协议(http或者https),以java为例获取代码如下:

String scheme = request.getHeader("X-Forwarded-Scheme");
if (scheme == null) {
scheme = request.getScheme();
}

参考博客:

1. https://my.oschina.net/u/3042999/blog/1858891

2. https://community.webfaction.com/questions/21246/trying-to-use-lets-encrypt-using-acmesh-need-socat-tools

另外有dns生成ssl证书的方式,请参考 https://www.cnblogs.com/007sx/p/11379966.html

centos7利用acme.sh获取Let's Encrypt的永久免费ssl证书并配置网站域名https访问的更多相关文章

  1. IIS - 自动申请、部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议)

    IIS - 自动申请.部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议) 2017-12-19发布:hangge阅读:161   一.HTTPS 协议介绍 1,什么是 HTTP ...

  2. docker获取Let's Encrypt永久免费SSL证书

    一 起因 官方的cerbot太烦了,不建议使用 还不如野蛮生长的acme.sh,而这里介绍docker运行cerbot获取Let's Encrypt永久免费SSL证书 二 选型 cerbot的证书不会 ...

  3. 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题

    最近需要https这里看到一份不错的博客,收录一下! Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust ...

  4. 申请Let's Encrypt永久免费SSL证书

    Let's Encrypt简介 Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust.EFF等组织人员发起 ...

  5. 申请Let’s Encrypt永久免费SSL证书过程教程及常见问题

    配置证书https://easy.zhetao.com/   虽然目前Let’s Encrypt免费SSL证书默认是90天有效期,但是我们也可以到期自动续约,不影响我们的尝试和使用,为了考虑到文章的真 ...

  6. 使用Let’s Encrypt创建nginx免费SSL证书

    资料参考: https://www.freehao123.com/top-8-free-ssl-cert/   八大免费SSL证书-给你的网站免费添加Https安全加密 https://www.fre ...

  7. centos 下安装 Let’s Encrypt 永久免费 SSL 证书

    功能 https证书,免费版,每三个月续签一次,可以用过脚本自动续签 安装 ssh登录到域名配置所在的主机(nginx,apache等) 安装git yum -y install git 输入 git ...

  8. 使用acme.sh申请&自动续期LetsEncrypt免费SSL证书(转)

    一.简介 LetsEncrypt是一个免费.自动.开放的证书颁发机构.acme.sh 实现了 acme 协议, 可以从 LetsEncrypt 生成免费的证书. 本文介绍如何使用acme.sh来签发并 ...

  9. 使用acme.sh自动申请、续期、部署免费的SSL证书

    参考文档:https://github.com/acmesh-official/acme.sh 一个使用纯shell操作的免费SSL证书申请部署工具. 免费的SSL证书由以下CA机构提供: ZeroS ...

随机推荐

  1. jvm内存结构及对象漫谈(较全)

    最近想整理一下GC相关的知识和经验,在整理之前先整理一下jvm的内存结构,后续会持续更新. jvm内存结构重要由两部分组成:线程共享区域与线程私有区域,如下图所示: 其中方法区和堆为线程共享区域,栈与 ...

  2. ESP8266 AT指令开发(基于STC89C52单片机): 硬件使用说明

    实物图 硬件说明 开发板板载说明: 1.主控芯片: STC89C52 2.Wi-Fi模块: ESP8266 3.温湿度传感器: DHT11 4.液晶屏: IIC OLED 5.继电器: 220V 10 ...

  3. 【2019.7.16 NOIP模拟赛 T1】洗牌(shuffle)(找环)

    找环 考虑每次洗牌其实是一次置换的过程,而这样必然就会有循环出现. 因此我们直接通过枚举找出每一个循环,询问时只要找到环上对应的位置就可以了. 貌似比我比赛时被卡成\(30\)分的倍增简单多了? 代码 ...

  4. DP问题(2) : hdu 1421

    题目转自hdu 1421,题目传送门 题目大意: 给你n个物品,你要搬走2*k个(也就是搬k次) 每次搬需要花费v,v=(ai-aj)2 (i表示左手拿的物品重量,j表示右手拿的物品的重量) 要求所有 ...

  5. [LeetCode] 889. Construct Binary Tree from Preorder and Postorder Traversal 由先序和后序遍历建立二叉树

    Return any binary tree that matches the given preorder and postorder traversals. Values in the trave ...

  6. java十题

    这是我收集的10个最棘手的Java面试问题列表.这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题.你可能知道这些棘手的 Java 问题的答案,或者觉得这些不足以挑战你的 Jav ...

  7. 计时器StopWatch的几种写法

    下面提供三种计时器的写法供大家参考,大家可以自行选择自己钟爱的使用. 写法一(Spring 包提供的计时器): import java.text.NumberFormat; import java.u ...

  8. python 做词云图

    #导入需要模块 import jieba import numpy as np import matplotlib.pyplot as plt from PIL import Image from w ...

  9. 『optimization 动态规划』

    optimization Description \(visit\_world\) 发现有些优化问题可以用很平凡的技巧解决,所以他给你分享了这样一道题: 现在有一个长度为N的整数序列\(\{a_i\} ...

  10. gentelella 开源后台使用记录

    前言 gentelella是一款开源后台,github地址是:https://github.com/ColorlibHQ/gentelella 使用 表单验证 parsley 验证 在form.htm ...