🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 一、加密的方式 1、对称加密:加密解密相同 2、非对称加密:用公钥~私钥的密钥对加密(https为非对称加密) 3、单项加密:只能加密不能解密(MD5) # 二、SSL证书 ![](https://img.kancloud.cn/bc/8a/bc8abb250130c8f66efae2b805d9d1d7_1142x580.png) # 三、SSL证书的分类 1、自签证书:内部使用 2、第三方机构:通常在外部连接中使用 # 四、自签证书工具 1、使用cfssl工具自签证书 # 五、为ETCD和APIserver自签SSL证书cfssl安装 1、 在线安装 1.1、安装CFSSL * 生成证书 ``` wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 ``` 或者 ``` wget https://github.com/cloudflare/cfssl/releases/download/1.2.0/cfssl_linux-amd64 ``` * 利用Json生成证书 ``` wget https://github.com/cloudflare/cfssl/releases/download/1.2.0/cfssljson_linux-amd64 ``` * 查看证书信息的工具 ``` wget https://github.com/cloudflare/cfssl/releases/download/1.2.0/cfssl-certinfo_linux-amd64 ``` 1.2、修改权限 ``` chmod +x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64 ``` 或者: ``` sudo chmod +x cfssl* ``` 1.3、移动文件(配置环境变量) ``` mv cfssl_linux-amd64 /usr/local/bin/cfssl mv cfssljson_linux-amd64 /usr/local/bin/cfssljson mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo ``` 移动的时候会自动添加,如果没有添加成功或者测试不成功再添加环境变量 ``` export PATH=/root/local/bin:$PATH ``` 1.4、验证指令 ``` cfssl --help ``` ![](https://img.kancloud.cn/3d/bc/3dbc5bae90b24040bf9a289a7602f5e1_781x399.png) 1.5、生成一个配置模板 ``` cfssl print-defaults config > config.json ``` ``` {     "signing": { //签名         "default": {             "expiry": "168h" //默认过期时间         },         "profiles": {             "www": {                 "expiry": "8760h",                 "usages": [                     "signing",                     "key encipherment",                     "server auth"                 ]             },             "client": {                 "expiry": "8760h",                 "usages": [                     "signing",                     "key encipherment",                     "client auth"                 ]             }         }     } } ``` 1.6、生成证书信息模板文件 ``` cfssl print-defaults csr > csr.json ``` ``` {     "CN": "example.net", //标识具体的域     "hosts": [ //使用该证书的域名         "example.net",         "www.example.net"     ],     "key": { //加密方式,一般RSA 2048         "algo": "ecdsa",         "size": 256     },     "names": [ //证书包含的信息,例如国家、地区等         {             "C": "US",             "L": "CA",             "ST": "San Francisco"         }     ] } ``` 1.7、根据初始的配置模板和证书信息模板来生成配置模板以及证书信息 生成我们自己的模板,我们可以把这里生成的模板单独放到一个文件中,进入到我们自己的文件中后,执行下面的代码内容,下面的代码内容是我们根据初始的配置模板、证书信息模板修改之后的来的。下面代码的意思就是创建文件并再文件中添加内容 ``` cat > ca-config.json {     "signing":{         "default":{             "expiry":"87600h"         },         "profiles":{             "kubernetes":{                 "expiry":"87600h",                 "usages":[                     "signing",                     "key encipherment",                     "server auth",                     "client auth"                 ]             }         }     } } ``` ``` cat > ca-csr.json {     "CN":"kubernetes",     "key":{         "algo":"rsa",         "size":2048     },     "names":[         {             "C":"CN",             "L":"Hebei",             "ST":"Zhangjiakou",             "O":"k8s",             "OU":"System"         }     ] } ``` 1.8、使用证书信息文件生成证书 ``` cfssl gencert -initca ca-csr.json | cfssljson -bare ca - ``` 1.9、生成服务端的配置模板及证书信息 ``` cat > server-csr.json {     "CN":"kubernetes",     "hosts":[         "192.168.72.166",         "192.168.72.168",         "192.168.72.169"     ],     "key":{         "algo":"rsa",         "size":2048     },     "names":[         {             "C":"CN",             "L":"Hebei",             "ST":"Zhangjiakou",             "O":"k8s",             "OU":"System"         }     ] } EOF ``` 1.10、使用证书信息生成证书 ``` cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server ``` ![](https://img.kancloud.cn/eb/1b/eb1b17f41ebc1c5fd8c895d5e3791af6_1165x340.png) 参考:[https://www.cnblogs.com/fanqisoft/p/10765038.html](https://www.cnblogs.com/fanqisoft/p/10765038.html) 2、离线安装 2.1、上传TLSLjar包 压缩包上传,这里的压缩包就是移动到/usr/local/bin/文件目录下的内容,可以自己进行打包下载。 下载地址:[https://jsbke.cn/files/TLS.tar.gz](https://jsbke.cn/files/TLS.tar.gz) 下载地址: 链接:[https://pan.baidu.com/s/1dwRa7wW_qWjBfJrckHhRgw?pwd=ud0q](https://pan.baidu.com/s/1dwRa7wW_qWjBfJrckHhRgw?pwd=ud0q) 提取码:ud0q --来自百度网盘超级会员V5的分享 2.2、解压 2.3、执行cfssl.sh文件 cfssl.sh中的代码 ``` #curl -L https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -o /usr/local/bin/cfssl #curl -L https://github.com/cloudflare/cfssl/releases/download/1.2.0/cfssljson_linux-amd64 -o /usr/local/bin/cfssljson #curl -L github.com/cloudflare/cfssl/releases/download/1.2.0/cfssl-certinfo_linux-amd64 -o /usr/local/bin/cfssl-certinfo cp -rf cfssl cfssl-certinfo cfssljson /usr/local/bin chmod +x /usr/local/bin/cfssl* ``` 2.4、验证 ~~~ cfssl --help ~~~ 2.5、cd etcd 2.6、修改配置文件 ``` cat server-csr.json {     "CN": "etcd",     "hosts": [         "192.168.72.166",         "192.168.72.168",         "192.168.72.169"         ],     "key": {         "algo": "rsa",         "size": 2048     },     "names": [         {             "C": "CN",             "L": "BeiJing",             "ST": "BeiJing"         }     ] } ``` 2.7、执行命令生成证书 ``` generate_etcd_cert.sh ``` generate_etcd_cert.sh中的代码: ``` cfssl gencert -initca ca-csr.json | cfssljson -bare ca - cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=www server-csr.json | cfssljson -bare server ``` 注:证书在哪里生成都行 参考文档:[https://www.cnblogs.com/yangzp/p/15692046.html](https://www.cnblogs.com/yangzp/p/15692046.html)