我正在尝试使用G Suite's LDAPS server连接到Golang's LDAP library。
但是,在example中,我不太了解两件事。
似乎首先通过未加密的LDAP连接?然后升级?是的,如果是这样,我是否只能通过连接加密开始使用?
Google提供了一个.cer和.key文件来连接到其ldap服务器。我看不到它在哪里使用这些文件。我在他们的文档中确实看到很多LDAP客户端要求将文件组合成.p12。 Go有必要吗?
如果回答这个问题的人可以提供一个例子,那将真的有帮助。谢谢。
答案 0 :(得分:1)
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服务,因此密钥证书中应该已经存在信任证书,因此简单的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}}