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に置換する。

ブラウザで確認。


▼ 関連記事