ldaps認証がrhel10でも使えるんかを試してく。

ldapサーバはdockerコンテナで作成して、sssdの設定をrhel10で試すのが主な作業。

rhelが一般向けソースコード非公開 みたいな記事が前に出てたから、rocky/almalinux/fedoraみたいなrhelクローンOSは検証に使えんって思った。

こういう方針になってまうと、いろんな開発者のええとこ取りができなくなって、1企業の開発に寄ってまうから、MS-windowsと同じ感じの品質になってくんとちゃうか。

接続元のrhel10は最近vmwareの中で作ったから、そこから設定してく。

rhel9からrhel10の相違点 にsssdのこと挙がってる。

1
2
3
4
5
6
SSSD は、DNS-over-TLS (DoT) を使用してすべての動的 DNS (dyndns) クエリーを実行することをサポートするようになりました。
:(中略)
SSSD ファイルプロバイダーが削除される
:(中略)
nscd が systemd-resolved と sssd に置き換えられる
:(中略)

DNS-over-TLS (DoT) ってのはdnsの問い合わせと応答をTLSでラップするらしい。

telnetがssh、httpがhttps、ldapがldapsやからdnsもtlsでラップするって発想かいな。めんどくさ。

ファイルプロバイダは使ってへんから放置でええやろし、nscdはrhel7までに使ってた認証の仕組みの一部やから消えてくれてええ。

たぶんrhel9のときと同じ設定でldaps認証できるんとちゃうか。

結論

openldapをdokcerコンテナで稼働させておき、rhel10ホストにsssd(System Security Services Daemon)設定を入れてssh接続するとこうなる。

rhel10-ldaps-ssd

ldapサーバ側はphpldapadmin経由で、centos8のときに作ったldifデータを流し込んだ。

rhel10-ldaps-ssd

準備

フロントエンドで使うのはmacminiの中にutmで仮想化したmacos(sequoia)。

windowsホストの中で動いてる普段利用のubuntu24の中に、openldapコンテナを作る。

dockerあるとcompose.ymlを数行書くだけでサーバ作れるからめっちゃ楽。終わったらコンテナ潰したらええだけ。

djangoやmariadbを使っててもメモリに余裕はあるから、compose.ymlを一時的に追記してopenldap用に用意しとく。

rhel10を臨時で作ったので、ここからsssd使って認証できるかをやってく。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<-----macmini sequoia----------> <--------------- VMware on Windows11 pro --------stg-->
  +-utm----------------------+    +-local ubuntu24 linux-+
  |  +-sequoia-------------+ |    | +-docker---------+   |
  |  |  vscode/cyberduck   | |    | |  +-container-+ |   |
  |  |  office/rdp         | |    | |  | Django    | |   |
  |  +---------------------+ |    | |  +-----------+ |   |
  +--------------------------+    | |  +-container-+ |   |
                                  | |  | mariadb   | |   |
                                  | |  +-----------+ |   |
                                  | |  +-container-+ |   |
                                  | |  | xrdp-ubu24| |   |
                                  | |  +-----------+ |   |
                                  | |  +-container-+ |   |
                                  | |  | https     | |   |
                                  | |  +-----------+ |   |
                                  | |  +-container-+ |   |   +-local rhel10 linux-+
                                  | |  |⭐openldap| |   |   |  ⭐️sssd            |
                                  | |  +-----------+ |   |   +--------------------+
                                  | +----------------+   |
                                  +----------------------+ 

以前の構成確認

centos8からldap認証 したときのopenldapコンテナ起動方法を同じように使う。

docker composeでLDAPSサーバ稼働させるからcompose.ymlにsv_ldap-serverとsv_ldap-adminのことを このへん読み返して コンテナとして動かす。

今回はrhelクローンやなくて、rhel10を使うからcl_red8・cl_red9のコンテナは作らん。

centos8からldaps認証 したときのsssd設定と、 rhel9クローンからのldaps認証 を踏まえてrhel10から sssd を設定して接続する。

このへんURLへのリンクばっかりになってもたな。

rhel10のsssd関連リンクはpdfで読みづらいけど、いつかhtmlになってくれるやろか。

openldapのコンテナ作る

compose.ymlにこう追記する。ldifで流し込む認証情報は小さいし、検証目的やから永続化領域いらん。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  sv_ldap-server:
    image: osixia/openldap:latest
    container_name: svldap-server
    environment:
      LDAP_ORGANISATION: "gvis"
      LDAP_DOMAIN: "intra-gavann-it.com"
      LDAP_ADMIN_PASSWORD: "hogehoge"
      LDAP_TLS_VERIFY_CLIENT: "never"
    ports:
      - "11389:389" ⭐️こっちはldap、使わん
      - "11636:636" ⭐️こっちがldaps

  sv_ldap-admin:
    image: osixia/phpldapadmin:latest
    container_name: svldap-admin
    environment:
      PHPLDAPADMIN_LDAP_HOSTS: "ldap-host"
    ports:
      - "11802:443" ⭐️このポート番号をdockerホストにブラウザ接続で指定
    depends_on:
      - "sv_ldap-server"
    links:
      - sv_ldap-server:ldap-host

