# 一、加密的方式
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)