Ubuntu22.04に mod_auth_openidc をインストール
WindowsのOracleVM VirtualBoxの中にUbuntu22.04を入れて、apacheとmod_auth_openidcを入れていきます。
ubuntuはserver版を使いました。検索すれば、インストール方法は出てくるので省略します。
ubuntuのインストール後、タイムゾーンの設定(Asia/Tokyo)や、viのインストール、telnetdやvsftpdのインストールをしました。
このあたりはお好みで、どうぞ。
apacheから順にインストールしていきます。
以下の作業は sudo su - して rootで行っています
Apache
#apt install apache2
#apache2ctl -t
設定ファイルのエラーチェックができるのですが、以下のようなワーニングが出ています。
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
cd /etc/apache2
vi apache2.conf
70行目あたりに以下を追加
ServerName www.example.com
#apaache2ctl -t
Syntax OK
ワーニングは、出なくなりました。
proxy_http をインストール
#a2enmod proxy_http
Considering dependency proxy for proxy_http:
Enabling module proxy.
Enabling module proxy_http.
To activate the new configuration, you need to run:
systemctl restart apache2
最新版のmod_auth_openidcを入れたい
検索したところ、以下でできるとの事でした。
#wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
#apt install ./libapache2-mod-auth-openidc_2.4.14.2-1.focal_amd64.deb
Depends: libssl1.1 (>= 1.1.0) but it is not installable
と表示されてしまいました。
しかもインストールした場所が悪かったのか
focal_amd64.deb couldn't be accesses by user '_apt' (13:Permission denied)
と表示されました。
cat /etc/passwd
とすると、たしかに _apt というユーザが存在します
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
こいつが、アクセスできるフォルダーを作ります。
私は、/homeの下に _apt を作成しました。
# mkdir _apt
# chown 100:65534 _apt
# ls -al
drwxr-xr-x 2 _apt nogroup 4096 Aug 5 16:39 _apt
先にLIBSSLをバージョンアップします。
cd /home/_apt してから
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
systemctl stop apache2
dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb
(Reading database ... 83005 files and directories currently installed.)
Preparing to unpack libssl1.1_1.1.0g-2ubuntu4_amd64.deb ...
Unpacking libssl1.1:amd64 (1.1.0g-2ubuntu4) ...
Setting up libssl1.1:amd64 (1.1.0g-2ubuntu4) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78.)
debconf: falling back to frontend: Readline
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
いよいよ、mod-auth-openidc です
ブラウザーで、以下にアクセスする
https://github.com/OpenIDC/mod_auth_openidc/
画面右の方に Releases と書かれており
release 2.4.14.2 Latest とあります。
そのリンクをクリックします。
その下にファイル一覧があるので、適当なのを探します。
cd /home/_apt
不要かもしれませんが、所有者を変更しておきます。
/home/_apt# chown 100:65534 libssl1.1_1.1.0g-2ubuntu4_amd64.deb
ls -al
-rw-r--r-- 1 _apt nogroup 1128092 Apr 26 2018 libssl1.1_1.1.0g-2ubuntu4_amd64.deb
apt install ./libapache2-mod-auth-openidc_2.4.14.2-1.focal_amd64.deb
必要ならリブートしてください
systemctl start apache2
systemctl status apache2
設定ファイルのチェックも問題なさそうです
/home/_apt# apache2ctl -t
Syntax OK
apacheにインストールされているモジュールの確認をします。
apache2ctl -M | sort
auth_openidc_module (shared)
proxy_http_module (shared)
proxy_module (shared)
設定ファイルを新規作成
cd /etc/apache2/sites-enabled
ls -al
lrwxrwxrwx 1 root root 35 Jul 29 07:47 000-default.conf -> ../sites-available/000-default.conf
ここに reverse-proxy.conf というファイルを新規作成します。
名前は、confで終わっていれば、なんでもよいみたいです。
複数のファイルを置いて、複数のリバースプロキシーを作成することもできます。
Listen 18080
<VirtualHost *:18080>
ServerName www.local18080.com
DocumentRoot /var/www/html1
# ProxyPass /empnum_prod http://192.168.15.216:8080/empnum_prod/
# ProxyPassReverse /empnum_prod http://192.168.15.216:8080/empnum_prod/
OIDCResponseType code
OIDCCryptoPassphrase 12345678901234567890
OIDCProviderMetadataURL http://[KeyCloakのIP]:8080/auth/realms/Intra1/.well-known/openid-configuration
OIDCClientID [KeyCloakのレルム]
OIDCClientSecret [KeyCloakの画面からコピー]
OIDCRedirectURI http://[ubuntuのIP]:18080/empnum_prod/redirect_url1
<Location /empnum_prod>
AuthType openid-connect
Require valid-user
ProxyPass http://192.168.15.63:8080/empnum_prod
ProxyPassReverse http://192.168.15.63:8080/empnum_prod
</Location>
</VirtualHost>