1. get cert

#!/bin/bash

# set your env-custom variable
export NAME1=etcd1
export ADDRESS1=127.0.0.1,10.173.32.55,$NAME1

export NAME2=etcd2
export ADDRESS2=127.0.0.1,10.173.32.54,$NAME2

export NAME3=etcd3
export ADDRESS3=127.0.0.1,10.173.32.58,$NAME3

export CLIENT=etcd-client


# download cfssl if necessary
which cfssl
if [ $? -ne 0 ];then
   curl -s -L -o /usr/local/bin/cfssl https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
   curl -s -L -o /usr/local/bin/cfssljson https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
   chmod +x /usr/local/bin/{cfssl,cfssljson}
fi

# generate self-signed certificate if necessary
 if [ -f ca.key -a -f ca.crt ];then
   echo "CA is already exist, skip"
 else
   openssl req -new -x509 -days 36500 -keyout ca.key -out ca.crt -nodes -subj "/C=CN/ST=ZheJiang/L=HZ/O=testca/OU=Cloud/CN=Etcd Cluster"
 fi

# generate server side certificate
echo '{"signing":{"default":{"expiry":"43800h","usages":["signing","key encipherment","server auth","client auth"]}}}' > ca-config.json

echo '{"CN":"'$NAME1'","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -config=ca-config.json -ca=ca.crt -ca-key=ca.key -hostname="$ADDRESS1" - | cfssljson -bare $NAME1

echo '{"CN":"'$NAME2'","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -config=ca-config.json -ca=ca.crt -ca-key=ca.key -hostname="$ADDRESS2" - | cfssljson -bare $NAME2

echo '{"CN":"'$NAME3'","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -config=ca-config.json -ca=ca.crt -ca-key=ca.key -hostname="$ADDRESS3" - | cfssljson -bare $NAME3

# generate client certificate
echo '{"CN":"'$CLIENT'","hosts":[""],"key":{"algo":"rsa","size":2048}}' | cfssl gencert -config=ca-config.json -ca=ca.crt -ca-key=ca.key -hostname=$CLIENT  - | cfssljson -bare $CLIENT
Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2021-04-05 15:25:43

results matching ""

    No results matching ""