「動かない」原因の9割は、この準備段階で作られる。
こんにちは!「LINUX工房」管理人の「リナックス先生」です。
前回の【第1回】SSOの基礎知識と設計では、SSOの仕組みとActive Directory連携の全体像について学びました。
今回からはいよいよ、実際にキーボードを叩いてサーバーを構築していく「実践編」に入ります。
SSOシステムの構築は、通常のWebサーバー構築よりも遥かに繊細です。
特に「名前解決(ドメイン名)」と「SSL証明書」の設定を適当に済ませてしまうと、後のKeycloak設定で「謎のエラー」に永遠に悩まされることになります。
先生、VPSを契約してAlmaLinux 9をインストールしました!
とりあえず yum update はしたんですけど、次は何をすればいいですか?
Dockerってやつを入れるんですよね? あと「オレオレ証明書」って何ですか? 怪しい名前ですけど大丈夫なんですか…?
コウ君、準備が早いわね!
「オレオレ証明書」はエンジニアのスラングで、正式には「自己署名証明書」と言うの。
お金を払って認証局に発行してもらうんじゃなくて、自分で自分を「正しい!」と証明する証明書よ。
本番環境では使えないけど、社内検証や学習用なら必須の技術なの。
今日は、Keycloakがエラーを吐かない「正しいオレオレ証明書」の作り方をみっちり教えるわ!
本記事では、AlmaLinux 9の初期設定から、Docker環境の構築、そしてSSOに不可欠なSSL証明書の作成まで、プロの現場と同じ手順で進めていきます。
🚀 本連載のカリキュラム(全8回)
- 【第1回】SSOの基礎知識と設計:AD連携を含めた全体像
- 【第2回】サーバー構築の準備(今回):AlmaLinux 9とDocker、SSL証明書
- 【第3回】認証基盤 Keycloakの導入:コンテナ起動と日本語化
- 【第4回】ユーザー情報の統合:Active Directory (AD) とのFederation設定
- 【第5回】WebアプリのSSO化:OIDCによる認証連携
- 【第6回】Windows統合認証 (IWA):ADドメイン参加とKerberos設定
- 【第7回】セキュリティと冗長化:本番運用に向けた堅牢化
- 【第8回】運用とトラブルシューティング:ログ解析と緊急対応
目次
1. AlmaLinux 9 の初期設定とネットワーク
まずは、OSの足回りを固めます。
VPSや仮想マシンにAlmaLinux 9をインストールした直後の状態を想定しています。
1-1. パッケージの更新とSELinuxの確認
サーバー構築の第一歩は、OSを最新の状態にすることです。
# パッケージの更新 sudo dnf update -y
次に、SELinux(Security-Enhanced Linux)の設定を確認します。
本番環境では有効化(Enforcing)が推奨されますが、構築中はトラブルの原因になりやすいため、今回は一時的に「Permissive(ログ出力のみ)」に設定します。
# 現在の状態確認 getenforce # Permissiveに変更(一時的) sudo setenforce 0 # 設定ファイルで恒久的に変更(再起動後も有効) sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
💡 プロのノウハウ:SELinuxは敵か味方か?
初心者は「SELinuxは即無効化(Disabled)」と教わることが多いですが、最近のコンテナ環境ではSELinuxが有効でも問題なく動くように設計されています。
今回は学習の効率を優先してPermissiveにしますが、最終回で本番運用に向けてEnforcingに戻す手順も解説する予定です。
1-2. ファイアウォールの設定 (Firewalld)
SSO環境では、以下のポートを使用します。
- 80/tcp (HTTP): 証明書発行などの一時利用
- 443/tcp (HTTPS): Keycloakへのアクセス(必須)
- 8080/tcp: Keycloakの管理用(開発中のみ使用)
これらを許可します。
# HTTPとHTTPSを許可 sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --add-service=https --permanent # 8080ポートを許可 sudo firewall-cmd --add-port=8080/tcp --permanent # 設定の反映 sudo firewall-cmd --reload # 確認 sudo firewall-cmd --list-all
2. Dockerエンジンのインストールと起動
Keycloakや関連システムはすべてDockerコンテナ上で動かします。
AlmaLinux 9標準のPodmanではなく、今回は情報の多い本家Docker CE (Community Edition) を使用します。
2-1. 公式リポジトリの追加
Dockerの公式リポジトリをシステムに追加します。
# 必要なツールのインストール sudo dnf install -y yum-utils # リポジトリの追加 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
2-2. インストールと起動
最新版のDockerエンジンと、プラグイン版のDocker Composeをインストールします。
# インストール実行 sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # Dockerサービスの起動と自動起動設定 sudo systemctl start docker sudo systemctl enable docker # 動作確認 sudo docker run --rm hello-world
「Hello from Docker!」というメッセージが表示されれば、導入成功です。
2-3. 一般ユーザーでの実行許可(オプション)
毎回 sudo を打つのが面倒な場合は、現在のユーザーを docker グループに追加します。
sudo usermod -aG docker $USER # 一度ログアウトして再ログインすると反映されます
3. 【最重要】名前解決(hosts)の設定
ここがSSO構築の最大のポイントです。
Keycloakなどの認証システムは、IPアドレス(例: 192.168.1.10)でのアクセスを極端に嫌います。
必ず**FQDN(ドメイン名)**でアクセスできる環境を作る必要があります。
3-1. 今回使用するドメイン名
本連載では、以下の架空のドメイン名を使用します。
あなたの環境に合わせて読み替えても構いませんが、混乱を防ぐために最初はこれに合わせることをお勧めします。
- SSO基盤(Keycloak): sso.linuxkoubou.local
- Webアプリ(テスト用): app.linuxkoubou.local
3-2. サーバー側のhosts設定
AlmaLinux自身が、自分自身のドメイン名を知っている必要があります。
sudo vi /etc/hosts
以下のように追記します(IPアドレスはサーバーの実際のプライベートIPにしてください)。
# /etc/hosts 127.0.0.1 localhost ::1 localhost 192.168.1.15 sso.linuxkoubou.local app.linuxkoubou.local
3-3. クライアントPC(Windows)のhosts設定
ブラウザでアクセスする手元のPC(Windows 10/11)も、このドメイン名を知る必要があります。
ここをやらないと、ブラウザで「ページが見つかりません」になります。
![]() |
入門者のLinux 素朴な疑問を解消しながら学ぶ (ブルーバックス 1989) 新品価格 |
- メモ帳を「管理者として実行」で開きます。
C:\Windows\System32\drivers\etc\hostsを開きます。- 末尾に以下を追記して保存します。
192.168.1.15 sso.linuxkoubou.local 192.168.1.15 app.linuxkoubou.local
※IPアドレスは、AlmaLinuxサーバーのIPを指定してください。
4. SSL証明書の準備。「正しい」自己署名証明書の作り方
SSOでは、認証情報をCookieやトークンでやり取りするため、HTTPS(SSL/TLS)化が必須です。
しかし、.local ドメインのようなプライベートな名前には、公的な認証局(Let’s Encryptなど)は証明書を発行してくれません。
そこで、自分で証明書を作成します。
ただし、単なる openssl コマンド一発で作った証明書では、最近のChromeやEdgeは「保護されていない通信」としてブロックし、画面すら開かせてくれないことがあります。
これを回避するために、SAN (Subject Alternative Name) を含んだ「モダンなオレオレ証明書」を作成します。
4-1. 作業ディレクトリの作成
mkdir -p ~/sso-project/certs cd ~/sso-project/certs
4-2. 設定ファイル (openssl.cnf) の作成
SANを含めるための設定ファイルを作成します。
vi openssl.cnf
以下の内容を貼り付けます。
[req] default_bits = 2048 distinguished_name = req_distinguished_name req_extensions = req_ext x509_extensions = v3_req prompt = no [req_distinguished_name] C = JP ST = Tokyo L = Chiyoda O = LinuxKoubou CN = sso.linuxkoubou.local [req_ext] subjectAltName = @alt_names [v3_req] subjectAltName = @alt_names [alt_names] DNS.1 = sso.linuxkoubou.local DNS.2 = app.linuxkoubou.local IP.1 = 192.168.1.15
※ IP.1 の部分は、ご自身のサーバーIPに合わせてください。
4-3. 証明書と秘密鍵の発行
作成した設定ファイルを使って、証明書(.crt)と秘密鍵(.key)を生成します。
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ -keyout server.key -out server.crt \ -config openssl.cnf
これで、10年間有効な証明書セットが完成しました。
server.key: 秘密鍵(絶対に漏らしてはいけない)server.crt: 公開鍵証明書(クライアントに配布するもの)
4-4. Windowsへの証明書インストール(信頼させる)
作成した server.crt を、WinSCPやTera Termのファイル転送機能を使って、手元のWindows PCにダウンロードしてください。
そして、以下の手順でWindowsに「この証明書は安全だ」と教え込みます。
- ダウンロードした
server.crtをダブルクリック。 - 「証明書のインストール」をクリック。
- 保存場所:「ローカル コンピューター」を選択(要管理者権限)。
- 証明書ストア:「信頼されたルート証明機関」を選択してインポート。
これで、ChromeやEdgeでアクセスした際に「保護された通信」として鍵マークが表示されるようになります。
5. ディレクトリ構成の作成と準備完了
最後に、次回以降の作業で使うディレクトリ構成を整えておきましょう。
cd ~/sso-project mkdir -p keycloak/data mkdir -p postgres/data mkdir -p openldap/data mkdir -p openldap/config
現在のディレクトリ構成は以下のようになっています。
~/sso-project/
├── certs/
│ ├── openssl.cnf
│ ├── server.crt
│ └── server.key
├── keycloak/
├── postgres/
└── openldap/
これで、SSO環境を構築するための「土地(OS)」「重機(Docker)」「通行証(SSL/DNS)」が全て揃いました。
まとめ:土台作りこそ丁寧に
お疲れ様でした! 第2回はここまでです。
今回のチェックポイント:
- AlmaLinux 9の初期設定とFirewalldの設定ができた。
- DockerとDocker Composeコマンドが使えるようになった。
sso.linuxkoubou.localというドメインでPingが通るようになった。- SAN対応のSSL証明書を作成し、Windowsにインポートした。
証明書のインポートって初めてやりましたけど、これでブラウザの警告が出なくなるんですね!
地味な作業でしたけど、なんだかプロっぽくてワクワクしてきました。
次回、【第3回】認証基盤 Keycloakの導入では、今回作った土台の上に、いよいよ主役であるKeycloakをコンテナとして立ち上げます。
管理画面にログインした瞬間、あなたのサーバーは「認証局」へと進化します。お楽しみに!
▼ 実践環境を用意しよう ▼
AlmaLinux 9が使える
「おすすめVPS」
インフラエンジニアへの道
「ITエンジニア転職」


コメント