アプリ開発ときどきアウトドア

主にJavaを使ったアプリ開発やトラブルシューティング等のノウハウ、キャンプや登山の紹介や体験談など。

1. システムエンジニアリング PowerShell SSL/TLS/PKI windows 基盤技術

Windowsの証明書ストアの基礎知識と確認方法

投稿日:

  • 証明書ストアの種類
    • 証明書を格納する場所(証明書ストア)は、大きく分けて「ローカルコンピューター」「現在のユーザー」に分けられます。
    • それぞのれ証明書ストアは、「個人」「信頼されたルート証明書機関」等といったシステムストアと呼ばれる格納場所に分かれています。(具体的なシステムストアを後述します。)
    • 「ローカルコンピューター」に格納した証明書は、全てのユーザに反映(継承)されます。
    • 証明書ストアの実体はレジストリです。詳細はリファレンスを参照のこと。
  • 管理ツールを使った証明書ストアの確認方法
    「コンピューター証明書の管理」: certlm.mscコマンド
    「ユーザー証明書の管理」: certmgr.mscコマンド
  • PowerShellを使った証明書ストアの確認方法
    Get-ChildItemを使って、次のように物理ストア名を確認できます。
    (この例では、現在のユーザの証明書ストアを確認するために”cert:\CurrentUser”を指定します。ローカルコンピューターの証明書ストアを確認する場合は代わりに”cert:\LocalMachine”を指定してください。)

    > Get-ChildItem -Path cert:\CurrentUser
    
    Name : TrustedPublisher
    Name : ClientAuthIssuer
    Name : Root
    Name : UserDS
    Name : CA
    Name : REQUEST
    Name : AuthRoot
    Name : MSIEHistoryJournal
    Name : TrustedPeople
    Name : ADDRESSBOOK
    Name : Local NonRemovable Certificates
    Name : My
    Name : SmartCardRoot
    Name : Trust
    Name : Disallowed
    
  • 経験的に、よく使用されるシステムストアは次の2つだと思います。
    • 「個人」(My):作業用・一時的な証明書、クライアント証明書認証のサイトにアクセスする際のクライアント証明書の格納先
    • 「信頼されたルート証明書機関」(Root): 開発用の自己署名サーバ証明書、特定組織内で有効な証明書等の格納先
  • 管理ツールと上記の物理ストア名の対応が分かりづらいので、参考を掲載します。
    • 英語版・日本語版の管理ツールの画面比較
    • 画面比較でも分かりづらいので、実際に試行錯誤して調べた結果です。
      (管理ツールにて、名前の異なる証明書を各ストアにインストールし、各証明書がどの物理ストアに格納されたかをPowerShellで確認しました。)

      管理ツールでのシステムストア名(英語版) 物理ストア名 備考
      個人
      (Personal)
      My
      信頼されたルート証明機関
      (Trusted Root Certificate Authorities)
      Root
      エンタープライズの信頼
      (Enterprise Trust)
      Trust
      中間証明機関
      (Intermediate Certification Authorities)
      CA 他のストアにある証明書も見える
      Active Directory ユーザー オブジェクト
      (Active Directory User Object)
      UserDS
      信頼された発行元
      (Trusted Publishers)
      TrustedPublisher
      信頼されていない証明書
      (Untrusted Certificates)
      Disallowed
      サード パーティ ルート証明機関
      (Third-Party Root Certification Authorities)
      AuthRoot
      信頼されたユーザー
      (Trusted People)
      TrustedPeople
      クライアント認証発行者
      (Client Authentication Issuers)
      ClientAuthIssuer
      ほかの人
      (Other People)
      ADDRESSBOOK
      Local NonRemovable Certificates
      (Local NonRemovable Certificates)
      Local NonRemovable Certificates
      MSIEHistoryJournal
      (MSIEHistoryJournal)
      MSIEHistoryJournal
      証明書の登録要求
      (Certificate Enrollment Requests)
      REQUEST
      スマート カードの信頼されたルート
      (Smart Card Trusted Roots)
      SmartCardRoot
  • 証明書ストアの証明書は次のように確認できます。
    • 証明書一覧の取得
      例えば、「現在のユーザ」(CurrentUser)の「信頼されたルート証明機関」(Root)にある証明書一覧を取得する場合は、-Pathに”Cert:\CurrentUser\Root”を指定します。

      > Get-ChildItem -Path Cert:\CurrentUser\Root
      
      Thumbprint                                Subject
      ----------                                -------
      CDD4EEAE6000AC7F40C3802C171E30148030C072  CN=Microsoft Root Certi...
      BE36A4562FB2EE05DBB3D32323ADF445084ED656  CN=Thawte Timestamping ...
      ...
      
    • 証明書内容の確認
      例えば、上記の証明書一覧の先頭にある証明書(Thumbprint: CDD4EEA…030C072)を確認する場合は、”\CurrentUser\Root\CDD4EEA…030C072″を指定します。

      > Get-ChildItem -Path Cert:\CurrentUser\Root\CDD4EEA...030C072 | Select *
      
      PSPath                   : Microsoft.PowerShell.Security\Certificat...
      PSParentPath             : Microsoft.PowerShell.Security\Certificat...
      PSChildName              : CDD4EEAE6000AC7F40C3802C171E30148030C072
      PSDrive                  : Cert
      PSProvider               : Microsoft.PowerShell.Security\Certificate
      ...
      


(adsbygoogle = window.adsbygoogle || []).push({});


(adsbygoogle = window.adsbygoogle || []).push({});

-1. システムエンジニアリング, PowerShell, SSL/TLS/PKI, windows, 基盤技術

執筆者:

関連記事

システム開発でのmybatis-generatorの利用

システム開発における製造工程の前段では、開発メンバの負荷軽減や共通化のために、各テーブルに対するSELECT/INSERT/UPDATE/DELETEを容易に行うための共通クラスを準備することが望まれ …

テキストファイルマスクツール

本番環境での性能検証でNGになってしまった。 どの処理でどれほどの処理時間がかかっているかを把握するためにログレベルを変更して、ログを取得した。 対応方法を自社の担当者と検討するために、本番環境からこ …

Javaでのパスワード付きzipファイルの圧縮/解凍方法(ZipCrypto/AES)

先日、JavaでのZIP暗号化の考察という記事を書きましたが、zip4jのメンテナンスが再開されており、バージョン2系が公開されていましたので、これを使って通常のzip圧縮/解凍、パスワード付きzip …

Visual Studio 2019の開発用データベース

Visual Studio 2019でのASP.NET Coreを使ったシステム開発の標準化を検討している。 開発工程では技術検証、新機能向けのテーブル定義の検討、単体試験等を目的として、開発者が自由 …

ASP.NET Core: IHttpClientFactoryの検証用サンプル

本番環境ではあまり使うことはない、検証環境を想定したサンプルを紹介します。 本来のIHttpClientFactoryの使い方や基本的なサンプルは下記を参考にしていただければと思います。 ASP.NE …