Windows 2025

Active Directory : LDAP over SSL/TLS2025/10/17

 

LDAP over SSL/TLS を設定して、Active Directory に LDAPS で接続できるようにします。

[1] Let's Encrypt 等で正規の SSL/TLS 証明書を取得、または 自己署名の証明書を作成します。
自己署名の証明書を作成する場合は以下のように実行します。
正規の証明書を使用する場合は以下はスキップで OK です。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

# 有効期限 10 年で作成
# [DnsName] には Active Directory ホストを FQDN で指定
PS C:\Users\Administrator> New-SelfSignedCertificate `
-DnsName "fd3s.srv.world" `
-KeyAlgorithm "ECDSA_nistP384" `
-KeyExportPolicy "Exportable" `
-CertStoreLocation "Cert:\LocalMachine\My" `
-NotAfter (Get-Date).AddYears(10) 

   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My

Thumbprint                                Subject
----------                                -------
C14578E62D65C33A69053958BABA0A05F598DD8B  CN=fd3s.srv.world
[2] SSL/TLS 証明書の Private key のアクセス権を変更します。
正規の証明書 / 自己署名の証明書、いずれの場合も以下は設定します。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Users\Administrator> Get-ChildItem Cert:\LocalMachine\My 


   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My

Thumbprint                                Subject
----------                                -------
C14578E62D65C33A69053958BABA0A05F598DD8B  CN=fd3s.srv.world

PS C:\Users\Administrator> $ObjCert = Get-ChildItem Cert:\LocalMachine\My\C14578E62D65C33A69053958BABA0A05F598DD8B 
PS C:\Users\Administrator> $Cert = [System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions]::GetECDsaPrivateKey($ObjCert) 
PS C:\Users\Administrator> $fileName = $Cert.key.UniqueName 
PS C:\Users\Administrator> $filePath = "$env:ALLUSERSPROFILE\Microsoft\Crypto\Keys\$fileName" 

# [NETWORK SERVICE] に Full Control 追加
PS C:\Users\Administrator> icacls $filePath /grant "NT AUTHORITY\NETWORK SERVICE:(F)" 
processed file: C:\ProgramData\Microsoft\Crypto\Keys\a9f8f43b128f5e956f346cd5c9ea6c29_41bafaca-92a7-4cab-a195-66c812ee3926
Successfully processed 1 files; Failed processing 0 files

PS C:\Users\Administrator> icacls $filePath 
C:\ProgramData\Microsoft\Crypto\Keys\a9f8f43b128f5e956f346cd5c9ea6c29_41bafaca-92a7-4cab-a195-66c812ee3926 NT AUTHORITY\NETWORK SERVICE:(F)
                                                                                                           BUILTIN\Administrators:(F)
                                                                                                           NT AUTHORITY\SYSTEM:(F)

Successfully processed 1 files; Failed processing 0 files
[3] 自己署名の証明書を作成した場合は、信頼済みストアに追加しておきます。
正規の証明書を使用する場合は以下はスキップで OK です。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Users\Administrator> $ObjCert = Get-ChildItem Cert:\LocalMachine\My\C14578E62D65C33A69053958BABA0A05F598DD8B 
PS C:\Users\Administrator> Export-Certificate -Cert $ObjCert -FilePath "C:\Users\Administrator\fd3s.srv.world.cer" 

    Directory: C:\Users\Administrator


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        10/17/2025   6:25 AM            476 fd3s.srv.world.cer


PS C:\Users\Administrator> Import-Certificate -FilePath "C:\Users\Administrator\fd3s.srv.world.cer" -CertStoreLocation "Cert:\LocalMachine\Root" 

   PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\Root

Thumbprint                                Subject
----------                                -------
C14578E62D65C33A69053958BABA0A05F598DD8B  CN=fd3s.srv.world

# 一旦 再起動
PS C:\Users\Administrator> Restart-Computer -Force 
[4] 再起動後、PowerShell 等から [ldp.exe] を起動し、[connection] - [connect] を開くと以下の画面になります。
ここで、[Server] の項目には AD ホストを FQDN で入力、[Port] には [636] を指定、[SSL] にチェックを入れて、[OK] します。
[5] 以下のように [Established connection ***] と表示されれば、接続 OK です。
[6] Linux クライアントから接続テストする場合は以下のように設定します。
例として、Ubuntu 24.04 クライアントから接続します。
root@client:~#
apt -y install ldap-utils
root@client:~#
vi /etc/ldap/ldap.conf
# AD で自己署名の証明書を使用中の場合は、最終行に追記
TLS_REQCERT allow

# AD に接続
# 例としてユーザー情報取得
# -D "(任意の AD ユーザー)" -w "(AD ユーザーのパスワード)"

root@client:~#
ldapsearch -x -H ldaps://fd3s.srv.world:636 -b "dc=srv,dc=world" -D "serverworld@srv.world" -w "P@ssw0rd01" -s sub "(&(objectcategory=user)(sAMAccountName=*))"

#
# LDAPv3
# base <dc=srv,dc=world> with scope subtree
# filter: (&(objectcategory=user)(sAMAccountName=*))
# requesting: ALL
#

# Administrator, Users, srv.world
dn: CN=Administrator,CN=Users,DC=srv,DC=world
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
cn: Administrator
description: Built-in account for administering the computer/domain
distinguishedName: CN=Administrator,CN=Users,DC=srv,DC=world
instanceType: 4
whenCreated: 20251017111330.0Z
whenChanged: 20251017132240.0Z
uSNCreated: 8196
memberOf: CN=Group Policy Creator Owners,CN=Users,DC=srv,DC=world
memberOf: CN=Domain Admins,CN=Users,DC=srv,DC=world
memberOf: CN=Enterprise Admins,CN=Users,DC=srv,DC=world
memberOf: CN=Schema Admins,CN=Users,DC=srv,DC=world
memberOf: CN=Administrators,CN=Builtin,DC=srv,DC=world
uSNChanged: 16432
name: Administrator
objectGUID:: aqq75GPewEWmnCteP/Dbpw==
userAccountControl: 66048
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 0
lastLogoff: 0
lastLogon: 134051830102149507
logonHours:: ////////////////////////////
pwdLastSet: 134051726233637236
primaryGroupID: 513
objectSid:: AQUAAAAAAAUVAAAAH8UbFThaqcEcMsxj9AEAAA==
adminCount: 1
accountExpires: 0
logonCount: 11
sAMAccountName: Administrator
sAMAccountType: 805306368
objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=srv,DC=world
isCriticalSystemObject: TRUE
dSCorePropagationData: 20251017132240.0Z
dSCorePropagationData: 20251017132240.0Z
dSCorePropagationData: 20251017111451.0Z
.....
.....
関連コンテンツ