我有一个来自 A CA 的通配符 SSL 证书,我正尝试让它在我的 Samba ADDC 上运行。当 smb.conf 如下所示时,Samba 将在 Samba 重启时失败:
tls enabled = yes
tls keyfile = tls/mycert.crt
tls certfile = tls/thekey.p7b
tls cafile = tls/myca.ca-bundle
# client ldap sasl wrapping = sign and seal
ldap server require strong auth = allow_sasl_over_tls
它失败并显示“TLS 无法初始化证书文件...和密钥文件”尝试验证证书也返回此错误
错误 20 位于 0 深度查找:无法获取本地颁发者证书错误验证失败
还将文件转换为 PEM 文件并尝试了,但是当它不起作用时将它们切换回来。
任何帮助都将不胜感激,谢谢!
答案1
你似乎误读了samba conf 文件的手册页。您的配置中需要调整以下选项:
tls 密钥文件 (G)
此选项可设置为包含 RSA 私钥的文件(PEM 格式)。此文件必须无需密码短语即可访问,即它不得加密。
如果路径不以 / 开头,则此路径相对于私有目录。
默认值:tls keyfile = tls/key.pem
您已将其设置为tls/mycert.crt
。而名为证书以...结尾的.crt
可能是私钥,我怀疑它实际上是你的证书。
您应该用私钥文件替换它。
您应该之前已经创建(或可能从 CA 收到)私钥文件。您可以使用cat my.key
(插入正确的名称)验证此文件是否为 PEM 格式,如果是 PEM 格式,则它将以-----BEGIN PRIVATE KEY-----
(或可能-----BEGIN RSA PRIVATE KEY-----
)开头。如果在查看文件时它显示为文本和不可打印字符的混合,则该文件为 DER 格式,您需要借助 OpenSSL 等工具将此文件转换为 PEM。
tls 证书文件 (G)
此选项可以设置为包含 RSA 证书的文件(PEM 格式)。
如果路径不以 / 开头,则此路径相对于私有目录。
默认值:tls certfile = tls/cert.pem
您已将其设置为tls/thekey.p7b
。同样,当名为钥匙带.p7b
扩展名的可能是 PEM 编码的证书,我怀疑它是 PKCS#7 格式的证书或证书包。
您应该用证书文件替换它。
我建议这应该是tls/mycert.crt
,但前提是该文件是 PEM 格式。您可以使用cat mycert.crt
where 来验证这一点,如果它是 PEM 格式,它将以 开头-----BEGIN CERTIFICATE-----
。至于私钥,OpenSSL 可以帮助您在格式之间进行转换。
如果文件是 PEM 格式的 CA 证书的串联,则可能是正确的。再次使用查看tls cafile = tls/myca.ca-bundle
文件,它应该包含一个或多个以 开头的块。myca.ca-bundle
cat
-----BEGIN CERTIFICATE-----
如果您修复了上述问题,Samba LDAPS 应该能够正常工作。但是请注意,此警告在 Samba wiki 上。