我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何在Golang中为Azure SDK指定x509证书

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何在Golang中为Azure SDK指定x509证书

你在学习Golang相关的知识吗?本文《如何在Golang中为Azure SDK指定x509证书》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

我正在尝试连接以使用 azure sdk for golang 将文件从在线容器下载到我的设备,并使用 azure 提供的连接字符串进行连接。对于上下文来说,这是在嵌入式 linux 版本上运行的

我有两个问题,首先如何将特定证书传递给azure sdk以用于连接,因为目前当我连接时,我遇到了这个问题

get "https://transaction.blob.core.windows.net/transactions?comp=list&restype=container": x509: 由未知权威机构签名的证书

或者如果失败,我如何生成正确的证书并将其放入 /etc/ssl 中?据我所知,我认为这就是 go 寻找证书的地方。

还有第二个问题,如果我的文件夹结构类似于 /transaction/my-libs/images/1.0.0/libimage.bin(其中事务是我的),我应该使用 azure sdk for go 的什么函数从在线 blob 下载blob 容器。

func testConnection(){
    Println("TESTING CONNECTION")

    connStr := "..." // actual connection string hidden 

    serviceClient, err := azblob.NewServiceClientFromConnectionString(connStr, nil)

    // crashes here <------------

    //ctx := context.Background()
    //container := serviceClient.NewContainerClient("transactions")
    //
    //_, err = container.Create(ctx, nil)
    //
    //blockBlob := container.NewBlockBlobClient("erebor-libraries")
    //_, err = blockBlob.Download(ctx, nil)


    //Open a buffer, reader, and then download!
    downloadedData := &bytes.Buffer{}
    reader := get.Body(RetryReaderOptions{}) // RetryReaderOptions has a lot of in-depth tuning abilities, but for the sake of simplicity, we'll omit those here.
    _, err = downloadedData.ReadFrom(reader)
    err = reader.Close()
    if data != downloadedData.String() {
        err := errors.New("downloaded data doesn't match uploaded data")
        if err != nil {
            return
        }
    }

    pager := container.ListBlobsFlat(nil)
    for pager.NextPage(ctx) {
        resp := pager.PageResponse()

        for _, v := range resp.ContainerListBlobFlatSegmentResult.Segment.BlobItems {
            fmt.Println(*v.Name)
        
    }

}


正确答案


• 您可以使用以下 azure sdk for go 命令将特定证书传递到 azure sdk,以通过为其创建服务主体来连接到其他 azure 资源:-

‘ type ClientCertificateConfig struct {
  ClientID            string
  CertificatePath     string
  CertificatePassword string
  TenantID            string
  AuxTenants          []string
  AADEndpoint         string
  Resource            string
 } ‘

有关客户端证书的创建及其使用的更多信息,请参阅下面的文档链接了解更多详细信息:- https://pkg.go.dev/github.com/Azure/go-autorest/autorest/azure/auth#ClientCertificateConfig

此外,即使您的文件夹结构是'/transaction/my-libs/images/1.0.0/libimage.bin',但 blob url 与 blob 中提到的文件夹层次结构是唯一的url,因此,当连接到 azure 存储帐户以下载 blob 时,请以单引号表示法提及 url,以便明确 blob 路径。

请参阅下面的示例代码,通过 azure sdk for go 下载 blob:-

https://pkg.go.dev/github.com/Azure/azure-sdk-for-go/sdk/storage/azblob#example-package

https://pkg.go.dev/github.com/Azure/azure-storage-blob-go/azblob#pkg-examples

本篇关于《如何在Golang中为Azure SDK指定x509证书》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注编程网公众号!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何在Golang中为Azure SDK指定x509证书

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何在Golang中为Azure SDK指定x509证书

你在学习Golang相关的知识吗?本文《如何在Golang中为Azure SDK指定x509证书》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!问题内容我正在尝试
如何在Golang中为Azure SDK指定x509证书
2024-04-04

详解如何在golang镜像中设置指定时区

这篇文章主要为大家详细介绍了如何在golang镜像中设置指定时区,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
2023-05-18

如何在原生 Go 中将 PEM 证书链转换为 PKCS7?

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《如何在原生 Go 中将 PEM 证书链转换为 PKCS7?》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢
如何在原生 Go 中将 PEM 证书链转换为 PKCS7?
2024-04-05

如何在 Golang 中生成指定范围的随机整数?

在 golang 中,使用 rand 包中的 intn 函数可生成指定范围的随机整数。其语法为 func intn(n int) int,其中 n 是不含在内的随机整数上限。通过设置随机数种子并使用 intn(100) + 1,可以生成一个
如何在 Golang 中生成指定范围的随机整数?
2024-05-13

Golang中如何判断字符串结尾是否为指定字符

标题:Golang中如何判断字符串结尾是否为指定字符在Golang中,判断字符串结尾是否为指定字符可以通过使用strings包中的HasSuffix函数来实现。这个函数能够帮助我们快速地判断一个字符串是否以特定的后缀结尾,从而方便进行字符
Golang中如何判断字符串结尾是否为指定字符
2024-03-13

如何在golang中将切片的长度定义为数组?

在Golang中,切片与数组是两种不同的数据类型。切片是一个动态长度的序列,而数组是一个固定长度的序列。如果你想将切片的长度定义为数组,可以通过创建一个固定长度的数组,然后使用切片来引用该数组来实现。具体操作是先创建一个指定长度的数组,然后
如何在golang中将切片的长度定义为数组?
2024-02-08

如何在golang中将多种类型定义为一种类型

在golang中,有时我们需要将多种类型定义为一种类型,以便更灵活地处理数据。对于这个问题,php小编新一为大家带来了解决方案。通过使用接口类型(interface),我们可以实现将多个不同的类型定义为一种类型的目的。接口类型可以定义一组方
如何在golang中将多种类型定义为一种类型
2024-02-09

基于Docker的Nginx SSL证书配置与自动更新(如何在Docker中为Nginx配置SSL证书并实现自动更新?)

基于Docker的NginxSSL证书配置与自动更新指南,涵盖了创建CSR、从CA获取证书、配置Nginx、实现自动更新(通过Certbot容器、内置命令或Cron作业),以及最佳实践(强密钥、定期更新、可信CA、监控、CSP、HSTS)。
基于Docker的Nginx SSL证书配置与自动更新(如何在Docker中为Nginx配置SSL证书并实现自动更新?)
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录