オンラインのオレオレ認証局(BounCA)
久しぶりにプライベートの認証局が必要になり、openssl や easy-rsa、dogtag でゴニョゴニョやるのもなぁ、と思って探したところ、BounCA というのを見かけました。Cloud 版も提供されていたので、今回の目的にピタリということで、試しました。
感想としては、非常に簡単で(Docs 読まなくてある程度までいける簡素な UI)、30分くらいでやりたいことが実現できました。もう昔には戻れません…
BounCA Cloud
BounCA Cloud
をクリック
SIGN UP
Root Certificate 作成
Root Certificates
> New Certificate
項目設定
Intermediate Certificate 作成
作成した Root Certificate の名前
(青字:ORENO ROOT)をクリック
Intermediate Certificates for prent *
> New Certificate
項目設定
証明書の発行
作成した Intermedicate Certificate の名前
(青字:ORENO INTER)をクリック
Certificates for intermediate *
> NEW CLIENT CERT
*今回の目的はクライアント証明書
項目設定
2 枚作成
証明書の検証
Foo Bar のダウンロード ⬇
アイコンをクリック
Foo_Bar.client_cert.zip
という名前で保存されるので展開
/BounCA $ ls
Foo_Bar-chain.pem Foo_Bar.p12 intermediate_root-chain.pem
Foo_Bar.client_cert.zip Foo_Bar.pem rootca.pem
Foo_Bar.key intermediate.pem
証明書自体の検証 → OK。
/BounCA $ openssl verify -CAfile intermediate_root-chain.pem Foo_Bar.pem
Foo_Bar.pem: OK
証明書発行元の Intemediate Certififate
から CRL
をクリックし、CRL をダウンロード
crl
という名前でダウンロードされたので、CRL の検証 → OK。
/BounCA $ openssl verify -crl_check -CAfile intermediate_root-chain.pem -CRLfile crl Foo_Bar.pem
Foo_Bar.pem: OK
証明書の失効とその確認
失効させる証明書のゴミ箱 🗑
アイコンをクリック
パスフレーズを入力
証明書のリストから消える
Display Rovoked
をクリックすると失効した証明書も表示される
失効作業を行ったので、CRL が更新されていることを期待し、再度入手
ただ、GUI は面倒なので、Docs に書いてある API を利用
"API Token" と "CRL を得る API エンドポイントの URL" が必要
右上のユーザー 👤
アイコンをクリックし、API Tokens
から ADD TOKEN
の作成
エンドポイントは Intermedicate Certifice の CRL
を右クリックし、リンクをコピー(先ほどはクリックでダウンロードした)。
これらの情報を使って、最新の CRL を API から入手
TOKEN=<作成した TOKEN>
PEM=<Output のファイル名>
URL=<CRL の URL>
wget -NS --header="X-AUTH-TOKEN: $TOKEN" -O $PEM $URL
証明書を新しい CRL を使って検証 → 失効
/BounCA $ openssl verify -crl_check -CAfile intermediate_root-chain.pem -CRLfile crl Foo_Bar.pem
CN = Foo Bar
error 23 at 0 depth lookup: certificate revoked
error Foo_Bar.pem: verification failed
今回はオンラインで失効確認をしたいので、別途 Web サーバーを用意
主な準備
- 各証明書に記載の配布ポイント URL に合わせて CRL を配置
- CRL は PEM なので DER に変換
- 拡張子 .crl にデフォルトの
content-type: application/octet-stream
が使われていたので mime type を追加
# nginx の例
# /etc/nginx/conf.d/mime.conf
types {
application/pkix-crl crl;
}
# 外部から動作確認
/BounCA $ curl https://crl.oyama.cf/inter.crl -svo /dev/null 2>&1 | grep "content-type:"
< content-type: application/pkix-crl
接続できたので、-crl_download
でオンラインで取ってきた CRL で検証 → 失効
/BounCA $ openssl verify -crl_check -CAfile intermediate_root-chain.pem -crl_download Foo_Bar.pem
CN = Foo Bar
error 23 at 0 depth lookup: certificate revoked
error Foo_Bar.pem: verification failed
オンラインでも失効確認完了。
以上です。
OCSP レスポンダーは今回不要なので、ここまで。
Links
Discussion