给ESXi应用阿里云证书

网上有很多教程如何给ESXi使用自己的证书,我折腾了一回还把ESXi搞瘫了几天,记录一下供各位参考,免得你们跳进同一个坑。

这里有一个Windows下比较完整的教程,我的主要操作步骤也是参考这个的:

https://koolshare.cn/thread-137269-1-1.html

 

Step 1:购买域名并购买阿里云证书

略,这个不知道也没必要折腾这个了。

 

Step 2:生成CSR文件,这一步就是坑关键

生成CSR文件的openssl命令,注意参数:

openssl req -new -nodes -out rui.csr -keyout rui-orig.key -config openssl.cfg

根据这个教程是需要在windows下下载openssl,其实在OSX下本身就支持这个命令,关键是openssl.cfg文件,其实也是不需要的,openssl支持在命令行提示中输入(完成)配置。

后面回头看这个命令,其实也非常好理解-keyout rui-orig.key,这个参数的意思是:生成一个key文件,而我则是在参考了这个文章中的内容后,按如下顺序执行的:

https://yq.aliyun.com/articles/47314

命令1:openssl genrsa -out some.key 2048

命令2:openssl req -new -key some.key -out some.csr

这两个命令一个生成.key文件,一个生成.csr文件。第2个命令会提示你输入相关信息(比如:CN/HN/CS等,注意common name必须是你的域名,其它包括邮箱密码都可保持为空)

生成的.key文件最后需要上传到ESXi上,而csr文件则用于申请证书。

注意在windows版的教程中还有一个命令是

openssl rsa -in rui-orig.key -out rui.key

如果按我的两个命令的方法执行则不需要再执行这个转换的命令,因为用openssl genrsa本来生成的就已经是RSA的私钥。

在没有解决这个问题之前,我先通过搜索找到这样一篇文章,可以通过keychain生成csr但很遗憾我没有找到方法得到.key文件,所以就卡在这了。

https://www.jianshu.com/p/f20caf82938d

而我最大的特点是勇于折腾,在没有key文件的情况下,覆盖了crt文件并重启了ESXi,然后就没有WebUI了,解决的方法后面讲。

 

Step 3:用生成的csr文件生成证书

这个与前面的windows教程完成一致,只强调一个:申请证书时填的域名必须与CSR文件中的common name中的域名完全一致。

Step 4:下载并替换证书

从阿里云下载签发域名的Nginx版证书,后缀应是pem格式,假设这个文件为A

之前生成的some.key文件,假设这个文件为B。

通过SSH登录到ESXi,进入目录/etc/vmware/ssl目录,备份(我理解其实删除也完全没问题)rui.crt/rui.key这两个文件。

然后,通过vi命令创建新的rui.crt/rui.key这两个文件并保存,内容是:

A-> rui.crt

B->rui.key

 

Step 5:重启Management Agent

不知道命令行怎么重启,我正好连在console上,用键盘重启的,没有连接console的话直接重启ESXi效果也一样。

前面生成csr的时候因为没有生成正确的key文件,所以出现了一个非常严重的问题就是Management Agent(WebUI)连接不上了,但SSH正常。

解决的方法非常简单(需通过SSH连接):

1)备份后移除/etc/vmware/ssl下的rui.crt/rui.key这两个文件

2)执行/sbin/generate-certificates命令重新生成证书

3)重启Management Agents

 

操作完成后,可通过域名直接访问ESXi,Chrome不会提示证书异常,同时也可以保存密码了,对我等强迫症来说是个好事。

 

Continue Reading

推荐一款OSX下的截屏软件SnipPaste

一直想要一款心目中理想的截图软件:

1. 简洁快速

不要有乱七八糟的功能,加载和使用的速度快。

2. 支持截图后的标注操作,功能够用就行。

支持画框,箭头,文字,涂抹(马赛克)基本上就够用了。

3. 支持通过快捷键保存到剪贴板和文件

有两种比较常用的模式:

一)截图后立刻编辑(标注)然后保存(可通过快捷键选择进剪贴板或文件),一般截图都是这个情况。

二)截图后不需要编辑直接进剪贴板或文件。大量截图不需要标注的,这种情况比较少见,而且如果标注窗口支持快捷键的话对操作影响也很小,所以其实只需要完美的支持模式一即可。

前面用过的软件很多,主要是系统自带+SNIP。

SNIP其实也非常不错,前面我也推荐过,后面为什么改用系统的我不记得了。最近在大白软件站看到了截图软件推荐的SnipPaste就用一下试试,发现也非常不错。

 

UntitledImage

软件支持win/osx,目前osx仍是beta,官网上也没有截图。

优点:

1. 功能简洁但足够的强大;

2. 上面所有的需求都支持,同时还支持取色,这一点很好;

3. 支持多种快捷键保存方式,模式一和二都能比较好的支持。

4. 有一个很好用的paste功能:当你想要“标注”一个已经存在的图片时,从系统里复制然后paste就可以编辑了。

5. 支持很多有特色的选择操作(按像素调整选择区域)

