使用 Docker 生成 Let’s Encrypt 证书
概念
- 什么是 Container ?
https://www.docker.com/resources/what-container
https://www.docker.com/why-docker - 什么是 Let’s Encrypt ?
Let’s Encrypt is a free, automated, and open Certificate Authority.
安装
安装Docker
获取 images
docker pull linuxserver/letsencrypt
主角
详细介绍及使用方法:
hub.docker.com/r/linuxserver/letsencrypt
github.com/linuxserver/docker-letsencrypt
简要中文阐述
此镜像包含了Nginx服务器、反向代理、PHP和用于生成或续签证书的letsencrypt client,也包含了用于防御入侵的fail2ban。
本文使用的是http
的方式请求的证书,故使用tls-sni
或 dns
方式的读者,请参考【详细介绍及使用方法】链接里的原文
使用方法
在<>
中加入合适的值即可。
docker run \
--cap-add=NET_ADMIN \
--name=letsencrypt \
-v <path to data>:/config \
-e PGID=<gid> -e PUID=<uid> \
-e EMAIL=<email> \
-e URL=<url> \
-e SUBDOMAINS=<subdomains> \
-e VALIDATION=http \
-p 80:80 -p 443:443 \
-e TZ=Asia/Shanghai \
linuxserver/letsencrypt
参数介绍
参考来自github.com,有修改。
-p 80 -p 443
- 端口号-v /config
- 所有的配置文件及网站根目录路径(笔者:只需指定可读写路径即可,容器生成时会在此路径生成一堆文件),下文<your-path>
指的就是这个。-e URL
- 顶级域名,比如test.com
-e SUBDOMAINS
- 二级域名 比如www,ftp,cloud
多个二级域名用“,
”隔开,http
方式不支持泛域名,如想使用,请使用dns
方式,本文不做介绍。-e VALIDATION
- letsencrypt 验证所使用的方法-e PGID
for GroupID - 详情见下面说明,不可使用root的GID
-e PUID
for UserID - 详情见下面说明,不可使用root的UID
-e TZ
- timezone ie.Asia/Shanghai
User / Group 标识
有时在使用数据卷( -v标志)时,主机操作系统和容器之间可能会出现权限问题。 我们通过允许您指定用户PUID和组PGID来避免此问题。 确保主机上的数据卷目录由您指定的同一用户拥有并且它能“正常工作”。
在这种情况下, PUID=1001并且PGID=1001 。 要找到你的id user ,请使用id user ,如下所示:
id <dockeruser>
运行
敲入上面的命令(docker run ....)后,首次使用需要生成DH参数,需要耐心等待啦。
查看状态
docker logs -f letsencrypt
如果看到如下所示就大功告成啦。
......
......
......
Server ready
那么,申请的证书在哪?
在输出的状态中可知:证书存在于<your-path>
/config/etc/letsencrypt/live/<domain> 中,至于里面的证书都是用来干嘛的,请参考该目录下的README。本文不做描述
反向代理
该镜像默认的设置已经对反向代理做了优化(感谢大佬),最简单的方式就是找到<your-path>
/config/nginx/proxy-confs下适合自己的配置文件,去掉.sample
即可。但是笔者发现,好像这里面的配置不适合所有情况,故还要自己写配置文件.......
注意:反向代理分为两种方式,第一种是通过同一域名不同路径作为反向代理,第二种是不同域名指向不同虚拟主机作为反向代理。本文使用的第二种,详情可以看<your-path>
/config/nginx/proxy-confs/_readme
切换路径
cd <your-path>/config/nginx/site-confs
不要理会 default , 当然,直接修改里面的文件也行,笔者为了简洁,直接新建文件
创建文件 <your-domain>
比如
touch test.com
修改文件
vi test.com
文件内容如下
server {
listen 443 ssl;
server_name <your-domain>;
charset utf-8;
include /config/nginx/ssl.conf;
client_max_body_size 0;
location / {
include /config/nginx/proxy.conf;
proxy_pass <Web-OR-ContainerName>;
}
}
注意<your-domain>
中填写域名,<Web-OR-ContainerName>
中要填写反向代理的网址或者是容器名称,比如说proxy_pass http://gogsWeb:3000/;
,至于容器之间如何互联,请看下节。如果需要创建多个反向代理,就如法炮制,再创建文件,再新建个虚拟主机,以server_name区分即可。
容器互联
docker network create cert_network
docker network connect cert_network <other-container>
docker network connect cert_network letsencrypt
注意,需要互联的容器建立时不需要指定'-P'即端口与主机端口绑定!!!只需要确保容器内端口开放即可。
是时候结束一切了
docker restart letsencrypt
参考
https://github.com/linuxserver/docker-letsencrypt
https://hub.docker.com/r/linuxserver/letsencrypt/
https://letsencrypt.org/
https://docs.docker.com/engine/reference/commandline
http://nginx.org/en/docs/http/configuring_https_servers.html
https://www.zybuluo.com/phper/note/89391
https://segmentfault.com/a/1190000009583997
https://blog.csdn.net/gripleaf/article/details/8552324
声明
本文采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可,发表在CSDN和博客园,欢迎读者转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接!请读者/爬虫们尊重版权
使用 Docker 生成 Let’s Encrypt 证书的更多相关文章
- 使用 lego生成 Let's Encrypt 证书
1. 工具 https://github.com/xenolf/lego 2. 使用 命令生成新的 lego --email="foo@bar.com" --domains=& ...
- 使用Let's Encrypt 生成免费的ssl证书的详细过程
参考连接:https://github.com/diafygi/acme-tiny 中文:https://hacpai.com/article/1487899289204 目前我了解可以生成免费证书的 ...
- 使用Let’s Encrypt生成免费的SSL证书
SSL(安全套接层,Secure Sockets Layer),及其继任者 TLS (传输层安全,Transport Layer Security)是为网络通信提供安全及数据完整性的一种安全协议.TL ...
- Pandorabox固件路由器上申请Let's Encrypt证书,为内网里的多个web服务提供SSL支持
对于家中宽带有公网IP的用户,有时我们需要将路由器内部网络的某些web服务通过端口转发暴露到外网(例如NAS远程访问),但HTTP是明文传输,有被监听的风险:如果在NAS上使用自签名证书,再端口转发, ...
- Linux下使用acme.sh申请和管理Let’s Encrypt证书
关于Let's Encrypt 免费SSL证书 Let's Encrypt 作为一个公共且免费 SSL 的项目逐渐被广大用户传播和使用,是由 Mozilla.Cisco.Akamai.IdenTrus ...
- JAVA调用 keytool 生成keystore 和 cer 证书
keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体( ...
- 用Keytool和OpenSSL生成和签发数字证书
一)keytool生成私钥文件(.key)和签名请求文件(.csr),openssl签发数字证书 J2SDK在目录%JAVA_HOME%/bin提供了密钥库管理工具Keytool,用于管理密 ...
- 使用CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件
要安装kubernetes最新版集群,https://github.com/opsnull/follow-me-install-kubernetes-cluster 这个文档必须要研习一下了. 以下实 ...
- Linux下生成openssl自签名证书
校验证书是否被 CA 证书签名,正确的情况: $ openssl verify -CAfile /etc/kubernetes/cert/ca.pem /etc/kubernetes/cert/kub ...
随机推荐
- V语言横空出世,C/C++/Java/Python/Go地位不保
V语言已在github正式开源,目前已收获近9000星,引发开发者的强烈关注. V语言到底是怎样一门语言?已经有了C/C++/Java/Python/Go..., 我们还需要另外一门语言吗? 先看看V ...
- linux命令积累
lsof -i: //根据端口号查相关信息 //杀进程 ps -ef|grep appName //根据进程名称查找相关信息 grep -r "关键词" 目录 //在制定目录下根据 ...
- python 微信红包生成器
#红包生成思路#200 块钱 10个红包#0-200 的一个轴,随机取9个点,分成10段, 每一段的值表示一个红包的大小 #把输入的 money值 * 100 拿到的数值就是分, 不用再考虑单位是元的 ...
- 《Python 3网络爬虫开发实战中文》超清PDF+源代码+书籍软件包
<Python 3网络爬虫开发实战中文>PDF+源代码+书籍软件包 下载: 链接:https://pan.baidu.com/s/18yqCr7i9x_vTazuMPzL23Q 提取码:i ...
- 基于SpringBoot从零构建博客网站 - 设计可扩展上传模块和开发修改头像密码功能
上传模块在web开发中是很常见的功能也是很重要的功能,在web应用中需要上传的可以是图片.pdf.压缩包等其它类型的文件,同时对于图片可能需要回显,对于其它文件要能够支持下载等.在守望博客系统中对于上 ...
- .Net Core 学习新建Core MVC 项目
一.新建空的Core web项目 二.在Startup文件中添加如下配置 1. 在ConfigureServices 方法中添加 services.AddMvc();MVC服务 2. app.Use ...
- dockerfile 制作镜像
# Set the base image to UbuntuFROM ubuntu # File Author chenghanMAINTAINER chenghan ################ ...
- SSAS Tabular关系设计--时间最小粒度维度
这两天设计的T2模型,涉及日期维度表中粒度的选择,因为一般实际销售达成ACT表是按天为标准记录的,而销售目标表TGT一般是按月记录,特此总结一下建模技巧. 数据仓库: 时间维度表,最小粒度为DATE. ...
- (CVE-2017-10271)weblogic12.1.3.0漏洞测试与打补丁过程
1.漏洞测试 搭建完成weblogic12.1.3.0后,开始用工具测试 点击connect,右下角显示connected,说明已连接→说明漏洞存在 CMD输入:ls ,然后点击Execute执行 ...
- 深度解密Go语言之channel
目录 并发模型 并发与并行 什么是 CSP 什么是 channel channel 实现 CSP 为什么要 channel channel 实现原理 数据结构 创建 接收 发送 关闭 channel ...