gpt4 book ai didi

go - Golang 的 LDAP 客户端库如何使用证书?

转载 作者:行者123 更新时间:2023-12-01 22:13:51 28 4
gpt4 key购买 nike

我正在尝试连接到 G Suite's LDAPS serverGolang's LDAP library .

然而,在 example ,我真的不明白两件事。

  • 似乎它首先通过非加密 LDAP 连接?然后升级?这是真的吗,如果是这样,我不能从连接加密开始吗?
  • Google 提供了一个 .cer 和 .key 文件来连接到他们的 ldap 服务器。我看不到它在哪里使用这些文件。我确实在他们的文档中看到许多 LDAP 客户端需要将文件组合成 .p12。围棋有必要吗?

  • 如果回答这个问题的人可以提供一个例子,那真的很有帮助。谢谢你。

    最佳答案

    StartTLS ,正如您所指出的,它允许升级连接以使用 TLS稍后在连接生命周期中。

    如果您想通过 TLS 连接立即,然后使用众所周知的 ldaps端口 636 (而不是 389 ) - 并使用 DialTLS:

    // l, err := ldap.Dial("tcp", "ldap.example.com:389"))

    var tlsConf *tls.Config

    ldaps, err := ldap.DialTLS("tcp", "gsuite.google.com:636", tlsConf)

    您也可以使用 DialURL它通过模式推断 TLS 或非 TLS,例如
    conn, err := ldap.DialURL("ldap://ldap.example.com") // non-TLS on default port 389
    conn, err := ldap.DialURL("ldaps://ldap.example.com") // TLS on default port 636
    conn, err := ldap.DialURL("ldaps://myserver.com:1234") // TLS on custom port 1234

    // Note: there is no way to add a custom tls.Config with this method

    所以如果使用, DialTLS : 由于您使用的是 Google 服务,它的信任证书应该已经在您的钥匙串(keychain)中,所以一个简单的 tls.Config应该足够了:
    tlsConf = &tls.Config{ServerName:"gsuite.google.com"} // <- ensure this matches the hostname provided by the server

    如果您想让测试运行起来:
    // DONT EVER USE THIS IN PRODUCTION...
    tlsConf = &tls.Config{InsecureSkipVerify: true} // DO NOT USE EVER

    要为客户端身份验证添加客户端证书:
    // Load cer & key files into a pair of []byte 
    cert, err := tls.X509KeyPair(cer, key)
    if err != nil {
    log.Fatal(err)
    }
    tlsCong := &tls.Config{Certificates: []tls.Certificate{cert}}

    关于go - Golang 的 LDAP 客户端库如何使用证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61922362/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com