极空间(或者其它系统)在Docker中使用Nginx Proxy Manager(NPM)建立反向代理 以及 生成https的SSL证书,可直连IPV6,各种踩坑记录

首先拉取镜像 chishin/nginx-proxy-manager-zh

kbpwt0be.ss3.png

创建容器,你这样设置

000a4y00.eee.png

qex53g2t.vkq.png

然后创建就行

Docker安装的本地IP为 http://192.168.5.250:5081/ , 直接访问打开管理界面

默认的登录凭证为用户名:[email protected],密码:changeme

点击 "添加代理服务" 新建一个反向代理,如图所示,必须写你内网要被代理的 IPV4的地址,和端口号

4s4vxisz.lvz.png

接着我们就需要免费申请SSL证书了,有坑的路就到了,由于我使用的是一个后缀为 .top 的域名,照网上说的很多方法去 自动申请SSL证书时会一直报错,搞了两天都没搞明白怎么回事,比如用阿里云的dns服务+ddns-go动态域名管理,申请SSL时总是通不过,后来google(做技术活,少用 "某度")了一篇,也有老外在问同样问题,大概意思是 .top的域名在使用 DNS做证书验证的时候可能会被 服务商BAN掉,OH SHIT.

行吧,我重新搞一个域名,自己手动来申请证书

随便搞台 centos7 主机,开始申请证书,用DNS的方式

centos里如果没有 certbot要先安装 yum install certbot

然后执行获取证书代码(www.admin.com 换成你自己的域名)

certbot certonly --manual --preferred-challenges dns -d www.admin.com

然后会提示你输入一个邮箱什么的,你就随便输一个吧. 后面 看到 YES NO选择的时候,通通按字母 Y

当你看到这个东西的时候,停下来,去你的域名那里作一条 TXT 的解析(注意看解析的名字会有提示的),里面的值为 那一串字母"aVus8NqEDqaAH5P24H5PZL-WfoFzeUDvyuUEHEO1Mtk",每次都不同,自己根据实际情况弄.

aucgvdvp.w5r.png

接着验证一下你的DNS验证记录是否生效了

yum install bind-utils #如果没有nslookup就执行这个,有了就不用执行

nslookup -q=TXT _acme-challenge.www.admin.com

解析成功后你就反回到之前的申请窗口按回车,不出意外的话(当然经常是有意外的),就能取得证书文件

xeh3gib3.zom.png

他提示的 证书保存位置(是一个链接文件,相当于快捷方式)

/etc/letsencrypt/live/www.admin.com

证书保存位置(实际位置)

/etc/letsencrypt/archive/www.admin.com

接下来你去把那几个证书文件下载下来(实际位置)

ufn11sjq.h5r.png

你会得到这么5个文件,这5文件意思是

文件名 文件作用
cert1.pem 服务端证书(无用)
chain1.pem 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书(无用)
fullchain1.pem 包括了cert.pem和chain.pem的内容(有用)
privkey1.pem 证书的私钥(有用)
README 一个说明书,(无用)

对你有用的玩艺儿是 fullchain1.pem 和 privkey1.pem,千万不要用 cert1.pem,要不然你用电脑访问有可能是正常的,但是你用手机一看,嘿,他可能会给你报这个错

Request Failed: SSLHandshakeExceptionjava.security.cert.CertPathValidatorException:Trust anchor for certification path not found

就问你服不服,说人话意思就是,你这证书可能不完整,反正就是个半成品

好了,现在证书也搞到手了,去NPM里面,把它绑定到指定域名里就行

lqi11c3e.qkb.png

vzlva0jo.w01.png

证书上传搞定,下一步和域名进行绑定

mchjfc5o.2yo.png

编辑你的域名,去SSL那里选择刚才你创建的证书即可

踩坑结束

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

70 − 64 =