CentOS8の開発環境で自前認証局のSSL署名

前にCentOS7でやったことをCentOS8の環境でやろうとしたときの覚書。

環境: CentOS 8.1.1911, nginx 1.16.1, OpenSSL 1.1.1c

CentOS8の環境だと「/etc/pki/tls/misc/CA」がない。
今ならcertbotでできるんじゃない?と公式ドキュメントを読むと「minica」というツールを使えとある。

1.MiniCAをインストール

このツールはGo言語で動くのでGolangのインストールから。
# dnf install golang
# go version
go version go1.12.12 linux/amd64

$GOPATHを設定しない方法でインストール。
# cd /opt/software
# git clone https://github.com/jsha/minica.git
# cd minica
# go build

実行してみる。
# ./minica --domains dev.hoge.jp

説明を見る
# ./minica
ルート証明書がminica.pem。
ドメイン名のディレクトリにサーバー証明書と秘密鍵がある。

検証する
# openssl verify -CAfile minica.pem dev.hoge.jp/cert.pem


2.nginxに設定

作成したサーバー証明書と秘密鍵をnginxに設定。
# cd /etc/nginx/conf.d/
# vi 01_hoge.conf
server {
    listen       443 ssl http2;
    server_name  dev.hoge.jp;

    root    /home/httpd/hoge/wordpress/;

    # WordPress Setting
    include conf.d/global/wordpress_restrictions.conf;
    include conf.d/global/wordpress_dev.conf;

    # SSL
    include conf.d/global/ssl_dev.conf;
    ssl_certificate      /opt/software/minica/dev.hoge.jp/cert.pem;
    ssl_certificate_key  /opt/software/minica/dev.hoge.jp/key.pem;
}

再起動
# nginx -t
# systemctl restart nginx

3.Google Chromeにルート証明書をインポート

ルート証明書minica.pemをクライアントPCにコピーする。
Google Chromeの設定で「certificates」で検索。「Manage certificates」を開く。
インポートウィザードで進めていく。
Certificate store: Trusted Root Certification Authorities

インポート後は「Trusted Root Certification Authorities」タブに「minica root ca」が表示されている。

ブラウザで表示
https://dev.hoge.jp/

無事表示された。
簡単すぎるので、駆け出しエンジニアはちゃんと認証局で署名する流れを理解しながらやった方がいいと思う。


【関連記事】