dockerStart.shにはdbから起動するようにdocker composeの記述があって、次に残りのコンテナ起動するようにしてる。

1
2
3
4
:(中略)
/usr/bin/docker compose start sv_mariadb1104
/usr/bin/docker compose up --no-recreate -d
:(中略)

こうして動かす。pullしてすぐ動く。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
nari@nafslinux-ubu24:/docker$ sh ./dockerStart.sh
[+] Running 1/1
 ✔ Container docker-sv_mariadb1104-1  Started      0.1s
[+] Running 20/20
 ✔ sv_ldap-admin Pulled                            10.5s ⭐️がんばれー
   ✔ 1ab2bdfe9778 Pull complete                    4.7s
   ✔ 0abcaf321aa9 Pull complete                    4.7s
   ✔ 6d688c3d4e02 Pull complete                    5.5s
   ✔ 454331b99b9a Pull complete                    5.5s
   ✔ 5cada7c8cb4e Pull complete                    5.5s
   ✔ 1c9252038144 Pull complete                    7.6s
   ✔ 5b1bb72ef8f6 Pull complete                    7.7s
   ✔ b7637df040ab Pull complete                    7.7s
   ✔ f14c298e98cf Pull complete                    7.7s
 ✔ sv_ldap-server Pulled                           7.5s ⭐️がんばれー
   ✔ 45b42c59be33 Pull complete                    2.5s
   ✔ ae7fb8f59730 Pull complete                    2.5s
   ✔ 55443d9da5d5 Pull complete                    3.5s
   ✔ edbb56ba2f49 Pull complete                    3.5s
   ✔ 8690d28b09a7 Pull complete                    3.5s
   ✔ 7f3b6edb2b51 Pull complete                    4.6s
   ✔ 176dedf70b8e Pull complete                    4.6s
   ✔ 036fb52cada7 Pull complete                    4.6s
   ✔ 94404c4ec0d9 Pull complete                    4.6s
[+] Running 8/8  ⭐️ ldap以外のコンテナもがんばれー
 ✔ Container docker-sv_mariadb1104-1   Runnin...   0.0s
 ✔ Container svldap-server             Started     0.6s
 ✔ Container svldap-admin              Started     0.5s
 ✔ Container docker-sv_ora21-1         Started     0.4s
 ✔ Container docker-cl_ubu24gvis-1     Started     0.4s
 ✔ Container docker-sv_django-1        Started     0.4s
 ✔ Container docker-sv_jupyter-1       Started     0.2s
 ✔ Container docker-sv_https-portal-1  Start...    0.3s
nari@nafslinux-ubu24:/docker$
nari@nafslinux-ubu24:/docker$ docker compose ps | grep ldap  ⭐️ポート転送もできてて動いたな
svldap-admin  osixia/phpldapadmin:latest "/container/tool/run" sv_ldap-admin  5 minutes ago Up 5 minutes 0.0.0.0:11801->80/tcp, [::]:11801->80/tcp, 0.0.0.0:11802->443/tcp, [::]:11802->443/tcp
svldap-server osixia/openldap:latest     "/container/tool/run" sv_ldap-server 5 minutes ago Up 5 minutes 0.0.0.0:11389->389/tcp, [::]:11389->389/tcp, 0.0.0.0:11636->636/tcp, [::]:11636->636/tcp
nari@nafslinux-ubu24:/docker$

動かした時のdocker statsで確認したメモリ消費具合はこんな感じ。1つ目と2つ目で動いとるし、他のコンテナも元気に稼働できとる。

1
2
3
4
5
6
7
8
9
CONTAINER ID   NAME                       CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O         PIDS 
d7efa5a449c7   svldap-admin               0.01%     77.84MiB / 15.57GiB   0.49%     19kB / 126B       56.9MB / 266kB    139 
57a6b64dd158   svldap-server              0.00%     33.21MiB / 15.57GiB   0.21%     19.5kB / 126B     27.1MB / 111kB    4 
dd1ead7d45a7   docker-sv_jupyter-1        0.00%     110.3MiB / 15.57GiB   0.69%     19.4kB / 126B     54MB / 8.19kB     1 
c0c580fb6ad1   docker-cl_ubu24gvis-1      0.00%     21.11MiB / 15.57GiB   0.13%     19.3kB / 126B     26.1MB / 45.1kB   2 
3ef498a68b97   docker-sv_django-1         0.02%     62.26MiB / 15.57GiB   0.39%     17.5MB / 9.95kB   0B / 8.19kB       15 
15bf3baf0e18   docker-sv_https-portal-1   2.06%     23.88MiB / 15.57GiB   0.15%     19.4kB / 126B     23.6MB / 418kB    18 
006c5c958ee5   docker-sv_mariadb1104-1    0.01%     1.563GiB / 15.57GiB   10.04%    100kB / 70MB      1.41GB / 49.2kB   8 
d3f828065784   docker-sv_ora21-1          2.65%     4.002GiB / 15.57GiB   25.70%    19.4kB / 390B     669MB / 69.2MB    107 

