「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>Linuxの各種 手順]]

*目次 [#l0a9c908]
#contents

*概要 [#r03cb124]

**要件 [#x70c4d3c]
Linux環境でのクライアント証明書認証
Linux環境でクライアント証明書を認証(アプリではサボりたい)。

**既知の情報 [#mcef1857]

-以下は、クライアント証明書を使用したプログラムのテスト動画

--Demo: MultiPurposeAuthSite & Financial-grade API part 2 (confidential client) of Open棟梁 - YouTube~
https://www.youtube.com/watch?v=m9BGlJwOdOM

>[[この構築は、IIS Expressで行った。>https://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%EF%BC%8B%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%E8%A8%BC%E6%98%8E%E6%9B%B8#sf697402]]

-これによりクライアントから送信される~
クライアント証明書は、以下のプログラムで取得可能。
--https://github.com/OpenTouryoProject/MultiPurposeAuthSite/blob/develop/root/programs/MultiPurposeAuthSite/MultiPurposeAuthSite/Controllers/OAuth2EndpointController.cs#L109

>これをApacheや、他のWebサーバでやればイイだけ。

*詳細 [#c1a0aed2]
この処理を、中間層にオフロードしたい場合、

**ProxyServlet [#y1dfeb18]
...調べると以下のようなものがある模様。

-ProxyServletでリバースプロキシを作った話 - Qiita~
https://qiita.com/shinevillage/items/5b10ae6517628a41c574
--https://github.com/mitre/HTTP-Proxy-Servlet

これを使用して、

X.509をX-ARR-ClientCert、X-Client-Certヘッダから、~
読んで、任意のHTTPヘッダを追加して、代理リクエストすればイイ。

...しかし、色々調べて、具体的な実装方法が不明。

**HAProxy [#h47ef54e]
そこで他にも調べてみたが、

HAProxyというプロダクトにビンゴの当該機能が存在するっぽい。

***ドキュメント [#n2037194]
(Authentication Developer Guide 7.5.0 )

7. クライアント証明書認証~
https://nec-baas.github.io/baas-manual/latest/developer/ja/auth/clientcert/index.html

-7.1. 概要~
https://nec-baas.github.io/baas-manual/latest/developer/ja/auth/clientcert/intro.html

-7.3. リバースプロキシで認証する場合の設定~
https://nec-baas.github.io/baas-manual/latest/developer/ja/auth/clientcert/haproxy.html
--本章では HAProxy によるクライアント証明書~
認証を行う場合の設定手順を説明します。
--HAProxyからBaaSサーバへのリクエスト抜粋
 X-SSL-Client-CertAuth-Validated: 1
 X-SSL: 1
 X-SSL-USED: 1
 ...
 X-SSL-Client-DN: /C=JP/ST=Kanagawa/L=Kawasaki/O=...
 X-SSL-Client-CN: client001
 X-SSL-Client-UID: 00000001

-7.6. HAProxyで認証する場合の設定例~
https://nec-baas.github.io/baas-manual/latest/developer/ja/auth/clientcert/configurations.html

***自己署名証明書対策 [#ceb03c36]
なお、自己署名証明書の問題対策は以下に書かれている。

-openssl - Haproxy ssl configuration - install root and intermediate certificate - Stack Overflow~
https://stackoverflow.com/questions/15048346/haproxy-ssl-configuration-install-root-and-intermediate-certificate
--https://serversforhackers.com/c/using-ssl-certificates-with-haproxy
>...大きなPEMにまとめるとか、少々、乱暴な設定方法らしい。

***バックエンドに転送するHTTPヘッダ [#cedda425]
余談、

SiteMinderもバックエンドに認証結果情報をHTTPヘッダで転送していたと思うので、~
調べてみたが、オレオレ・ヘッダなので、適当なヘッダに書き換えれば良さそう。

-製品によって使用されるデフォルトの HTTP ヘッダ~
CA Single Sign-On - 12.7 - Japanese - Japan - CA Technologies ドキュメント~
https://docops.ca.com/ca-single-sign-on/12-7/jp/http-403316211.html
--SM_AUTHDIRNAME
--SM_AUTHDIRSERVER
--SM_AUTHDIRNAMESPACE
--SM_AUTHDIROID

なので、HAProxy のX-SSL-Client-**でもOK。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS