分类
未分类

let’s fockin’ encrypt.wildcard.19.04.05

fockin’ hell

我发现vestacp早就没法自动申请let’s encrypt证书了,因为现在let’s encrypt需要一个叫做CAA的记录;而且更坑爹的是它需要的不是申请域名的CAA记录,而是你在域名服务商填ns记录的那个域名(比如你在freedns上搞了一个pingas.z0d.eu,而需要申请ssl证书的域名是snoo.pingas.z0d.eu,那么它需要的是在pingas.z0d.eu上设置CAA记录);当然更坑爹的是我上面的DNS服务器压根就不支持CAA记录,卧槽

I wtf is CAA

据我看到的一些信息,CAA记录是一种控制哪些CA可以向这个域名颁发ssl证书的dns记录,现在的规定是CA在颁发证书前必须检查这个域名的CAA记录,看它有没有在被允许的列表里面,如果允许才能颁发;let’s encrypt是自动脚本运作的,当然支持这个设置,尽管我之前折腾trustasia证书的时候它没有检查

CAA记录的格式通常是0 issue "letsencrypt.org",第一项可选0或255,通常是0;第二项是tag,可用issue(允许这个CA的所有证书,包括wildcard)、issuewild(只允许wildcard)和iodef(好像是如果列表外CA试图颁发证书会引起警报,会发到指定的邮箱或url,尽管我不知道这个机制是怎么实现的);最后一项当然就是允许的CA了,需要加双引号。如果申请LE的证书的话就只需要这样填了

II let’s encrypt wildcard

