CentOS Stream 10にstep-cliをインストールして別サーバーのstep-caで署名
前に開発環境で自前認証局サーバーを構築したので、別のサーバーから証明書署名要求(CSR)を作成して署名したときの覚書。
Gemini 2.5 Proと対話。
環境: CentOS Stream 10, Smallstep CLI 0.28.7
1. step-cliのインストール
このサーバーは署名を行わないので、step-cliだけインストール。
公式ドキュメントに従ってインストール。
参考: Install Step CLI on Any Platform Guide | Smallstep
リポジトリを追加。
# cat <<EOT > /etc/yum.repos.d/smallstep.repo
[smallstep]
name=Smallstep
baseurl=https://packages.smallstep.com/stable/fedora/
enabled=1
repo_gpgcheck=0
gpgcheck=1
gpgkey=https://packages.smallstep.com/keys/smallstep-0x889B19391F774443.gpg
EOT
インストールして確認。
# dnf install step-cli
# step-cli --version
Smallstep CLI/0.28.7 (linux/arm64)Release Date: 2025-07-14T04:10:42Z
2.認証局クライアントとして設定
認証局サーバー(CAサーバーをインストールしたFreeBSD)でfingerprintの確認。
参考: 開発環境で自前HTTPS(SSL)を構築: FreeBSD14 + step-certificates + step-cli
[FreeBSD]# less /usr/local/etc/step/ca/config/defaults.json
{"ca-url": "https://localhost:9000","ca-config": "/usr/local/etc/step/ca/config/ca.json","fingerprint": "775d45fe0a3ab18f04f2b4c745f24574e71ed37f26a5f99edf5bc7883a5b76bb","root": "/usr/local/etc/step/ca/certs/root_ca.crt"}
CentOS Stream 10で認証クライアントの環境設定コマンド実行。
認証局サーバーからルート証明書をダウンロードして、$STEPPATH(デフォルトは~/.step)に認証局サーバー情報を保存する。
参考: step ca bootstrap
# step ca bootstrap --ca-url https://192.168.10.114:9000 --fingerprint 775d...a5b76bb
3.認証局サーバーのdnsNamesを変更
認証局サーバー(FreeBSD + step-ca)をインストールしたときは別サーバーからの署名要求を想定してなかったので、設定変更する。
[FreeBSD]# less /usr/local/etc/step/ca/config/ca.json
"dnsNames": ["localhost","127.0.0.1","192.168.10.114"],
認証局サーバーを再起動。
# service step_ca restart
4. サーバー証明書発行
Gemini先生に署名済みサーバー証明書を取得するシェルスクリプトを作成してもらった。
(前後処理がほとんど。サーバー証明書を取得するコマンドはstep ca certificateだけ)
参考: Gist: CentOS Stream 10にstep-cliをインストールして別サーバーのstep-caで署名
# cd /home/software/server-utility
# vi step-cert.sh
# chmod +x step-cert.sh
認証局サーバーでワンタイムパスワードを生成。
step ca initしたときに生成したプロビジョナー(認証窓口)のパスワードが求められる。
下の例では「suganuma@webrec.co.jp」という名前のProvisioner
[FreeBSD]# step ca token dev.hoge.jp
✔ Provisioner: suganuma@webrec.co.jp (JWK) [kid: tNjkW5...L60]Please enter the password to decrypt the provisioner key:
パスワードをファイルで保存してある場合。
[FreeBSD]# step ca token dev.hoge.jp --password-file /usr/local/etc/step/password.txt
認証局クライアント側でシェルスクリプトでサーバー証明書取得。
# ./step-cert.sh dev.hoge.jp eyJhb...4yDw
署名されたサーバー証明書と中間証明書の確認。
# cd /etc/nginx/ssl/dev.hoge.jp/
# step certificate inspect fullchain.pem
# step certificate inspect chain.pem
5.Nginxの設定
取得したサーバー証明書をNginxに設定する。
# cd /etc/nginx/conf.d/
# less 02_hoge.conf
server {include conf.d/include/listen_443.inc;server_name dev.hoge.jp;root /home/httpd/hoge.jp/wordpress;include conf.d/include/wordpress_dev.inc;include conf.d/include/ssl.inc;ssl_certificate /etc/nginx/ssl/dev.hoge.jp/fullchain.pem;ssl_certificate_key /etc/nginx/ssl/dev.hoge.jp/privkey.pem;ssl_trusted_certificate /etc/nginx/ssl/dev.hoge.jp/chain.pem;}
テストして再読み込み。
# nginx -t
# service nginx reload
WordPressの場合はデータベース内のhttpをhttpsに置換する。
ブラウザで確認。