centos7利用acme.sh获取Let's Encrypt的永久免费ssl证书并配置网站域名https访问
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
另外有dns生成ssl证书的方式,请参考 https://www.cnblogs.com/007sx/p/11379966.html
centos7利用acme.sh获取Let's Encrypt的永久免费ssl证书并配置网站域名https访问的更多相关文章
- IIS - 自动申请、部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议)
IIS - 自动申请.部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议) 2017-12-19发布:hangge阅读:161 一.HTTPS 协议介绍 1,什么是 HTTP ...
- docker获取Let's Encrypt永久免费SSL证书
一 起因 官方的cerbot太烦了,不建议使用 还不如野蛮生长的acme.sh,而这里介绍docker运行cerbot获取Let's Encrypt永久免费SSL证书 二 选型 cerbot的证书不会 ...
- 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题
最近需要https这里看到一份不错的博客,收录一下! Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust ...
- 申请Let's Encrypt永久免费SSL证书
Let's Encrypt简介 Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust.EFF等组织人员发起 ...
- 申请Let’s Encrypt永久免费SSL证书过程教程及常见问题
配置证书https://easy.zhetao.com/ 虽然目前Let’s Encrypt免费SSL证书默认是90天有效期,但是我们也可以到期自动续约,不影响我们的尝试和使用,为了考虑到文章的真 ...
- 使用Let’s Encrypt创建nginx免费SSL证书
资料参考: https://www.freehao123.com/top-8-free-ssl-cert/ 八大免费SSL证书-给你的网站免费添加Https安全加密 https://www.fre ...
- centos 下安装 Let’s Encrypt 永久免费 SSL 证书
功能 https证书,免费版,每三个月续签一次,可以用过脚本自动续签 安装 ssh登录到域名配置所在的主机(nginx,apache等) 安装git yum -y install git 输入 git ...
- 使用acme.sh申请&自动续期LetsEncrypt免费SSL证书(转)
一.简介 LetsEncrypt是一个免费.自动.开放的证书颁发机构.acme.sh 实现了 acme 协议, 可以从 LetsEncrypt 生成免费的证书. 本文介绍如何使用acme.sh来签发并 ...
- 使用acme.sh自动申请、续期、部署免费的SSL证书
参考文档:https://github.com/acmesh-official/acme.sh 一个使用纯shell操作的免费SSL证书申请部署工具. 免费的SSL证书由以下CA机构提供: ZeroS ...
随机推荐
- jvm内存结构及对象漫谈(较全)
最近想整理一下GC相关的知识和经验,在整理之前先整理一下jvm的内存结构,后续会持续更新. jvm内存结构重要由两部分组成:线程共享区域与线程私有区域,如下图所示: 其中方法区和堆为线程共享区域,栈与 ...
- ESP8266 AT指令开发(基于STC89C52单片机): 硬件使用说明
实物图 硬件说明 开发板板载说明: 1.主控芯片: STC89C52 2.Wi-Fi模块: ESP8266 3.温湿度传感器: DHT11 4.液晶屏: IIC OLED 5.继电器: 220V 10 ...
- 【2019.7.16 NOIP模拟赛 T1】洗牌(shuffle)(找环)
找环 考虑每次洗牌其实是一次置换的过程,而这样必然就会有循环出现. 因此我们直接通过枚举找出每一个循环,询问时只要找到环上对应的位置就可以了. 貌似比我比赛时被卡成\(30\)分的倍增简单多了? 代码 ...
- DP问题(2) : hdu 1421
题目转自hdu 1421,题目传送门 题目大意: 给你n个物品,你要搬走2*k个(也就是搬k次) 每次搬需要花费v,v=(ai-aj)2 (i表示左手拿的物品重量,j表示右手拿的物品的重量) 要求所有 ...
- [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 ...
- java十题
这是我收集的10个最棘手的Java面试问题列表.这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题.你可能知道这些棘手的 Java 问题的答案,或者觉得这些不足以挑战你的 Jav ...
- 计时器StopWatch的几种写法
下面提供三种计时器的写法供大家参考,大家可以自行选择自己钟爱的使用. 写法一(Spring 包提供的计时器): import java.text.NumberFormat; import java.u ...
- python 做词云图
#导入需要模块 import jieba import numpy as np import matplotlib.pyplot as plt from PIL import Image from w ...
- 『optimization 动态规划』
optimization Description \(visit\_world\) 发现有些优化问题可以用很平凡的技巧解决,所以他给你分享了这样一道题: 现在有一个长度为N的整数序列\(\{a_i\} ...
- gentelella 开源后台使用记录
前言 gentelella是一款开源后台,github地址是:https://github.com/ColorlibHQ/gentelella 使用 表单验证 parsley 验证 在form.htm ...