ldapサーバとldapphpadminでメモリ110MBぐらい使うぐらい。nmonで見ても余裕あるしこのまま行っとく。

1
2
3
4
5
│ Memory and Swap ─                                                      │
│ PageSize:4KB   RAM-Memory  Swap-Space       High-Memory     Low-Memory  │
│ Total (MB)        15946.2      3868.0       - not in use   - not in use │
│ Free  (MB)         7202.9      3868.0                                   │
│ Free Percent         45.2%      100.0%                                  │

ブラウザ開いてログインしてみたら、あれ失敗した・・・。認証失敗しよるやんけ。

rhel10-ldaps-ssd

少し考えて、もういっちょ。cn=adminって足した。

rhel10-ldaps-ssd

ログインできた。cn=adminってalmalinux9でやったときは書いてへんかったけど、なんでログインできてたんやろな。

rhel10-ldaps-ssd

ldapサーバのldifデータ

前に3ユーザ登録して作ってphpldapadminからエクスポートしたことある。

これをdockerホストにつないで流し込んだらええ。

openldapのコンテナへphpldapadmin使ってインポートしたら、認証のための下準備ができる。

gvisExport.ldif
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
version: 1

dn: dc=intra-gavann-it,dc=com ⭐️もうあるから、ここは失敗するはず
objectClass: dcObject
objectClass: organization
objectClass: top
dc: intra-gavann-it
o: gvis

dn: ou=gvis,dc=intra-gavann-it,dc=com
objectClass: organizationalUnit
objectClass: top
ou: gvis

dn: cn=gavann it,ou=gvis,dc=intra-gavann-it,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: gavann it
gidNumber: 7502
homeDirectory: /home/gavann-it
sn: it
uid: gavann-it ⭐️ユーザ1つめ
uidNumber: 2000
givenName: gavann
loginShell: /bin/bash
userPassword:: xxxxxxxxxxxxxxxxxxx

dn: cn=gvis-group,ou=gvis,dc=intra-gavann-it,dc=com
objectClass: posixGroup
objectClass: top
cn: gvis-group ⭐️グループ
gidNumber: 7502

dn: cn=gavann is,ou=gvis,dc=intra-gavann-it,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: gavann is
gidNumber: 7502
homeDirectory: /home/gavann-is
sn: it
uid: gavann-is ⭐️ユーザ2つめ
uidNumber: 2001
givenName: gavanns
loginShell: /bin/bash
userPassword:: xxxxxxxxxxxxxxxxxxx

dn: cn=gavann iu,ou=gvis,dc=intra-gavann-it,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
cn: gavann iu
gidNumber: 7502
homeDirectory: /home/gavann-iu
sn: iu
uid: gavann-iu ⭐️ユーザ3つめ
uidNumber: 2002
givenName: gavann
loginShell: /bin/bash
userPassword:: xxxxxxxxxxxxxxxxxxx

phpldapadminに接続してインポート

インポートしてみる。

rhel10-ldaps-ssd

最初のほうにあったdc=intra-gavann-it,dc=comの定義は既存やからエラーになるけど、他はインポートできる。これでええ。

rhel10-ldaps-ssd

ouの下にあるユーザとグループ見たらできとる。

rhel10-ldaps-ssd

作ったユーザに設定してた元々のパスワード忘れたから、3ユーザ分を設定しなおしとく。

rhel10-ldaps-ssd

ldapサーバから電子証明

openldapの readmeに書いてある んやけど、dockerコンテナの中で自動作成された電子証明取ってくる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
nari@nafslinux-ubu24:/docker$ docker compose exec sv_ldap-server bash ⭐️コンテナにログインする
root@57a6b64dd158:/# cd /container/service/slapd/assets/certs/
root@57a6b64dd158:/container/service/slapd/assets/certs# ls -l
total 20
lrwxrwxrwx 1 openldap openldap   62 Sep 27 23:08 ca.crt -> /container/service/:ssl-tools/assets/default-ca/default-ca.pem
-rw------- 1 openldap openldap  424 Feb 19  2021 dhparam.pem
-rw-r--r-- 1 openldap openldap 1099 Sep 27 23:08 ldap.crt ⭐️あるやん
-rw------- 1 openldap openldap  288 Sep 27 23:08 ldap.key
-rw-rw-r-- 1 openldap openldap  173 Feb 19  2021 README.md
root@57a6b64dd158:/container/service/slapd/assets/certs# cp -p ./ldap.crt /tmp ⭐️/tmpにいったんコピー
root@57a6b64dd158:/container/service/slapd/assets/certs# exit
exit
nari@nafslinux-ubu24:/docker$ docker compose cp sv_ldap-server:/tmp/ldap.crt ./ ⭐️コンテナからローカルutuntuにコピー
[+] Copying 1/1
 ✔ svldap-server copy svldap-server:/tmp/ldap.crt to ./ Copied                                 0.0s 