缺点:

1. 先说最大的缺点:不支持长页面的截图,这一点确实是很大的问题,但已列入更新计划。XNIP就支持,但免费版有水印。

2. 标注界面比xnip少一个很常用的自动编号数字的功能。写操作手册时很需要。

3. 标注段选择保存为文件支持两个模式:手工保存(cmd+S)和快速保存(cmd+shift+s),前者快捷键简单但需要用户确认一次文件名,而快速保存则可以取消。建议交换这两个快捷键。不过支持另外一个快捷操作的配置:Enter/鼠标双击/中键双击的默认操作配置。可以把Enter配置成进剪贴板,双击快速保存。

4. 之前以为不支持选择控件,其实是需要开启一个配置项。

 

总结一下:

XNIP与SnipPaste我觉得都挺不错,关键功能上Xnip支持Scroll截图占优;但细节功能上后者明显更为强大。Xnip的高级功能收费(Scroll免费版有水印),SnipPaste细节功能较多且适合喜欢键盘操作的开发人员使用。SnipPaset能够快点支持Scrollfalr话就可以抛弃Xnip了,如果能够支持前面的标注自动增长序列更好。

话说我现在的截图用的是系统自带的,我完全不记得为什么放弃XNIP了:)因为不支持对TouchBar截图?

 

Continue Reading

迁移gitea遇到的remote rejected的问题

备案域名之后,把git服务从原来的aws免费主机搬回了国内,同时修改了域名指向,恢复了gitea服务之后,有同事反映说commit失败:

Snipaste 2020 02 08 00 05 50

一般的说法是权限问题,但是整个恢复(迁移)过程并未对gitea的用户权限做修改,而用管理员账号做过新的repo的commit操作均是正常的,后面在gitea@github找到答案:

https://github.com/go-gitea/gitea/issues/2270

UntitledImage

登录gitea后台,dashboard执行一下(Resynchronize pre-receive, update and post-receive hooks of all repositories.)搞定。

UntitledImage

Continue Reading

阿里云DDNS重复A记录问题

前面提到使用了阿里云的动态DDNS,发现域名解析中出现了多个A记录,一开始以为会自动失效(过期),后来发现不是,于是又开始了折腾:

1. 用的是Padavan固件所带的脚本功能;界面上没怎么仔细写逻辑需求,链接里也没仔细的写要求,只写了需要几个KEY,这个当然是正确的(不然A记录也没办法新增),于是通过SSH登录进去,终于在/etc/storage/script下找到了Sh42_aliddns.sh文件;

2. 读完脚本大概确定逻辑,脚本会先通过API获取所有的域名记录,并尝试获取recordid;如果获取成功则updateRecord,反之则addRecord,显然问题出现在:)

3. 脚本是通过“query_recordid | get_recordid”两个函数获取返回值,前一个是通过API获取域名解析记录,后一个是从中解析出相应域名的recordid,所以也不能判断到底是返回值错误还是解析结果出现了问题,于是写了一test函数,加到脚本中:sh Sh42_aliddns.sh test测试query_recordid的结果,错误提示非常明确:“”Code”:”Forbidden.RAM”,”Message”:”User: not authorized to operate on the specified resource, or this API doesn’t support RAM.”。 看起来不像是这个API不支持RAM的原因(连ADD都支持没道理Query不支持的)。

4. 查看阿里云的授权配置:)感觉没有异常,如下:

{
    "Version": "1",
    "Statement": [
        {
            "Action": [
                "alidns:AddDomainRecord",
                "alidns:DescribeDomainRecords",
                "alidns:UpdateDomainRecord"
            ],
            "Resource": "acs:alidns:*:*:domain/brallow.cn",
            "Effect": "Allow"
        }
    ]
}

问题其实就出现在这里,因为这个策略是我从网上抄来的,并没有仔细研究alidns有什么Action列表,实际上alidns:DescribeDomainRecords与alidns:DescribeSubDomainRecords是两个不同的Action,而脚本使用的是后者,我并没有授权这个独立的RAM访问,新增授权,问题解决。

Continue Reading

折腾SSL证书

备案了brallow.cn,又申请了阿里的免费证书,并应用了阿里的动态域名,把家里的NAS导入了新的证书:

记录几个常用的东西:
1. 用下载的证书,apache版,key是私钥;public.crt是公钥;chain.crt不知道干嘛用的,导入即可。

2. 不可应用DSM中的”自定义域名“设置,否则通过该域名访问DSM时将出现Synology的404页面;如果出现这一问题,使用IP或其它域名访问即可。

3. 应用配置后注意将该证书修改为默认证书,并将相关服务通过配置修改为新的证书(默认将使用自动生成的证书)。

可能是我的DSM的原因,开启https并应用设置重新启动web server之后并不能通过https访问,重启以后解决了。

其实我的本意是要把ESXi应用证书的,(不知道是不是这个原因,没有有效证书的情况下Chrome不能记录(保存)密码)但操作步骤太复杂了,打算放弃。

Continue Reading