如果只是搞LE单域名证书的话,只需要设置好CAA就行了,剩下的事情vestacp搞定;但我们要试下LE的wildcard证书,所以只能用certbot来搞了;再说了目前哪个域名需要设置CAA记录还是比较迷的,对freedns的域名来说需要设置的域名通常是填ns记录的域名,而对godaddy搞出来的子域名来说需要填在那个子域名上,卧槽(当然godaddy不支持ns记录,yashila);通过certbot我们看下错误信息就知道CAA记录该怎么设了(手动滑稽

我们以snoo.pingas.z0d.eu为例,命令行是./certbot-auto certonly --manual -d *.snoo.pingas.z0d.eu -d snoo.pingas.z0d.eu --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory

wildcard只能用dns来验证,而且需要添加两条txt记录,需要按照严格的先后顺序添加;如果之前添加的申请失败了,需要删掉重新添加,修改值是不成的;最后就是添加CAA了,然而我的VPS上的vestacp不支持添加CAA,bind版本也太旧,此时需要上工具了:https://sslmate.com/caa/

按照页面指示设置完后拉到最后:

Legacy Zone File (RFC 3597 Syntax)

For BIND <9.9.6, NSD <4.0.1, Windows Server 2016

下面的东西粘贴到vesta对应站点的zone文件里(一般为/home/<username>/conf/dns/<site>.db),如果没有这个域名也不用创建网站,只需要添加一个dns域名就可以了;然后将它那个里面的第一列域名替换成@就可以了,至少因为别的记录也是如此;接下来service named restart即可。

然后就可以让certbot申请了,之后会保存成两个文件,其中的fullchain.pem文件第一行对应vestacp的证书一栏,第二行对应CA证书一栏;privkey.pem当然就是private key了,然后就能用LE的证书了(当然我估计将这两个文件复制到nginx配置文件下面然后改成vesta nginx需要的名称然后手动重启应该也行);如果这时在vestacp里再建一个nein.snoo.pingas.z0d.eu的话,将这三项也填进去就能用了,这就是wildcard证书的用法;其实在这种情况下应该申请证书的是*.pingas.z0d.eu而不是*.snoo.pingas.z0d.eu(手动滑稽

至于续期,就别想用vesta自动续期了,倒是既然可以通过改zone文件的方式加DNS记录的话,也许这玩意可以脚本化,我就不折腾了

另外友情提醒,LE有ratelimit,如果连续失败五次的话只能等一个小时再申请了,除非

mv /etc/letsencrypt/accounts /etc/letsencrypt/accounts.off
./certbot-auto register
mv /etc/letsencrypt/accounts.off/acme-v01.api.letsencrypt.org/directory/*  /etc/letsencrypt/accounts.off/acme-v01.api.letsencrypt.org/directory/

(手动滑稽

III vesta and nas

如果有vesta的话,其实搞内网穿透会更方便,我们之前申请的wildcard证书就能派上用场了,只需要用子域名新建一个站点,然后改其配置文件,将

    location / {
        proxy_pass      http://127.0.0.1:8080;
        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff|css|js|htm|html|ttf|otf|webp|woff|txt|csv|rtf|doc|docx|xls|xlsx|ppt|pptx|odf|odp|ods|odt|pdf|psd|ai|eot|eps|ps|zip|tar|tgz|gz|rar|bz2|7z|aac|m4a|mp3|mp4|ogg|wav|wma|3gp|avi|flv|m4v|mkv|mov|mpeg|mpg|wmv|exe|iso|dmg|swf)$ {
            root           xxxx;
            access_log     xxxx combined;
            access_log     xxxx bytes;
            expires        max;
            try_files      $uri @fallback;
        }
    }
}

改成

    location / {
        proxy_pass      http://127.0.0.1:<your nas port in ssh -R>;
    }

,重启nginx,就是这么简单,https部分同理,我发现我甚至连nas那边的证书都不用重新设置

分类
未分类

a new phone.19.04.02

O wtf

我的主板又坏了,这次连内存自检都没法开始,只好再换回R4E,清了一顿灰之后终于可以较为稳定地运行了,没有PCIe冲突,玩游戏听歌操作SAS硬盘可以同时进行,当然它还是蓝屏了至少三次——直到我最终决定拔下四根内存条,只保留一组四通道。卧槽现在只有32GB内存可用了

但其他方面折腾得不错,NAS已经换了内存硬盘和电源,至少在我想起来把那块服务器主板拿去送修并组个万兆软路由之前,那台只需要145的1250W长城矿龙暂时用来接NAS。这矿龙也是个坑爹玩意,尽管也是看上去像是全模组,但它和振华P1000的全模组程度差远了,振华除了主板CPU外的所有电源线都能接相同的接口,单路输出基本没有上限,而这矿龙PCIe电源线和接硬盘的电源线使用的模组接口居然长不一样,而PCIe的接口真的有八条线,就和它的最大输出相数一样,恕我直言这可不一点都不像是模组电源,这只不过是在非模组电源上接了一个能插拔的接口而已。所以,它的PCIe一路最多只有240W输出,接一个1080ti(8+8)还是需要两条线。它送了五条PCIe线,这样只能插两块半1080ti了,也许还能带个P106做CUDA运算,鬼知道

既然它都叫长城矿龙了,那么在它寄过来之前肯定是接着大量1060级别的卡挖矿,这五条PCIe线基本上对应着五块1060;CPU插座有两条,看来它和P1000一样支持16相CPU供电,但它只有一条线出来,所以最多只接8相了,对矿机主板来说4相就足够用,J1900也是如此;E5 2670基本上也只需要8相,尽管R4E上最多可以接12相;反正最后我只留下一条主板线、一条CPU线和一条大D线,拆掉了NAS的原装电源穿了进去,剩下的线扔箱子里了。

至此矿渣三件套我居然有了两件,至于P106就算了,这玩意随时都会翻车,玩游戏别想了,哪怕做CUDA也感觉不怎么样,首先我不是科学计算玩家,其次我不觉得waifu2x可以使用两块显卡并行运算;再说了我现在更需要的是比Titan/1060高很多倍的显卡,比如1080ti,现在搞得1080ti都被怀疑有没有被挖过矿,简直蛋疼

I new phone

搞了个中兴BA603来做4G路由器,之前我不是搞了两张物联网卡吗,一张电信一张移动,我自己的手机尽管也是双卡,但sim2会和tf冲突,三卡解决方案压根就不支持xzp,所以我只能用别的手机放它们;之前都是用华为p7放电信的卡,用起来慢的1b,首先那破机子本来就慢的1b(手动滑稽,网速也基本上只有几百KB/s;最主要的是我主机的流量就有10GB每个月。所以我需要搞一个双卡而且还支持4G全网通的便宜手机,基本上这款BA603是最便宜的,所以我就果断买了

拿到之后插上两张物联网卡,发现居然都没法上网;然后发现它们压根连APN都没设置好;这种卡和普通卡还不太一样,普通卡能自动读取APN设置,它们还不行,需要手动填;移动的卡在填完APN(和普通卡一样的填法,也是cmnet)后可以用了,实测4MB/s,尽管主卡插上去能测出5MB/s,但还行;电信卡怎么整都不联网,我估计真的和上一部手机绑定到一块了;反正电信物联网卡事情就是多,移动就好多了,不绑定设备,基本上和普通卡一样用,而且费用还便宜,7GB只要八块,电信的5GB需要十块,速度还慢,还事情多;以后基本上就用移动的了

(然后我主卡的流量变成了20GB,看来我买这玩意还真是闲得蛋疼啊

不过这机子做备用机还是挺不错的,SoC好像是S210,RAM有2GB,而且更神奇的是居然可拆卸电池,并能三卡共存,厚度也没有太多,卧槽;现在这种设计的机子已经不多见了,连星星星都早就不能拆电池了。中兴的系统自U950以来就和原生系统基本上没什么区别(U950压根就是原生Android4,丑的1b),它既不像华为那样喜欢用自己设计的SoC,又不像小米(和OV,perhaps?)一样喜欢把底层系统逻辑折腾个爽,现在基本上被边缘化,靠运营商捆绑卖手机,也难怪对UI根本不上心了,我估计它最多只是做了个launcher而已;装个nova launcher再装上google全家桶基本上就和原生Android没啥区别了,反正华为p7没法这样搞;当然它其实还是做了些实用软件的,比如可以拦截应用权限请求的玩意,基本上是国产手机标配了;索尼肯定也能,但它不能在放行电话权限之后拦截获取IMEI的请求(这是现在应用要电话权限最喜欢干的事情),这个好像可以做到;和其他的旧手机一样它也带有收音机和其他一些小工具,甚至连屏幕直尺都有,没有玩过Android 1.6的用户根本不会理解为什么它们仍然存在。收音机还是挺有用的,比如在便利店里hijack播放的fm广播时至少先得知道当前播放的节目是什么频率,而想知道这点基本上需要另外一台收音机。

但我觉得最神奇的是这手机居然支持直连USB声卡,不用安装任何额外应用,甚至音量都能正常控制,这可是只有索尼大法的机子才能做到的,现在中兴居然也能,卧槽,我开始对这个牌子有点好感了。当然我对它也没有像对华为、小米、OV乃至苹果那样的恶意,毕竟我的第一款四核手机就是U950,而它其实还是非常耐操的。当然它也仍然不在我最喜欢的品牌列表里,我的最喜欢品牌列表基本上只有sony mobile、moto和htc三家(手动滑稽

II nas config

新备用机自然会被拿来浴室放歌用,但它只有16GB存储,所以我只好用NAS来供应音乐,再说了音乐服务器也是NAS的应用之一;我用了foobar upnp server来做这件事,能索引到添加进foobar媒体库的所有歌曲,只不过我发现它好像没法锁屏使用,因为我那手机锁屏时断网;而且它也没法做内网穿透,穿透后只能索引到歌曲,但无法传输,我觉得它可能使用了别的端口甚至udp来做传书,所以只能接着折腾nginx了

nginx当然有它自己的问题,目录列表无法支持中文,就算编码设置对了,链接点击进去也会500,但如果你把中文文件链接粘贴进去它却能下载,说明nginx本身是支持中文文件的,只是它的目录列表不行;我查了下,好像它的目录列表功能的确是不同的编码,而且它没有编码转换功能;为这件事重新编译nginx肯定不现实,还是整个nginx+php好了,用php来实现目录列表功能

其实我还尝试了wamp,但我不会配置apache的conf,主要是配置成好几个端口还有一个alias,只好卸了作罢

php安装包只有23MB,nginx只有2MB,它们都是轻量级的,只要你不装数据库;php需要使用php-cgi来运行,命令行是:php-cgi.exe -b 127.0.0.1:9000 -c php.ini;php.ini需要添加

extension=php_openssl.dll
allow_url_include = On

来确保使用https时不会出现警告;nginx.conf需要在每一个server下面添加

        location ~ \.php?.*$ { 
            root E:/; # 这里添加location /里的根目录
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index  index.php;
            #index  index.html  index.php  /_h5ai/public/index.php;
            index  index.html  index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
            include fastcgi_params;
        }

然后nginx就可以调用php来运行php脚本了。然后我按照惯例上了个h5ai,发现它在我的NAS上居然奇慢无比,好像因为h5ai运行时默认遍历一遍整个目录,而我NAS上的东西还是有点多的;更坑爹的是它的css完全是错的,导致抓包显示东西都列举出来了,屏幕上却啥都没有;所以我只能换Directory Lister了,基本上比nginx自带的目录列表慢不了多少,至少不比内网穿透时来回美国VPS带来的延时慢

当然Directory Lister也有它自己的问题,它很不幸使用了googleapi,导致手机上根本打不开;firefox网络分析得出它也就两处地方使用了googleapi,分别在resources/themes/bootstrap/index.php

        <!-- SCRIPTS -->
        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

        <!-- FONTS -->
        <link rel="stylesheet" type="text/css"  href="//fonts.googleapis.com/css?family=Cutive+Mono">

,通常情况下我们都可以用googleapi缓存来解决这个问题,但我们也可以尝试将这两处地方的脚本和字体直接本地化。方法很简单,直接浏览器打开那两处地方,下载下来保存到比如resources/themes/bootstrap/fonts,字体那个只是个css,所以里面的那两款字体也需要保持下;然后修改css和php里的相关条目,改成本地地址即可;改完后变成了

        <!-- SCRIPTS -->
        <script type="text/javascript" src="<?php echo THEMEPATH; ?>/js/jquery.min.js"></script>

        <!-- FONTS -->
        <link rel="stylesheet" type="text/css"  href="<?php echo THEMEPATH; ?>/fonts/nein.css">

,注意下里面加的那句php代码,不加这个肯定是索引不到本地脚本和css的。话说回来我想换个字体,它带的那个好难看(手动滑稽

然后我发现我现在已经在用域名来访问我的NAS了;这样的话可以考虑加个ssl证书来确保更自然的https;尽管ssl证书不一样有wildcard,但不同端口的同一域名都可以用同一个证书啊,所以可以给主站上一个,然后同步到nas上的nginx;当然主站上的vestacp也有nginx,所以可以给子域或者alias设置反向代理到nas上的端口;alias好像就加一句location的事,子域好像加的东西有点多,反正vestacp本身是做不了的了

另外现在ssl申请都需要验证域名所有权,如果网站使用vestacp而且域名提供商那里设置的是ns到vestacp的服务器,此时只需要在vestacp里添加一条txt记录就能搞定,非常方便