nari@nafslinux-ubu24:/docker$ ls -l ldap.crt 
-rw-r--r-- 1 nari nari 1099  9月 28 08:08 ldap.crt ⭐️取れた
nari@nafslinux-ubu24:/docker$ 

ubuntuはsmb公開領域持ってるから、docker compose cpしたファイルを移動してwindows側で確認してみると、前と同じ有効期間が1年の証明書ができとる。

rhel10-ldaps-ssd

実務では100年ぐらいの有効期間で電子証明作ってもらってたかな。

rhel10からldaps認証するための設定

rhel10稼働させて、モジュールのインストールと電子証明の設置と、設定ファイル作成やってく。

dnfでインストール

rhelはなんとなくdnfで競合起こす印象があるから怖いなぁ。関連するのを1つずつやってく。

1
2
3
4
5
6
7
# dnf clean all
# dnf update
# dnf install nmap
# dnf install openssl openldap-clients
# dnf install sssd sssd-tools sssd-ldap
# dnf install oddjob-mkhomedir
# dnf install authselect

ログ全部は省くけど、モジュールをインストールした結果に見えてたバージョンはこんな感じやった。

root@gvis-rhel10:~# dnf clean all
サブスクリプション管理リポジトリーを更新しています。
12 ファイルが削除されました
root@gvis-rhel10:~# dnf update
:(中略)
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
nmap-7.92-3.el10.x86_64.rpm                                          19 MB/s | 5.6 MB     00:00 
:(中略)
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/3): openssl-3.2.2-16.el10_0.4.x86_64.rpm                         3.6 MB/s | 1.1 MB     00:00    
(2/3): openssl-libs-3.2.2-16.el10_0.4.x86_64.rpm                    6.5 MB/s | 2.1 MB     00:00    
(3/3): openldap-clients-2.6.8-3.el10.x86_64.rpm                      61 kB/s | 188 kB     00:03
:(中略)
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/4): python3-sss-2.10.2-3.el10_0.2.x86_64.rpm                     6.4 kB/s |  27 kB     00:04    
(2/4): python3-sssdconfig-2.10.2-3.el10_0.2.noarch.rpm               17 kB/s |  75 kB     00:04    
(3/4): sssd-dbus-2.10.2-3.el10_0.2.x86_64.rpm                        28 kB/s | 129 kB     00:04    
(4/4): sssd-tools-2.10.2-3.el10_0.2.x86_64.rpm                       40 kB/s | 182 kB     00:04
:(中略)
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/2): oddjob-0.34.7-14.el10.x86_64.rpm                             145 kB/s |  75 kB     00:00    
(2/2): oddjob-mkhomedir-0.34.7-14.el10.x86_64.rpm                    15 kB/s |  32 kB     00:02  
:(中略)
パッケージ authselect-1.5.0-8.el10.x86_64 は既にインストールされています。
依存関係が解決しました。
行うべきことはありません。
完了しました!
root@gvis-rhel10:~# 

sssd-ldapってパッケージはrhel10ではどっか行った? インストールした結果を見落としとるな。

1
2
3
root@gvis-rhel10:~# dnf list --installed | grep sssd-ldap
sssd-ldap.x86_64                                     2.10.2-3.el10_0.2              @rhel-10-for-x86_64-baseos-rpms   
root@gvis-rhel10:~# 

入っとった。

authselectのおまじない

特にエラーなかったらそれでええ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
root@gvis-rhel10:~# authselect select sssd with-sudo with-mkhomedir --force
バックアップは /var/lib/authselect/backups/2025-09-29-21-05-01.lHteGw に保存されました
プロファイル "sssd" が設定されました。

Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.
 
- with-mkhomedir is selected, make sure pam_oddjob_mkhomedir module
  is present and oddjobd service is enabled and active
  - systemctl enable --now oddjobd.service

root@gvis-rhel10:~#

ldapsのポート使えるか確認

ldapsで使うポート番号は636。

docker composeで書いたcompose.ymlの中にこう書いたから、rhel10から見えるポート番号は11636や。

1
2
3
ports:
  - "11389:389"
  - "11636:636"

