Https的艰辛历程

前言

话说漂亮的博客出现了,在我的路由里,真是不可思议,路由成服务器了。

Frp建成后,自己的域名可以外网直接访问博客,不用域名+端口,这要感谢IOIOX.COM提供免费的frp服务器才能做到。

现在,还有一个目标就是时下流行的Https协议访问了。


过程

这个过程可谓艰辛,博主不懂编程,不懂代码,这一路都是提着拐杖瞎碰着走过来的。曾经想放弃过……

这过程其实主要两步:

  1. 获取域名证书
  2. 配置SSL

1.获取域名证书

我的域名商不像腾讯、阿里等有提供免费证书下载。我们得自己寻找免费证书。

免费证书主要参照ioiox.com的acme.sh模式自动申请的,很详细。
acme.sh自动部署申请免费域名证书

证书申请过程
官方查询:


得到API Token 如:“51xxxxxxxxxxxxxxxxxxxxca8”

接下来安装acme.sh

wget -O -  https://get.acme.sh | sh

接下来进入acme.sh目录:

cd ~/.acme.sh

执行保存Token

export Namesilo_Key="51xxxxxxxxxxxxxxxxxxxxca8"

开始执行申请证书命令
单域名

~/.acme.sh/acme.sh --issue --dns dns_namesilo --dnssleep 900  -d cntna.com -d *.cntna.com

多域名

~/.acme.sh/acme.sh --issue --dns dns_namesilo --dnssleep 900  -d cntna.com -d *.cntna.com -d nzdex.com -d *.nzdex.com

激动的时刻到了,直到出现四五行绿色文字,告诉我们,carts key 存在哪里
这部容易出错,特别是国外域名商,Token连接容易中断,如果这样就再执行上面的申请命令,不必再执行保存Token这一步了。
证书就下载完了!
开始执行安装命令

~/.acme.sh/acme.sh --installcert -d cnvc.top \
--key-file /opt/etc/ssl/cnvc.top.key \
--fullchain-file /opt/etc/ssl/cnvc.top.cer \
--reloadcmd     "nginx -s reload"

后面配置nginx SSL时证书路径就按上面的路径填写

证书申请完成了!


2.配置SSL

接下来就是服务器上部署SSL了,酸甜苦辣都在这里

我有两个路由器,而博客安装在第二个路由里。虽然用frp穿透,但路由刷的是H大的padavan系统,里面的php环境是Onmp一键安装而成的。里面的nginx路径与百度搜索的配置教程皆不同,没找到一篇padavan路由里nginx设置SSL的。

所以就百度来百度去,大多数都说在nginx.conf里面修改,可在里面也没看到listen 80的,里面也改了,重新加载nginx总是错误!后来看到nginx下的vhost文件夹下的default.conf和Typecho.conf一个是默认网页的配置文件,一个是我博客的配置文件。里面就有listen字样,我想应该在里面修改。就开始复制网上的SSL配置代码,怎么复制,重新加载就是过不了,这样那样的错误几乎每次都有,修改来修改去就是不行。搞了一个星期,搞不了,干脆算了!

休息了一天,看看电视。
看到Typecho这么漂亮,frp有免费服务器,整个域名访问顺畅,就差这个Https,怎么也要搞下来!

就开始又百度了……

反正复制SSL代码试验耗费太多时间,每次都出错,老是提示:无法与服务器建立安全的连接!

自己都不耐烦了!怀疑代码是否正确,怀疑端口443是否被截了,怀疑证书是否正确,怀疑frp设置是否正确,怀疑nginx是否能配置SSL,这五个环节。到底哪里错了?

电视看完,心情平静了许多,无聊又想起这个该死的https!继续百度看文章,一边想着这五个环节如何判断正确与否。


证书:又百度了许多关于证书的文章,cer要使用fullchain.cer,里面有两段密码。
端口:想到了路由80、443占了,所以把路由管理端口80改为880,443改为4443,这样腾出80、443端口。
Frp:看到别人分别设置HTTP/HTTPS端口。
Nginx:确定了上面的代码,在nginx/vhost/default.conf里面修改。

无法与服务器建立安全的连接!

百度上有人说到,端口有没有开?证书有没有错误?
我先把两个路由的管理端口80和443都改了。有人是可以用命令测试有没有连接443端口:wget https://nzdex.com
返回信息大概是,连接443成功,但什么握手失败!(百度查了说会不会是没有调用证书)

哈,彼岸的灯塔亮了!看来是代码错误!

因为代码已经锁定了两篇与我路由最相似的:
K3 梅林 安装ONMP后,如何用HTTPS访问 内建的网站
K3内网配合frp和onmp完美打造成家用web服务器配置SSL和http自动跳转https
确定这就是正确的了(别笑我,我不懂编程不懂代码):

 server {
 listen 443 ssl;
 server_name localhost;
 root  /opt/wwwroot/Typecho/;
 index index.html index.htm index.php tz.php;
 ssl on;
 ssl_certificate   /koolshare/acme/covv.top/covv.top.pem;
 ssl_certificate_key  /koolshare/acme/covv.top/covv.top.key;
 ssl_session_timeout 5m;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 location / {
 root  /opt/wwwroot/Typecho/;
 include       /opt/etc/nginx/conf/php-fpm.conf;
 include     /opt/etc/nginx/conf/typecho.conf;
 #otherconf
 }
 }
 server { 
 listen 90; 
 server_name nzdex.com; 
 rewrite ^(.*)$ https://$host$1 permanent;
 }

最后昨晚在上面的代码重新加载时,对每一条错误反馈进行百度搜索,然后修改,发现都是格式错误,多个空格就不行了!每一行代码都靠左顶格。中间的空格进行回删再空一格。
调整后的代码为:

 server{
 listen 443 ssl;
 server_name localhost;
 root /opt/wwwroot/Typecho/;
 index index.html index.htm index.php tz.php;
 ssl_certificate /opt/etc/nginx/conf/cnvv.cer;
 ssl_certificate_key /opt/etc/nginx/conf/cnvv.key;
 ssl_session_timeout 5m;
 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 location /{
 root /opt/wwwroot/Typecho/;
 include /opt/etc/nginx/conf/php-fpm.conf;
 include /opt/etc/nginx/conf/typecho.conf;
 #otherconf
 }
 }
 server { 
 listen 90; 
 server_name nzdex.com; 
 rewrite ^(.*)$ https://$host$1 permanent;
 }

FRP设置http和https端口分别为90和443
nginx -s reload 通过!
域名测试,锁出现了!悲喜交加!

后来发现:其实应该在vhost/Typecho.conf改才对,这样vhost下的每个站点都可以修改启用Https。SSL端口随便写,只要和frp客户端的https端口一致就行。如:上面的443和90要对应frp是:

[webcnvvhttps]
type = https
local_ip = 192.168.2.1
local_port = 443
custom_domains = nzdex.com
#host_header_rewrite = nzdex.com
# ====================
[webcnvv]
type = http
local_ip = 192.168.2.1
local_port = 90
custom_domains = nzdex.com
#host_header_rewrite = nzdex.com
# ====================

3.结语

OK.完工。激动不已,感慨万千。

Last modification:March 29th, 2020 at 03:22 pm

Leave a Comment