目录
前言
本文中所出现的域名、组织、相关政治敏感内容,均属于临时调试、测试环境中用来帮助理解记忆的因素,与实际无关,相关文件均已永久删除,仅供学习相关科学技术使用,请勿用于错误的模仿和非法用途
该方式生成的服务器证书、CA不受到任何公共平台、大型企业(比如微软、苹果、谷歌)的信任,也不会因此获得域名解析权,可能对你的财产、人身安全造成负面影响
在昨天又Renew一下2021年初的老文章 https://www.blueskyxn.com/202101/3744.html 今天又有群友发了几个新玩具给我,我一看,有点意思,好像也不麻烦,于是就来学习一波。
本次使用的玩具是 https://github.com/cloudflare/cfssl 看上去够大牌。
流程
配置环境->下载程序->配置CA配置文件->生成CA相关材料->配置服务器证书配置文件->生成服务器证书相关材料->使用(微调材料来获取需要的PEM、KEY等文件/配置信任)。
环境用Linux就行了,我是Cent OS 7+宝塔面板SSH。
下载
https://github.com/cloudflare/cfssl/releases 直接把要的二进制文件全部下载到任一目录,我是全部放在了 /root/cfssl 这个文件夹中
你可以手动、BT面板下载、Wget下载等方式,丢进去就行,也别搞什么累死累活的命令安装、编译安装,哪有那么麻烦,简单来说,能动就行。
记得文件名要去掉版本号。主要的文件是 cfssl 和 cfssljson 这两个。
配置CA配置文件
先调一下权限
chmod +x cfssl*
如果还有报错就去调一下777/775/755
然后生成一下默认配置来
./cfssl print-defaults config > ca-config.json
./cfssl print-defaults csr > ca-csr.json
然后默认配置参考如图
然后你可以根据自己的情况进行微调、测试、学习、使用。比如测试配置文件如下
请注意,这里的O会被当作(宝塔面板)“证书品牌”,这里的CN会被当作签发者
一般来说,加密用RSA2048即可。
备注词条信息(ca-config)
- kubernetes:表示该配置(profile)的用途是为kubernetes生成证书及相关的校验工作
-
- signing:表示该证书可用于签名其它证书;生成的 ca.pem 证书中 CA=TRUE
- server auth:表示可以该CA 对 server 提供的证书进行验证
- client auth:表示可以用该 CA 对 client 提供的证书进行验证
- expiry:也表示过期时间,如果不写以default中的为准
备注词条信息(ca-csr)
- CN: Common Name,浏览器使用该字段验证网站是否合法,一般写的是域名。非常重要。
- key:生成证书的算法
- hosts:表示哪些主机名(域名)或者IP可以使用此csr申请的证书,为空或者""表示所有的都可以使用(本例中没有hosts字段)
- names:一些其它的属性
- C: Country, 国家
- ST: State,州或者是省份
- L: Locality Name,地区,城市
- O: Organization Name,组织名称,公司名称(在常用于指定Group,进行RBAC绑定)
- OU: Organization Unit Name,组织单位名称,公司部门
生成CA证书
./cfssl gencert -initca ca-csr.json | ./cfssljson -bare ca
记得要在文件目录执行命令(cd进去)
然后就能看到生成了几个ca开头的文件(csr、key、pem)
请注意,这个并非服务器证书,塞到宝塔SSL的效果如图
检查一下内容,效果如图
./cfssl-certinfo -cert ca.pem
配置服务器证书配置文件
把CA的配置文件改改,调整一下内容,重命名一下,效果如图。第一个CN是SSL证书主域名。
生成服务器证书相关材料
./cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www gov-csr.json | ./cfssljson -bare gov
请注意核对文件名字,尤其是 profile的格式,=后面的第一个字段是CA-config中的配置类型,默认是www,然后空格接csr文件名。如果配置类型没写或者写错就会如图所示,
正确的如图所示
然后就生成了这些文件,csr、key和pem
使用
服务器证书申请得到的pem丢证书,key丢私钥即可(可以从begin区分)
host一下看看预览效果
默认是不会被任何平台信任的,但是你可以手动添加信任。
比如说chrome在这里
管理证书-受信任的根证书颁发机构-导入
可以看到要求这些文件
之前拿到了CA的pem和key,把CA的pem改为crt丢进去就行了,当然,把pem和key合并后改名crt也可以,我测试时是合并后丢进去,没啥问题。
然后高级不需要动
这里弄好之后,chrome就不会跳提示了。
然后清理实验环境
Comments NOTHING