Nextcloudで文書管理をはじめて2ヶ月が経過した。
その後に取り組んでいたドメインコントローラー(Samba ad dc)のアップグレードが完了したのだが、いつの間にかNextcloudでログインできなくなっていた。
新しく作ったSamba ad dcはStrong Authを要求しているので、NextcloudのLDAP認証をLDAPS認証に移行する必要があった。
やることは、
- オレオレ認証局のCA証明書を登録する。
- Nextcloudの認証でLDAPSを使うようにする。
の2つで難しいわけではないけれど、途中で失敗して少し焦ったので、リカバリーを含めてメモを残すことにした。
LDAPSへの移行
CA証明書の登録
ウチの中でオレオレ認証局を運用しており、CA証明書がある。
これを ca.crt という名前で保管しておいて、以下のスクリプトを走らせる。
update-ca.crt.sh
#!/bin/bash docker cp ca.crt nextcloud:/usr/local/share/ca-certificates docker exec nextcloud update-ca-certificates
$ chmod +x update-ca.crt.sh $ sudo ./update-ca.crt.sh Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done.
このCA証明書の登録は、コンテナを作り直したら、そのたびに実行する。
LDAPS認証の設定
LDAP認証の設定については、こちらで説明している。
この時点では、Samba ad dcがStrong authを要求しており、Nextcloudにログインできなかったので、一旦無効にした。
/etc/samba/smb.conf
[global] ldap server require strong auth = no …
これでNextcloudにログインできるようになったので、設定 → 管理 LDAP/AD統合 で、以下を変更。
項目 | 変更前 | 変更後 |
---|---|---|
ldapHost | addc.example.net | ldaps://addc.example.net |
ldapPort | 389 | 636 |
これで、LDAPS認証ができるようになったので、冒頭のsmb.confを元に戻し、Strong Authを有効にして対応完了。
設定に失敗した時
設定項目についてよく調べずに、ldapHostを変更せずにポートだけを変更したところ、何も動きがない。
あれ?と思いつつ「続ける」ボタンを押したら、セッションが切れてしまった。
LDAP認証に関する設定値はどうやって修正できるんだろう?と、configファイルを見てみたが、設定値は入っていない。
これは面倒なことになった、と思った。
探してみると、コマンドで設定ができるようだった。
Nextcloud / User authentication with LDAP
設定を見てみる。
$ sudo docker exec -it -u www-data nextcloud bash --login
$ php occ ldap:show-config +-------------------------------+---------------------+ | Configuration | s01 | +-------------------------------+---------------------+ | ldapHost | addc.example.net | | ldapPort | 636 | +-------------------------------+---------------------+
※必要部分だけ抜粋。
やっぱり、ポートの変更だけが登録されていて、その後に加えた ldaps:// が反映されていない。
これは、以下のコマンドで更新ができた。
$ php occ ldap:set-config "s01" "ldapHost" "ldaps://addc.example.net"
これで、LDAPS認証が動き出して、ログインできるようになった。
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他