MINIO配置TLS访问

服务端证书生成

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

posted @ 2023-07-21 17:35  技术颜良  阅读(479)  评论(0编辑  收藏  举报