「[[.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。