📘

リバプロnginxでクライアント証明書認証

2021/08/17に公開

リバプロnginxでクライアント証明書認証

  • nginxをリバプロとして使っている構成で認証をかけたいことがある
  • BASIC認証などはパスワード総当たり掛けられると厳しかったりするし、パスワード覚えているのがめんどくさくなる
  • その点クライアント認証ができるといろいろ便利なのでやる

設定

  • nginxのconfでこうする
server{
  listen       80;
  server_name  test.mydomain.com;
  ssl_client_certificate /etc/nginx/ssl/ca.crt;  # クライアント認証のサーバ側証明書
  ssl_verify_client optional;  # client認証するかのパラメータ optionalは任意 結果は $ssl_client_verifyに入る
  
  location / {
    if ($ssl_client_verify != SUCCESS) {
      return 403;  # 認証が通らなければ403が返る
    }
    proxy_pass    http://リバプロ先:port番号;
  }
}
  • クライアント認証用の鍵作成などはこの辺を参考に

  • pkcs形式にしたらwindows環境ならp12ファイルをダブルクリック実行するとインポートの設定が出るのでそのままOKをしていって設定するとブラウザに登録される

  • 一回ブラウザを全部閉じて、開きなおして目的のサイトに接続しようとすると鍵を確認される。指定して通れればOK。

    • p12ファイルをインポートしていない別の端末などからアクセスして403Forbiddenが返ってくることを確認すれば認証が機能していることがわかる

Discussion