Ssl 如果必须使用Active Directory进行身份验证,是否应将LDAPS证书导入每个客户端计算机?

Ssl 如果必须使用Active Directory进行身份验证,是否应将LDAPS证书导入每个客户端计算机?,ssl,active-directory,ldap,ssl-certificate,communication,Ssl,Active Directory,Ldap,Ssl Certificate,Communication,我不熟悉LDAP、SSL和AD。我试图了解如何使用它,但即使在谷歌上搜索了很多次,也找不到一些问题的答案 安装AD证书颁发机构后,它将生成一个必须导入AD域控制器的证书。这是正确的吗? 此导入是一次性设置吗 如果客户端计算机上有一个软件想要向AD进行身份验证,那么证书也应该导入到客户端计算机上吗 仅仅在客户端计算机上的软件中将协议设置为“SSL”是没有帮助的。是否应将证书导入必须与AD对话的每个客户端计算机中的证书存储?不应在客户端计算机上导入证书。如果您使用的是自签名证书或来自内部CA的证书,

我不熟悉LDAP、SSL和AD。我试图了解如何使用它,但即使在谷歌上搜索了很多次,也找不到一些问题的答案

安装AD证书颁发机构后,它将生成一个必须导入AD域控制器的证书。这是正确的吗? 此导入是一次性设置吗

如果客户端计算机上有一个软件想要向AD进行身份验证,那么证书也应该导入到客户端计算机上吗


仅仅在客户端计算机上的软件中将协议设置为“SSL”是没有帮助的。是否应将证书导入必须与AD对话的每个客户端计算机中的证书存储?

不应在客户端计算机上导入证书。如果您使用的是自签名证书或来自内部CA的证书,则需要确保证书的颁发链在客户端计算机上最终受信任

您还需要确保DC正在收听636/3269


您可以使用RSAT工具中包含的
ldp
实用程序从客户端对此进行测试。

否,不应将其导入每台计算机,但是,应在使用LDAP的每台计算机上的受信任根证书颁发机构中安装创作机构(CA)。您的AD证书应该安装在服务端下。下面是一个脚本,可以将您的证书安装到正确的位置。安装完成后,我建议使用LDP.exe实用程序进行验证。此脚本将使用PFX证书文件。脚本会将其复制到根目录上的本地C驱动器,然后在完成后将其删除。您需要更新以下内容:

路径可以是UNClocal

$cert_name=“FullNameOfCertPfx.pfx

$cert\u path=“路径名此处\$cert\u名称”

$pwd=“在此处输入您的PFX密码

$dcs = Get-ADDomainController -Filter * | sort name
for($i =0; $i -lt $dcs.Count; $i++)
{
    $cert_name = "**FullNameOfCertPfx.pfx**"
    $cert_path = "**PathNameHere**\$cert_name"
    $cert_dst = "\\" + $dcs[$i].name + "\c$\"

    #This will copy it to the DC
    Copy-Item -Path $cert_path -Destination $cert_dst -Force -Confirm: $false -Verbose

    Write-Verbose $dcs[$i].name -Verbose

    Invoke-Command -ComputerName $dcs[$i].name -ScriptBlock {
        $pwd = "Put your PFX Password here"
        $cert_pwd = ConvertTo-SecureString -String $pwd -AsPlainText -Force
        $cert = Import-PfxCertificate -Password $cert_pwd -FilePath "C:\star_corp-nutanix-with-key.pfx" cert:\localMachine\my -Verbose
        $reg_path = "HKLM:\SOFTWARE\Microsoft\SystemCertificates\MY\Certificates\$($cert.Thumbprint)"
        $reg_dst = "HKLM:\SOFTWARE\Microsoft\Cryptography\Services\NTDS\SystemCertificates\MY\Certificates\"
        if(!(Test-Path $reg_dst))
        {
            if(!(Test-Path "HKLM:\SOFTWARE\Microsoft\Cryptography\Services\NTDS"))
            {
                New-Item -Path "HKLM:\SOFTWARE\Microsoft\Cryptography\Services\" -Name "NTDS" -Verbose
            }
            if(!(Test-Path "HKLM:\SOFTWARE\Microsoft\Cryptography\Services\NTDS\SystemCertificates"))
            {
                New-Item -Path "HKLM:\SOFTWARE\Microsoft\Cryptography\Services\NTDS" -Name "SystemCertificates" -Verbose
            }
            if(!(Test-Path "HKLM:\SOFTWARE\Microsoft\Cryptography\Services\NTDS\SystemCertificates\My"))
            {
                New-Item -Path "HKLM:\SOFTWARE\Microsoft\Cryptography\Services\NTDS\SystemCertificates" -Name "My" -Verbose
            }
            if(!(Test-Path "HKLM:\SOFTWARE\Microsoft\Cryptography\Services\NTDS\SystemCertificates\My\Certificates"))
            {
                New-Item -Path "HKLM:\SOFTWARE\Microsoft\Cryptography\Services\NTDS\SystemCertificates\My" -Name "Certificates" -Verbose
            }
        }
        else{Write-Verbose "Path is there" -Verbose}
        Move-Item $reg_path $reg_dst -Verbose
        Remove-Item -Path "c:\$cert_name" -Verbose
    }
}