目录

Minio修改签名方式

概述

公司魔改的对象存储采用 V2 的签名方式(主要是年久失修),导致很多近两年出现的客户端,包括一些 web browser 类型的客户端都无法使用,也包括 Minio Gateway 类型,本文主要讲的是,如何修改 Minio 的源码,让其支持 V2 的方式,来构建 Minio Browser。

修改

因为最新版取消了 Minio Browser,因此我们的修改是基于比较旧的版本(注意版本),修改签名的方式,然后重新编译打包。

1
2
3
4
5
6
7
8
# 只要外网畅通,过程是非常丝滑的
curl -LO https://github.com/minio/minio/archive/refs/tags/RELEASE.2020-09-23T19-18-30Z.zip
unzip RELEASE.2020-09-23T19-18-30Z.zip
cd minio-RELEASE.2020-09-23T19-18-30Z/
# 修改签名方式
vim vendor/github.com/minio/minio-go/v7/pkg/credentials/env_minio.go
# 重新编译的命令
make build

注意修改点如下,修改后重新编译得到二进制文件,不管是直接使用还是替换镜像里的二进制即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
// Retrieve retrieves the keys from the environment.
func (e *EnvMinio) Retrieve() (Value, error) {
        e.retrieved = false

        id := os.Getenv("MINIO_ACCESS_KEY")
        secret := os.Getenv("MINIO_SECRET_KEY")
		
		// 修改的地方,使用SignatureV2
        signerType := SignatureV2
        if id == "" || secret == "" {
                signerType = SignatureAnonymous
        }

        e.retrieved = true
        return Value{
                AccessKeyID:     id,
                SecretAccessKey: secret,
                SignerType:      signerType,
        }, nil
}

更新

今天更新一下文章,

参考资料

  1. Minio
警告
本文最后更新于 2023年12月2日,文中内容可能已过时,请谨慎参考。