マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

両方を行う必要がある。

クラアント

クラアントがサーバにクライアント証明書を渡すよう構成する。

Browser

Windows

Mac

HttpClient?

サーバ

  • サーバがクラアントからクライアント証明書を受けるよう構成する。
  • クライアント証明書はWeb -> AP にHTTPヘッダで渡される。
    • 例えは、Azure Web Appsでは、X-ARR-ClientCert?ヘッダを使用して渡される。
    • 他の中間層では、X-Client-Certヘッダなどが使用されるらしい。

Windows

IIS

IIS Express

applicationhost.configに以下の様な設定を行う。

<security>
  <access sslFlags="Ssl, SslNegotiateCert, SslRequireCert" />
  ...
  <authentication>
    <iisClientCertificateMappingAuthentication enabled="true">
    </iisClientCertificateMappingAuthentication>
  ...
</security>

Kestrel

Linux

Kestrel

Apache

nginx

ASP.NET

Web Forms

  • Page
    // System.Web.HttpRequest
    HttpClientCertificate cs = Request.ClientCertificate;

MVC

  • Controller
    // System.Web.HttpRequestBase
    HttpClientCertificate cs = Request.ClientCertificate;

WebAPI

  • ApiControler?
    // System.Net.Http.HttpRequestMessage
    // System.Net.Http.HttpRequestMessageExtensions
    X509Certificate2 cs = Request.GetClientCertificate();

ASP.NET Core

  • netstandard2.0時点では、APIは用意されていない模様。
  • (HTTPヘッダの標準が無いため、)Web-APの連携が必要なので
    • IISに限定される.netには実装されているが、
    • netcoreappには実装されていない。

みたいなコトなのだろうか?

  • netstandard2.1で、実装された模様。

MVC

// Microsoft.AspNetCore.Http.HttpRequest
X509Certificate2 x509 = Request.HttpContext.Connection.ClientCertificate;

WebAPI

証明書

OpenSSL

以下で生成してみたが、ダメ。

Visual Studio

  • Visual Studioの署名で作成したPFXであれば利用可能だった。
  • OpenSSLと何が違うか不明。何か属性が足りてないのか?
  • サーバから使用できるように設定する。

両方を行う必要がある。

参考

自己署名証明書の場合

クライアント側

サーバー側

Bouncy CastleでHTTPヘッダから取得したpemを読む的なイメージでイイのでは?


Tags: :.NET開発, :.NET Core, :ASP.NET, :ASP.NET MVC, :セキュリティ, :暗号化, :証明書


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-09-19 (木) 10:26:59 (32d)