rhel10からldapsのポート使えるか確認してみる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
root@gvis-rhel10:~# nmap -p11636 -Pn nafslinux.intra.gavann-it.com
Starting Nmap 7.92 ( https://nmap.org ) at 2025-09-29 06:49 JST
Nmap scan report for nafslinux.intra.gavann-it.com (192.168.1.118)
Host is up (0.00032s latency). ⭐️ldapsサーバ生きてるってよ

PORT      STATE SERVICE
11636/tcp open  unknown
MAC Address: 00:50:56:20:02:06 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 0.43 seconds
root@gvis-rhel10:~# 

電子証明置く

いったんwindows側に置いた電子証明をrhel10の/tmpに持ってく。

rhel10-ldaps-ssd

置いたファイルを/etc/openldap/certs/に移動させとく。

1
2
3
4
5
6
7
8
9
root@gvis-rhel10:~# cat /etc/os-release | grep PRETTY
PRETTY_NAME="Red Hat Enterprise Linux 10.0 (Coughlan)"
root@gvis-rhel10:~# ls -l /tmp/ldap.crt 
-rw-r--r-- 1 nari nari 1099  9月 28 08:08 /tmp/ldap.crt ⭐️持ってったファイル
root@gvis-rhel10:~# mv /tmp/ldap.crt /etc/openldap/certs/ ⭐️ここに置く
root@gvis-rhel10:~# ls -l /etc/openldap/certs/
合計 4
-rw-r--r-- 1 nari nari 1099  9月 28 08:08 ldap.crt ⭐️置けた
root@gvis-rhel10:~#  

電子証明の正常性を確認

ちゃんと使える内容になっているか確認。

7200秒待ってから応答が戻るので、timeout使って3秒で処理を切り上げる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
root@gvis-rhel10:/etc/openldap# timeout 3 openssl s_client -connect nafslinux.intra.gavann-it.com:11636 ⭐️3秒で戻ってこいや
Connecting to 192.168.1.118
CONNECTED(00000003)
depth=1 C=US, ST=New Mexico, L=Albuquerque, O=A1A Car Wash, OU=Information Technology Dep., CN=docker-light-baseimage
verify error:num=19:self-signed certificate in certificate chain ⭐️errorで19って戻るのは自己証明やからやな
verify return:1
depth=1 C=US, ST=New Mexico, L=Albuquerque, O=A1A Car Wash, OU=Information Technology Dep., CN=docker-light-baseimage
verify return:1
depth=0 C=US, ST=New Mexico, L=Albuquerque, O=A1A Car Wash, OU=Information Technology Dep., CN=57a6b64dd158
verify return:1
---
Certificate chain
 0 s:C=US, ST=New Mexico, L=Albuquerque, O=A1A Car Wash, OU=Information Technology Dep., CN=57a6b64dd158
   i:C=US, ST=New Mexico, L=Albuquerque, O=A1A Car Wash, OU=Information Technology Dep., CN=docker-light-baseimage
   a:PKEY: id-ecPublicKey, 384 (bit); sigalg: ecdsa-with-SHA384
   v:NotBefore: Sep 27 23:03:00 2025 GMT; NotAfter: Sep 27 23:03:00 2026 GMT
:(中略)
subject=C=US, ST=New Mexico, L=Albuquerque, O=A1A Car Wash, OU=Information Technology Dep., CN=57a6b64dd158
issuer=C=US, ST=New Mexico, L=Albuquerque, O=A1A Car Wash, OU=Information Technology Dep., CN=docker-light-baseimage
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: ECDSA
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1785 bytes and written 417 bytes
Verification error: self-signed certificate in certificate chain ⭐️errorで戻るのは自己証明やから
---
New, TLSv1.2, Cipher is ECDHE-ECDSA-AES256-GCM-SHA384
Server public key is 384 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session: ⭐️電子証明認識してそう
    Protocol  : TLSv1.2
    Cipher    : ECDHE-ECDSA-AES256-GCM-SHA384
    Session-ID: 2AE300C216BADA0BF504802EABBC9E22C84B95739EB1C8617600AB30BB914CEF
    Session-ID-ctx: 
    Master-Key: 5D0D50DACD0C4119BA13018602964E14AF31342DCE007C9B332EAD9944372DF38DE5F5EFA81D238A648C1E06EB616C5E
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1759178513
    Timeout   : 7200 (sec) ⭐️2時間待ちよるねん
    Verify return code: 19 (self-signed certificate in certificate chain)
    Extended master secret: yes
---
root@gvis-rhel10:/etc/openldap#

設定ファイル

almalinux9でやったのと同じ設定してく。

ldapクライアントの設定

openldapサーバから見たrhel10はldapクライアント。

viで開いて貼り付けとく。

ldapsのURIに指定するのは、docker composeで動かしてるホスト名にポート番号くっつけて書いとく。

/etc/openldap/ldap.conf
1
2
3
TLS_CACERT      /etc/openldap/certs/ldap.crt ⭐️設置した電子証明のフルパス
URI             ldaps://nafslinux.intra.gavann-it.com:11636 ⭐️dockerの親ホスト名と公開してるldapsのポート番号書く
BASE            dc=intra-gavann-it,dc=com ⭐️ベース定義名前そのまま

sssdの設定

/etc/sssd/sssd.conf
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[sssd]
debug_level = 4
services = nss, pam, ifp, sudo
domains = gvis
[nss]
homedir_substring = /home
filter_groups = root
filter_users = root
[pam]
[sudo]
[domain/gvis]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
sudo_provider = ldap
autofs_provider = ldap
cache_credentials = True
case_sensitive = False
ldap_uri = ldaps://nafslinux.intra.gavann-it.com:11636      ⭐️ldaps指定、dockerコンテナの公開ポートも書く
ldap_search_base = ou=gvis, dc=intra-gavann-it,dc=com
ldap_default_bind_dn = cn=admin, dc=intra-gavann-it,dc=com
ldap_tls_cacert = /etc/openldap/certs/ldap.crt              ⭐️設置した証明書を指定
ldap_id_use_start_tls = True                                ⭐️ldapsのための設定
ldap_tls_reqcert = never                                    ⭐️自己証明書のための設定
access_provider = permit                                    ⭐️こっからはsss_obfuscate使って追記
resolver_provider = ldap
ldap_default_authtok_type = obfuscated_password
ldap_default_authtok = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

最後の4行はコマンドラインで追記する。パスワードはさっきのphpwebadminにログインするときのパスワードでええ。

1
2
3
4
root@gvis-rhel10:/etc/openldap# sss_obfuscate -d gvis
Enter password: 
Re-enter password: 
root@gvis-rhel10:/etc/openldap#

sssd.confはパーミッションいじって、sssdとoddjobdのサービス再起動する。

oddjobdはldap認証ユーザがログインしたとき、ユーザのフォルダ/home/xxxがなかったら用意してくれる役割やったかな。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
root@gvis-rhel10:~# chmod 600 /etc/sssd/sssd.conf  ⭐️パーミッションいじる
root@gvis-rhel10:~# systemctl restart sssd.service ⭐️sssd.confを反映して再起動してちょ
root@gvis-rhel10:~# systemctl status sssd.service 
● sssd.service - System Security Services Daemon
     Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-09-30 05:54:52 JST; 21s ago
 Invocation: 6f33b20cb09d4743a446d48b6055dc70
    Process: 22543 ExecStartPre=/bin/chown -f -R -H root:sssd /etc/sssd (code=exited, status=0/SUCC>
    Process: 22545 ExecStartPre=/bin/chmod -f -R g+r /etc/sssd (code=exited, status=0/SUCCESS)
    Process: 22547 ExecStartPre=/bin/chmod -f g+x /etc/sssd (code=exited, status=0/SUCCESS)
    Process: 22549 ExecStartPre=/bin/chmod -f g+x /etc/sssd/conf.d (code=exited, status=0/SUCCESS)
    Process: 22551 ExecStartPre=/bin/chmod -f g+x /etc/sssd/pki (code=exited, status=0/SUCCESS)
    Process: 22553 ExecStartPre=/bin/sh -c /bin/chown -f -h sssd:sssd /var/lib/sss/db/*.ldb (code=e>
    Process: 22555 ExecStartPre=/bin/chown -f -R -h sssd:sssd /var/lib/sss/gpo_cache (code=exited, >
    Process: 22557 ExecStartPre=/bin/sh -c /bin/chown -f -h sssd:sssd /var/log/sssd/*.log (code=exi>
   Main PID: 22559 (sssd)
      Tasks: 6 (limit: 22731)
     Memory: 47.4M (peak: 47.7M)
        CPU: 99ms
     CGroup: /system.slice/sssd.service
             ├─22559 /usr/sbin/sssd -i --logger=files
             ├─22560 /usr/libexec/sssd/sssd_be --domain gvis --logger=files
             ├─22561 /usr/libexec/sssd/sssd_nss --logger=files
             ├─22562 /usr/libexec/sssd/sssd_pam --logger=files
             ├─22563 /usr/libexec/sssd/sssd_ifp --logger=files
             └─22564 /usr/libexec/sssd/sssd_sudo --logger=files

 9月 30 05:54:52 gvis-rhel10 systemd[1]: Starting sssd.service - System Security Services Daemon...
 9月 30 05:54:52 gvis-rhel10 sssd[22559]: Starting up
 9月 30 05:54:52 gvis-rhel10 sssd_be[22560]: Starting up
 9月 30 05:54:52 gvis-rhel10 sssd_nss[22561]: Starting up
 9月 30 05:54:52 gvis-rhel10 sssd_sudo[22564]: Starting up
 9月 30 05:54:52 gvis-rhel10 sssd_pam[22562]: Starting up
 9月 30 05:54:52 gvis-rhel10 sssd_ifp[22563]: Starting up
 9月 30 05:54:52 gvis-rhel10 systemd[1]: Started sssd.service - System Security Services Daemon.
root@gvis-rhel10:~# systemctl enable oddjobd ⭐️oddjobdサービス有効にする
Created symlink '/etc/systemd/system/multi-user.target.wants/oddjobd.service''/usr/lib/systemd/system/oddjobd.service'.
root@gvis-rhel10:~# systemctl status oddjobd 
○ oddjobd.service - privileged operations for unprivileged applications
     Loaded: loaded (/usr/lib/systemd/system/oddjobd.service; enabled; preset: disabled)
     Active: inactive (dead)
root@gvis-rhel10:~# systemctl start oddjobd 
root@gvis-rhel10:~# systemctl status oddjobd ⭐️起動状態にエラーなさそうや
● oddjobd.service - privileged operations for unprivileged applications
     Loaded: loaded (/usr/lib/systemd/system/oddjobd.service; enabled; preset: disabled)
     Active: active (running) since Tue 2025-09-30 06:00:10 JST; 28s ago
 Invocation: daa322d650854e3ba3b14caaa6eff8f6
   Main PID: 22674 (oddjobd)
      Tasks: 1 (limit: 22731)
     Memory: 580K (peak: 1M)
        CPU: 4ms
     CGroup: /system.slice/oddjobd.service
             └─22674 /usr/sbin/oddjobd -n -p /run/oddjobd.pid -t 300

 9月 30 06:00:10 gvis-rhel10 systemd[1]: Started oddjobd.service - privileged operations for unpriv>
root@gvis-rhel10:~# 

設定ファイルがうまいこと書けてへんと、systemctl statusの結果にエラーが入る。

気合いと根性で書き直してサービス起動できるまでがんばらなアカン。

sshdの設定

sshdの接続許可設定を追記。これやっとかなローカル定義のOSユーザは接続できても、ldap認証したユーザで接続できんかったんとちゃうかな。

1
AllowUsers *

サービス再起動もやっとく。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
root@gvis-rhel10:/etc/ssh# systemctl restart sshd 
root@gvis-rhel10:/etc/ssh# systemctl status sshd
● sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-09-30 06:12:41 JST; 8s ago
 Invocation: 257c97f71c974787964a9744dcee6ae7
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 22838 (sshd)
      Tasks: 1 (limit: 22731)
     Memory: 1M (peak: 1.2M)
        CPU: 5ms
     CGroup: /system.slice/sshd.service
             └─22838 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

 9月 30 06:12:41 gvis-rhel10 systemd[1]: Starting sshd.service - OpenSSH server daemon...
 9月 30 06:12:41 gvis-rhel10 (sshd)[22838]: sshd.service: Referenced but unset environment variable>
 9月 30 06:12:41 gvis-rhel10 sshd[22838]: Server listening on 0.0.0.0 port 22.
 9月 30 06:12:41 gvis-rhel10 systemd[1]: Started sshd.service - OpenSSH server daemon.
 9月 30 06:12:41 gvis-rhel10 sshd[22838]: Server listening on :: port 22.
root@gvis-rhel10:/etc/ssh# 

macからssh接続しながら、sshdデーモン再起動しても接続切れへんのはいつも不思議。

レガシー設定

DEFAULT設定になってるか確認。やらんけど、legacyに変更したらldapsやのうてldap使える。

1
2
3
root@gvis-rhel10:~# update-crypto-policies --show
DEFAULT
root@gvis-rhel10:~# 

rhel8あたりからセキュリティ設定は厳しめになってたはず。

ポート番号変わるけど、ldapsやのうてldapでつなぐときに レガシー設定することある。

ssh接続前の確認

sssdからldapsへのオンライン確認と認証情報取得できるかの確認。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
root@gvis-rhel10:~# sssctl domain-status gvis
Online status: Online ⭐️つながっとるな

Active servers:
LDAP: nafslinux.intra.gavann-it.com

Discovered LDAP servers:
- nafslinux.intra.gavann-it.com ⭐️dockerの親ホスト名がldapサーバとして見えとる

root@gvis-rhel10:~# 
root@gvis-rhel10:~# getent passwd gavann-it
gavann-it:*:2000:7502:gavann it:/home/gavann-it:/bin/bash ⭐️ldifファイルをインポートしたユーザ見えとる
root@gvis-rhel10:~# getent passwd gavann-is 
gavann-is:*:2001:7502:gavann is:/home/gavann-is:/bin/bash ⭐️ldifファイルをインポートしたユーザ見えとる
root@gvis-rhel10:~# getent passwd gavann-iu
gavann-iu:*:2002:7502:gavann iu:/home/gavann-iu:/bin/bash ⭐️ldifファイルをインポートしたユーザ見えとる
root@gvis-rhel10:~# 

Onlineって返ってきてgetentで情報取れとるな。ここまで来たらsshでほぼ接続できる。

もしも設定ファイルやldapサーバと連携うまく行ってなかったり、わけわかめな状態になったら キャッシュの削除 やったらええ。

ここまでストレートに来てるからやらんでもええけど、キャッシュ削除やってみたらこうなる。

1
2
3
4
5
6
root@gvis-rhel10:~# sssctl cache-remove
SSSD must not be running. Stop SSSD now? (yes/no) [yes] 
Creating backup of local data...
Removing cache files...
SSSD needs to be running. Start SSSD now? (yes/no) [yes] 
root@gvis-rhel10:~# 

ssh接続

接続してみましょ。初回接続やからちょっと長いけどログインはできとる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
root@gvis-rhel10:~# cat /etc/passwd | grep gavann | wc -l 
0 ⭐️rhel10のローカルホストにはldapサーバにインポート作成した3つのユーザはあらへん
root@gvis-rhel10:~# ssh gavann-it@localhost ⭐️つないでちょ
The authenticity of host 'localhost (::1)' can't be established.
ED25519 key fingerprint is SHA256:QDiLFrgEOQtAjA2KZfswTYrwiVfSBQXcfq7xIvI3ksw.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'localhost' (ED25519) to the list of known hosts.
gavann-it@localhost's password: 

1 device has a firmware upgrade available.
Run `fwupdmgr get-upgrades` for more information.

Register this system with Red Hat Insights: rhc connect

Example:
# rhc connect --activation-key <key> --organization <org>

The rhc client and Red Hat Insights will enable analytics and additional
management capabilities on your system.
View your connected systems at https://console.redhat.com/insights

You can learn more about how to register your system 
using rhc at https://red.ht/registration
gavann-it@gvis-rhel10:~$ whoami
gavann-it ⭐️つながった!!
gavann-it@gvis-rhel10:~$ id
uid=2000(gavann-it) gid=7502(gvis-group) groups=7502(gvis-group) ⭐️ldapサーバにあるユーザとグループ使えとる
gavann-it@gvis-rhel10:~$ 

ログインできたやん。せやけどsudoしてみたらアカンかった・・・。

1
2
3
4
gavann-it@gvis-rhel10:~$ sudo su - 
[sudo] gavann-it のパスワード:
gavann-it は gvis-rhel10 上で sudo を実行することを許可されていません。
gavann-it@gvis-rhel10:~$ 

なんやねん、authselectwith-sudoつけといたらええんとちゃうんかったかいな?

実務で同じような問題あったような気がするけど、どう対処したか忘れたな。

めんどくさいわぁ。

さっきグループ名にgid=7502(gvis-group)ってあったから、その名前でvisudoから追加したる。

1
2
3
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL
%gvis-group   ALL=(ALL)       ALL ⭐️足した

visudoで書き足すとき書き間違えたらsudoできんようになるで。

sudoもう1回やったる。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
root@gvis-rhel10:~# ssh gavann-it@localhost
gavann-it@localhost's password: 
Register this system with Red Hat Insights: rhc connect

Example:
# rhc connect --activation-key <key> --organization <org>

The rhc client and Red Hat Insights will enable analytics and additional
management capabilities on your system.
View your connected systems at https://console.redhat.com/insights

You can learn more about how to register your system 
using rhc at https://red.ht/registration
Last login: Tue Sep 30 07:59:31 2025 from ::1
gavann-it@gvis-rhel10:~$ sudo su - ⭐️いったれー!
[sudo] gavann-it のパスワード:
最終ログイン: 2025/09/30 () 07:58:58 JST 端末:pts/3
root@gvis-rhel10:~# whoami
root ⭐️いけたがな
root@gvis-rhel10:~# id
uid=0(root) gid=0(root) groups=0(root)
root@gvis-rhel10:~# 

これでたいていの作業はできるやろ。

端折ったけど、残りの2ユーザでもssh接続できたから、oddjobが働いてくれて作業フォルダ作成できとった。

1
2
3
4
5
6
7
root@gvis-rhel10:~# ls -lh /home
合計 4.0K
drwx------   3 gavann-is gvis-group   99  9月 30 07:43 gavann-is ⭐️できとる
drwx------   3 gavann-it gvis-group   99  9月 30 07:43 gavann-it ⭐️できとる
drwx------   3 gavann-iu gvis-group   99  9月 30 07:43 gavann-iu ⭐️できとる
drwx------. 15 nari      nari       4.0K  9月 24 05:17 nari
root@gvis-rhel10:~# 

ここまでで、rhel10でもldapサーバへ認証問い合わせして使えそうってことはわかった。

フルリストアもやったし、年末あたりまでvmwareの中で生かしておいて年明けにOS削除やな。