标签 https 下的文章

unifi的cloud key 替换https证书及遇到的坑

unifi的cloud key的web页面默认使用的是自签名的证书,打开时浏览器会提示不信任的页面,从阿里云或者其他地方免费获取证书后替换就能显示小绿锁了。想着替换一个证书而已,没想到这中间还有坑。
首先简单介绍一下cloud key的web架构
首先是80端口,请求http后会返回301跳转到https,然后打开入口页面,一个是unifi controller,一个是cloud key管理
80端口和443端口是nginx监听的,cloud key 管理页面是443端口,但是unifi controller使用的是8443端口,这个是java的
检查nginx配置发现ssl证书在/etc/ssl/private目录下,有cloudkey.crt和cloudkey.key,nginx证书替换好办,直接把新申请的域名证书内容覆盖cloudkey.crt和cloudkey.key内容即可。
麻烦的是java使用的证书,在网上找到办法,需要根据cloudkey.crt和cloudkey.key生产p12格式证书,在用工具生成Java用的证书unifi.keystore.jks,方法如下

cd /etc/ssl/private
openssl pkcs12 -export -in cloudkey.crt -inkey rsa.key -out unifi.p12 -name unifi -password pass:aircontrolenterprise
keytool -importkeystore -srckeystore unifi.p12 -srcstoretype PKCS12 -srcstorepass aircontrolenterprise -destkeystore unifi.keystore.jks -storepass aircontrolenterprise
service unifi restart

现在使用域名打开unifi controller页面,小绿锁出现了。
然后就遇到坑了,重启发现证书又变成了自签名,这就尴尬了,重启不能保存这则么能行。google后有说cloud key重启会重置文件系统的,但是查看df -h,和经过测试,发现并不会重置,那就是有开机脚本操作了。再搜索,ubnt的英文论坛里说/usr/share/initramfs-tools/scripts/ubnt-bottom/configure-sslcert这个脚本每次开机执行,检查/etc/ssl/private/cert.tar这个压缩包里的证书是否和/etc/ssl/private里的一致。分析脚本发现,只要这个tar包只要是非0字节就会解压到临时目录,对比/etc/ssl/private里证书,如果不一致则情况重新生成,并更新cert.tar。
到此,只要保持cert.tar里面到三个文件和外面到一致就可以了。

tar cvf /etc/ssl/private/cert.tar /etc/ssl/private/cloudkey.crt /etc/ssl/private/cloudkey.key /etc/ssl/private/unifi.keystore.jks

重启,小绿锁还在。

esxi修改https证书,不再提示不可信

ESXi 安装后会默认自动生成证书,浏览器报不可信,网页提供的证书上传的功能不可用。

通过SSH手动替换证书是个相对可靠方便的方法。

注:连接了vCenter的主机需要跟vCenter走,本例为独立主机。

首先在面板或DCUI中启用SSH。

登录后,

cd /etc/vmware/ssl
ls
里面的 rui.crt 和 rui.key 就是需要改的证书了。

有需要的可以先备份一下,然后,

vi rui.crt
修改,贴入签名过的证书。

vi rui.key
修改,贴入证书密钥。

注意 .key 是只读文件,保存时可以用 :wq! 强制保存。

证书替换后不是即时生效,需要重启。

记录一个nginx的301或者rewrite的坑

http跳转到https一般使用301或者rewrite,但是在post到http时,按照http标准,收到301后会变成get https,一般调用接口会出现这个问题,简单不完美的解决办法是使用303或者307跳转。