如何使用加密密钥建立安全的 ldap 连接?
How to make secure ldap connection with encrypted key?
我正在编写下面的 ldap 客户端代码以连接到安全的 ldap 服务器。
import ldap
ldap.set_option(ldap.OPT_X_TLS_KEYFILE, 'a/b/key.txt')
但是我的 key.txt 包含一个需要密码的加密密钥。
你能告诉我如何为上述功能传递密码吗?
我正在使用 python-ldap 模块。
我还尝试通过将解密的密钥保存在 StringIO 对象中来使用 StringIO 对象,但是 set_option 方法需要字符串值而不是 StringIO 对象。
python-ldap 模块是 OpenLDAP 包的包装器。不幸的是,OpenLDAP 无法使用受密码保护的私钥进行操作。并且您不能为密钥提供文件描述符,您应该提供路径或类似路径的对象以供 c 语言 open() 函数使用。你有几种方法:
- 保持私钥解密(不是最好,但最简单);
- 将私钥解密到临时文件或类文件对象中,提供给ldap,然后删除;
- 使用 Python ldap3 package;
- 创建 LDAP 到 LDAP-TLS 代理
OpenLDAP 源代码的一部分,其中 OPT_X_TLS_KEYFILE
值被用作 path
参数:
static int
tlsg_getfile( const char *path, gnutls_datum_t *buf )
{
int rc = -1, fd;
struct stat st;
fd = open( path, O_RDONLY );
if ( fd >= 0 && fstat( fd, &st ) == 0 ) {
buf->size = st.st_size;
buf->data = LDAP_MALLOC( st.st_size + 1 );
if ( buf->data ) {
rc = read( fd, buf->data, st.st_size );
close( fd );
if ( rc < st.st_size )
rc = -1;
else
rc = 0;
}
}
return rc;
}
我正在编写下面的 ldap 客户端代码以连接到安全的 ldap 服务器。
import ldap
ldap.set_option(ldap.OPT_X_TLS_KEYFILE, 'a/b/key.txt')
但是我的 key.txt 包含一个需要密码的加密密钥。
你能告诉我如何为上述功能传递密码吗?
我正在使用 python-ldap 模块。
我还尝试通过将解密的密钥保存在 StringIO 对象中来使用 StringIO 对象,但是 set_option 方法需要字符串值而不是 StringIO 对象。
python-ldap 模块是 OpenLDAP 包的包装器。不幸的是,OpenLDAP 无法使用受密码保护的私钥进行操作。并且您不能为密钥提供文件描述符,您应该提供路径或类似路径的对象以供 c 语言 open() 函数使用。你有几种方法:
- 保持私钥解密(不是最好,但最简单);
- 将私钥解密到临时文件或类文件对象中,提供给ldap,然后删除;
- 使用 Python ldap3 package;
- 创建 LDAP 到 LDAP-TLS 代理
OpenLDAP 源代码的一部分,其中 OPT_X_TLS_KEYFILE
值被用作 path
参数:
static int
tlsg_getfile( const char *path, gnutls_datum_t *buf )
{
int rc = -1, fd;
struct stat st;
fd = open( path, O_RDONLY );
if ( fd >= 0 && fstat( fd, &st ) == 0 ) {
buf->size = st.st_size;
buf->data = LDAP_MALLOC( st.st_size + 1 );
if ( buf->data ) {
rc = read( fd, buf->data, st.st_size );
close( fd );
if ( rc < st.st_size )
rc = -1;
else
rc = 0;
}
}
return rc;
}