背景
公司内部自建Web服务,通过自签CA,然后签发https证书
工具地址: GitHub - cloudflare/cfssl: CFSSL: Cloudflare's PKI and TLS toolkit
使用步骤:
1. 在release页面中下载最新的二进制包,我使用的是1.5的解压并重命名二进制文件
tar -zxvf cfssl_1.5.0_linux_amd64.tar.gz
mv cfssl_1.5.0_linux_amd64 cfssl
mv cfssljson_1.5.0_linux_amd64 cfssljson
mv cfssl-certinfo_1.5.0_linux_amd64 cfssl-certinfo
2.配置CA生成的文件
#vi ca-csr.json ,内容如下其中etcd是profile的名字,后面签发https的时候需要使用
{
"signing": {
"default": {
"expiry": "876000h"
},
"profiles": {
"etcd": { //配置名称
"expiry": "876000h",
"usages": [
"signing",
"key encipherment",
"server auth",
"client auth"
]
}
}
}
}
#vi ca-csr.json
{
"CN": "ETCD CA", //CA的签发机构名
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"O": "NHDC", //组织名
"OU": "NHDC", //组织名-子组织
"C": "CN",//国家
"L": "Changzhou",//城市
"ST": "Jiangshu"//省份
}
]
}
3. 初始化CA
cfssl genkey -initca ca-csr.json | cfssljson -bare ca
#会产生如下文件:
ca.pem
ca-key.pem
ca.csr
#ca.pem 复制一下,并修改后缀,用于配置Chrome信任
cp -p ca.pem ca.p12
4. 创建签发https的申请文件
#vi server-csr.json
{
"CN": "nhdc.cloud",
"hosts": [
"*.nhdc.cloud",
"10.159.5.65"
],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"O": "CEC",
"OU": "NHDC",
"C": "CN",
"L": "Changzhou",
"ST": "Jiangshu"
}
]
}
5. 通过自建的CA签发https证书
#命令最后的nhdc是生成的https的证书文件名
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=etcd server-csr.json | cfssljson -bare nhdc
#以上命令会生成如下文件
nhdc.pem
nhdc-key.pem
nhdc.csr
6. 配置Chrome浏览器信任自签CA,将第三步生成的ca.p12导入到“受信任的机构中”
7. 在nginx中使用生成的nhdc.pem,nhdc-key.pem配置https,就可以正常访问页面了,而且是受信的。