服务端证书生成
openssl genrsa -out ca.key 2048 openssl req -x509 -new -nodes -key ca.key -subj "/CN=*.*.*.*" -days 365 -out ca.crt openssl genrsa -out server.key 2048 openssl req -new -nodes -key server.key -subj "/CN=*.*.*.*" -out server.csr # 服务端证书生成时,需要设置subjectAltName = IP:172.20.20.203 echo subjectAltName = IP:172.20.20.203 > extfile.cnf openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out server.crt -days 3650
从key导出pem公钥和私钥:
私钥:openssl rsa -in demo.key -out private.pem 公钥:openssl rsa -in demo.key -pubout -out public.pem
客户端连接配置
endpoint := "192.168.77.114:9091" user := "minioadmin" pass := "minioadmin" ca := `-----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE-----` k := `-----BEGIN RSA PRIVATE KEY----- xxx -----END RSA PRIVATE KEY-----` c := `-----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE-----` pool := x509.NewCertPool() pool.AppendCertsFromPEM([]byte(ca)) var cliCrt tls.Certificate // 具体的证书加载对象 cliCrt, err := tls.X509KeyPair([]byte(c), []byte(k)) if err != nil { log.Fatalln(err) } minioClient, err := minio.New(endpoint, &minio.Options{ Creds: credentials.NewStaticV4(user, pass, ""), Secure: true, Transport: &http.Transport{ TLSClientConfig: &tls.Config{ RootCAs: pool, Certificates: []tls.Certificate{cliCrt}, }, }, }) if err != nil { log.Fatal(err) } if err := minioClient.MakeBucket(context.Background(), "demo", minio.MakeBucketOptions{}); err != nil { log.Fatal(err) } fmt.Println(minioClient)
-----------------
3.10.2.创建私钥文件和自签名证书
# mkdir -p ${HOME}/.minio/certs
# cd ${HOME}/.minio/certs
# minio-server
mkdir -p /home/minio-user/.minio/certs/CAs
cd /home/minio-user/.minio/certs/CAs
# nginx-server
mkdir -p /usr/local/nginx/certs/CAs
cd /usr/local/nginx/certs/CAs
# 生成自签名证书, 参数说明
# genrsa 生成rsa私钥文件
# -out 输出文件
# 2048 密钥长度,默认512
# req 证书请求的子命令
# -x509 输出证书
# -new 生成证书请求
# –nodes 表示私钥不加密,若不带参数将提示输入密码
# -key 私钥文件
# -subj 输入证书拥有者信息
# -days 证书有效时间
# -subj 参数 多个参数示例:/C=CN/ST=liaoning/L=dalian/O=minio/CN=minio1.mnmd.net
# C Country, 单位所在国家,为两位数的国家缩写,如: CN 就是中国
# ST State/Province, 单位所在州或省
# L Locality, 单位所在城市 / 或县区
# O Organization, 此网站的单位名称
# OU Organization Unit, 下属部门名称;也常常用于显示其他证书相关信息,如证书类型,证书产品名称或身份验证类型或验证内容等
# CN Common Name, 网站的域名
# 生成证书前可以先修改配置文件(选),参考 3.10.1
# nginx 代表的是客户
# minio1/minio2/minio3/minio4 代表的是服务器
# 1.生成CA证书(认证中心)
# 私钥
openssl genrsa -out ca.key 2048
# 公钥
openssl req -x509 -new -nodes -key ca.key -subj "/CN=minio.nginx.mnmd.net" -out ca.crt -days 3650
# 2.生成服务器证书请求
# 私钥
openssl genrsa -out server.key 2048
# 公钥
openssl req -new -nodes -key server.key -subj "/CN=minio.nginx.mnmd.net" -out server.csr
# 3.利用CA证书签名生成服务器证书
echo subjectAltName = DNS:minio*.mnmd.net > extfile.cnf
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out server.crt -days 3650
# minio服务中是服务器证书
# 将生成的 `private.key` 和 `public.crt` 放到 `/usr/local/nginx/certs/CAs` 和 `/home/minio-user/.minio/certs/CAs` 路径下
# 授予minio-user用户组
chown -R minio-user:minio-user /home/minio-user/.minio/certs/CAs
# 重新启动nginx
/usr/local/nginx/nginx -s quit
/usr/local/nginx/nginx -c /usr/local/nginx/minio-cluster.conf
# 重新启动minio
systemctl restart minio.service
3.10.3.查看证书是否有效
openssl x509 -in /usr/local/nginx/certs/CAs/public.crt -noout -text
openssl x509 -in /home/minio-user/.minio/certs/CAs/public.crt -noout -text
————————————————
版权声明:本文为CSDN博主「琴 韵」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012549626/article/details/128067218