big-ip でSSLクライアント認証&外部のOCSPレスポンダを使って証明書の失効を管理する

AskF5 | Manual Chapter: Configuring Remote SSL OCSP Authentication
参考:hogem.hatenablog.com


URLはpoolではなく、直接指定しかできないから、真面目に使うならサーバ間でHAとかしないとダメ?
と思ったけどvirtualserverのIP宛でも指定できたので、事前に冗長構成のpool, virtualserverを作っておけば良さげ。


事前準備 CA

opensslなどでCA証明書作っておいてbig-ipに取り込んでおく
System - File Management - SSL Certificate List

事前準備 ocsp レスポンダ

ocspレスポンダを起動しておく。今回はopenssl ocspを利用

cd /etc/pki/CA
openssl ocsp -ignore_err -index index.txt -CA cacert.pem -rsigner cacert.pem -rkey private/cakey.pem -port 8888

ちなみにこのopenssl ocsp レスポンダ、別ターミナルから証明書失効させて index.txtを更新したとしても
反映はされないので、必要に応じて再起動させる必要がある。マイブームのinotify使えば良い気はする。
ただ、間違った形式のindex.txtにしてしまって自動再起動したら認証できなくなるので、
やはり、都度手動で再起動するべきかな。


試験用の別portで起動してみて、そこで認証がOKだったら本番OCSPレスポンダも再起動
というところまで作り込めば自動再起動でも良い。

ssl profile

Local Traffic - Virtual Servers - Profiles

  • Configuration

Certificate, Key, 必要ならChainを選ぶ
(ここまでは通常のSSLと同じ)

  • Client Authentication

Client Certificate: require
Frequency: once
# 要件次第
# alwaysだとアクセスごとにOCSPレスポンダに問い合わせが行くのでセキュリティレベルは上がるけど、サーバ負荷になる
# onceだと一度アクセス時したあとはブラウザがセッション閉じるまでは再問い合わせしない
Trusted Certificate Authorities: importしたcaを選択
Advertised Certificate Authorities: None # 詳細不明、↑と同じでも良い?
Certificate Revocation List (CRL): 今回はOCSP使うのでnoneで。

OCSPレスポンダ

3つの設定が連動してる

Local Traffic - Virtual Servers - Profiles - Authentication - OCSP Responders
URL: 起動済みのocsp レスポンダのURL # http://192.168.0.1:8888/
Certificate Authority File: ssl profileのTrusted Certificate Authoritiesを同じca

  • OCSP Configuration

Local Traffic - Virtual Servers - Profiles - Authentication - Configuration
Type: SSL OCSP
Responders: 上で作ったocsp responders

Local Traffic - Virtual Servers - Profiles - Authentication - Profiles
Type: SSL OCSP
Parent Profile: ssl_ocsp
Configuration: 上で作ったconfiguration

Virtual Server

  • General Properties

ip, port 等は設定したい値で

  • Configuration

SSL Profile(client): 上で作ったssl profile
Authentication Profiles: 上で作ったocsp profile