@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/windows-certificate-store-guide/#article>
    schema:about <https://comcomponent.com/knowledge/certificate-store/>, <https://comcomponent.com/knowledge/client-certificate/> ;
    schema:mentions <https://comcomponent.com/knowledge/localmachine-store/>, <https://comcomponent.com/knowledge/currentuser-store/>, <https://comcomponent.com/knowledge/private-key/>, <https://comcomponent.com/knowledge/private-key-acl/>, <https://comcomponent.com/knowledge/certificate-chain/>, <https://comcomponent.com/knowledge/root-ca/>, <https://comcomponent.com/knowledge/intermediate-ca/>, <https://comcomponent.com/knowledge/certificate-expiry/>, <https://comcomponent.com/knowledge/thumbprint/>, <https://comcomponent.com/knowledge/windows-service/>, <https://comcomponent.com/knowledge/certificate-failure/>, <https://comcomponent.com/knowledge/group-policy/>, <https://comcomponent.com/knowledge/intune/> .

<https://comcomponent.com/knowledge/certificate-store/> a skos:Concept ;
    skos:prefLabel "証明書ストア"@ja ;
    skos:definition "Windowsが証明書を保管・管理する場所の総称。"@ja ;
    skos:altLabel "Windows証明書ストア"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/cert-drive/> .

<https://comcomponent.com/knowledge/client-certificate/> a skos:Concept ;
    skos:prefLabel "クライアント証明書"@ja ;
    skos:definition "TLS通信で接続元(クライアント)の身元を証明するための証明書。"@ja ;
    skos:altLabel "クライアント認証証明書"@ja ;
    ks:requires <https://comcomponent.com/knowledge/private-key/> ;
    ks:storedIn <https://comcomponent.com/knowledge/personal-store/> .

<https://comcomponent.com/knowledge/windows-service/> a skos:Concept ;
    skos:prefLabel "Windowsサービス"@ja ;
    skos:definition "ユーザーのサインインと無関係にバックグラウンドで動くWindowsのプロセス。"@ja ;
    skos:altLabel "サービス"@ja ;
    ks:uses <https://comcomponent.com/knowledge/localmachine-store/> ;
    ks:requires <https://comcomponent.com/knowledge/private-key-acl/> .

<https://comcomponent.com/knowledge/localmachine-store/> a skos:Concept ;
    skos:prefLabel "コンピューターの証明書ストア"@ja ;
    skos:definition "PCに1つで、全ユーザーとサービスに共通の証明書ストア。"@ja ;
    skos:altLabel "LocalMachine" ;
    skos:altLabel "ローカルコンピューターの証明書ストア"@ja ;
    skos:broader <https://comcomponent.com/knowledge/certificate-store/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/certlm-msc/> .

<https://comcomponent.com/knowledge/private-key/> a skos:Concept ;
    skos:prefLabel "秘密キー"@ja ;
    skos:definition "証明書と対になり、署名や復号に使う非公開の鍵。"@ja ;
    skos:altLabel "秘密鍵"@ja ;
    skos:altLabel "プライベートキー"@ja .

<https://comcomponent.com/knowledge/private-key-acl/> a skos:Concept ;
    skos:prefLabel "秘密キーのアクセス権"@ja ;
    skos:definition "ストア上の秘密キーをどのアカウントが読めるかを決めるアクセス制御。"@ja ;
    skos:altLabel "秘密キーの管理"@ja ;
    skos:altLabel "秘密キーの権限"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/certlm-msc/> .

<https://comcomponent.com/knowledge/certificate-chain/> a skos:Concept ;
    skos:prefLabel "証明書チェーン"@ja ;
    skos:definition "末端の証明書からルートCAまで連なる信頼の連鎖。"@ja ;
    skos:altLabel "証明のパス"@ja ;
    skos:altLabel "信頼チェーン"@ja ;
    ks:requires <https://comcomponent.com/knowledge/root-ca/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/certutil/> .

<https://comcomponent.com/knowledge/intermediate-ca/> a skos:Concept ;
    skos:prefLabel "中間CA証明書"@ja ;
    skos:definition "ルートCAと末端証明書の間をつなぐ認証局の証明書。「中間証明機関」ストアに置かれる。"@ja ;
    skos:altLabel "中間証明機関"@ja .

<https://comcomponent.com/knowledge/root-ca/> a skos:Concept ;
    skos:prefLabel "ルートCA証明書"@ja ;
    skos:definition "信頼の起点となる認証局の証明書。「信頼されたルート証明機関」ストアに置かれる。"@ja ;
    skos:altLabel "信頼されたルート証明機関"@ja ;
    ks:configuredBy <https://comcomponent.com/knowledge/group-policy/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/intune/> .

<https://comcomponent.com/knowledge/certificate-expiry/> a skos:Concept ;
    skos:prefLabel "証明書の期限切れ"@ja ;
    skos:definition "証明書の有効期間(NotAfter)を過ぎて検証に失敗する状態。"@ja ;
    skos:altLabel "有効期限切れ"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/cert-drive/> .

<https://comcomponent.com/knowledge/certificate-failure/> a skos:Concept ;
    skos:prefLabel "証明書起因の接続障害"@ja ;
    skos:definition "証明書やその参照設定が原因でTLS接続・認証に失敗する障害。"@ja ;
    skos:altLabel "証明書エラー"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/certificate-chain/> .

<https://comcomponent.com/knowledge/thumbprint-hardcode/> a skos:Concept ;
    skos:prefLabel "拇印のハードコード"@ja ;
    skos:definition "証明書の拇印をコードや構成ファイルに直書きして参照すること。証明書更新のたびに修正が必要になる。"@ja ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/cert-selection/> .

<https://comcomponent.com/knowledge/group-policy/> a skos:Concept ;
    skos:prefLabel "グループポリシー"@ja ;
    skos:definition "Active Directoryドメイン環境でWindowsの設定を集中構成する仕組み。"@ja ;
    skos:altLabel "GPO" ;
    skos:altLabel "Group Policy" .

<https://comcomponent.com/knowledge/intune/> a skos:Concept ;
    skos:prefLabel "Microsoft Intune"@ja ;
    skos:definition "クラウドからPC・モバイルデバイスを管理するMicrosoftのMDMサービス。"@ja ;
    skos:altLabel "Intune" .

<https://comcomponent.com/knowledge/currentuser-store/> a skos:Concept ;
    skos:prefLabel "ユーザーの証明書ストア"@ja ;
    skos:definition "ユーザーアカウントごとに別に存在する証明書ストア。"@ja ;
    skos:altLabel "CurrentUser" ;
    skos:altLabel "現在のユーザーの証明書ストア"@ja ;
    skos:broader <https://comcomponent.com/knowledge/certificate-store/> ;
    ks:verifiedBy <https://comcomponent.com/knowledge/certmgr-msc/> ;
    ks:inherits <https://comcomponent.com/knowledge/localmachine-store/> .

<https://comcomponent.com/knowledge/certmgr-msc/> a skos:Concept ;
    skos:prefLabel "certmgr.msc"@ja ;
    skos:definition "現在のユーザーの証明書ストアを開く管理コンソール。"@ja .

<https://comcomponent.com/knowledge/certlm-msc/> a skos:Concept ;
    skos:prefLabel "certlm.msc"@ja ;
    skos:definition "ローカルコンピューターの証明書ストアを開く管理コンソール。"@ja .

<https://comcomponent.com/knowledge/cert-drive/> a skos:Concept ;
    skos:prefLabel "Cert:ドライブ"@ja ;
    skos:definition "証明書ストアをファイルシステムのように操作するPowerShellのプロバイダー。"@ja ;
    skos:altLabel "Certificate Provider" .

<https://comcomponent.com/knowledge/pfx/> a skos:Concept ;
    skos:prefLabel "PFXファイル"@ja ;
    skos:definition "証明書と秘密キーのペアを受け渡すためのファイル形式(PKCS #12)。"@ja ;
    skos:altLabel "PKCS #12" ;
    skos:altLabel ".pfx" .

<https://comcomponent.com/knowledge/certutil/> a skos:Concept ;
    skos:prefLabel "certutil"@ja ;
    skos:definition "証明書・CRL・チェーンの検証やストアのダンプを行うコマンドラインツール。"@ja .

<https://comcomponent.com/knowledge/code-signing-cert/> a skos:Concept ;
    skos:prefLabel "コード署名証明書"@ja ;
    skos:definition "ソフトウェアの発行元を証明し、改ざんを検出するための証明書。"@ja ;
    skos:altLabel "Authenticode証明書"@ja .

<https://comcomponent.com/knowledge/trusted-publisher-store/> a skos:Concept ;
    skos:prefLabel "信頼された発行元ストア"@ja ;
    skos:definition "信頼する発行元のコード署名証明書を登録する論理ストア。"@ja ;
    skos:altLabel "TrustedPublisher" ;
    skos:broader <https://comcomponent.com/knowledge/certificate-store/> .

<https://comcomponent.com/knowledge/desktop-app/> a skos:Concept ;
    skos:prefLabel "対話ユーザーのデスクトップアプリ"@ja ;
    skos:definition "ログオンしたユーザー本人の権限で動くデスクトップアプリケーション。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/currentuser-store/> .

<https://comcomponent.com/knowledge/cert-renewal/> a skos:Concept ;
    skos:prefLabel "証明書の入れ替え"@ja ;
    skos:definition "新しい証明書を追加し、相手先への事前登録・切り替え・動作確認を経て古い証明書を削除する手順。"@ja ;
    skos:altLabel "証明書更新"@ja ;
    ks:requires <https://comcomponent.com/knowledge/private-key-acl/> .

<https://comcomponent.com/knowledge/cert-ledger/> a skos:Concept ;
    skos:prefLabel "証明書台帳"@ja ;
    skos:definition "用途・拇印・保管場所・期限・担当者を記録し、棚卸し結果と突き合わせる一覧。"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/certificate-expiry/> .

<https://comcomponent.com/knowledge/self-signed-cert/> a skos:Concept ;
    skos:prefLabel "アドホックな自己署名証明書"@ja ;
    skos:definition "検証用にツールで自前発行したサーバー/クライアント証明書。鍵管理の仕組みを持たず、検証環境限定・期限つきでの利用が原則。適切に運用される社内CAのルート証明書(これも技術的には自己署名)とは区別する。"@ja ;
    skos:altLabel "自己署名証明書"@ja ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/root-ca/> .

<https://comcomponent.com/knowledge/trust-anchor-risk/> a skos:Concept ;
    skos:prefLabel "信頼の起点の悪用リスク"@ja ;
    skos:definition "ルートストアに植えた証明書の秘密キーが漏れると、任意のサイトやソフトウェアへのなりすましの足場になるリスク。"@ja .

<https://comcomponent.com/knowledge/cert-selection/> a skos:Concept ;
    skos:prefLabel "証明書の選択(検索)"@ja ;
    skos:definition "アプリケーションが使用する証明書をストアから特定する処理。拇印やサブジェクト名をキーに検索する。"@ja .

<https://comcomponent.com/knowledge/personal-store/> a skos:Concept ;
    skos:prefLabel "「個人」ストア(My)"@ja ;
    skos:definition "自分が使う証明書を秘密キーと関連付けて保管する論理ストア。唯一コンピューターストアから内容が継承されない。"@ja ;
    skos:altLabel "My" ;
    skos:altLabel "個人ストア"@ja .

<https://comcomponent.com/knowledge/store-mismatch/> a skos:Concept ;
    skos:prefLabel "ストアの取り違え"@ja ;
    skos:definition "証明書を入れたストアと、プログラムや管理者が見ているストアが別物になっている状態。「開発中は動いたのに本番で見つからない」の正体。"@ja ;
    ks:mayCause <https://comcomponent.com/knowledge/certificate-failure/> .

<https://comcomponent.com/knowledge/iis-apppool/> a skos:Concept ;
    skos:prefLabel "IISアプリケーションプール"@ja ;
    skos:definition "IIS上のWebアプリの実行単位。プールのIDというアカウントで無人実行される。"@ja ;
    skos:altLabel "アプリプールID"@ja ;
    ks:uses <https://comcomponent.com/knowledge/localmachine-store/> ;
    ks:requires <https://comcomponent.com/knowledge/private-key-acl/> .

<https://comcomponent.com/knowledge/task-scheduler/> a skos:Concept ;
    skos:prefLabel "タスクスケジューラの無人実行"@ja ;
    skos:definition "ユーザーのログオン有無に関わらずタスクに指定したアカウントでプログラムを実行する仕組み。"@ja .

<https://comcomponent.com/knowledge/exportable-import/> a skos:Concept ;
    skos:prefLabel "エクスポート可能でのインポート"@ja ;
    skos:definition "Import-PfxCertificateに-Exportableを付け、取り込んだ秘密キーを後から再エクスポートできる形にすること。"@ja ;
    skos:altLabel "-Exportable" ;
    ks:mayCause <https://comcomponent.com/knowledge/key-exfiltration-risk/> .

<https://comcomponent.com/knowledge/key-exfiltration-risk/> a skos:Concept ;
    skos:prefLabel "秘密キーの持ち出しリスク"@ja ;
    skos:definition "ストア上の秘密キーが再エクスポートされ、外部へ持ち出され得るリスク。"@ja .

<https://comcomponent.com/knowledge/everyone-full-control/> a skos:Concept ;
    skos:prefLabel "Everyoneへのフルコントロール付与"@ja ;
    skos:definition "動かないからと秘密キーのACLにEveryoneのフルコントロールを与えること。秘密キーを平文パスワード並みの扱いに落とす。"@ja ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/private-key-acl/> .

<https://comcomponent.com/knowledge/partner-registration/> a skos:Concept ;
    skos:prefLabel "相手先への証明書事前登録"@ja ;
    skos:definition "事前登録が必要なAPIで、新しい証明書を相手先システムへ届け出て新旧併用の並行期間を確保すること。"@ja .

<https://comcomponent.com/knowledge/cert-switchover/> a skos:Concept ;
    skos:prefLabel "新証明書への切り替え"@ja ;
    skos:definition "アプリの構成を新しい証明書(拇印)に切り替えて動作確認する作業。"@ja .

<https://comcomponent.com/knowledge/x509store/> a skos:Concept ;
    skos:prefLabel "X509Storeクラス"@ja ;
    skos:definition "StoreNameとStoreLocationを指定して証明書ストアを開く.NETのクラス。"@ja ;
    skos:altLabel "X509Store" ;
    ks:uses <https://comcomponent.com/knowledge/certificate-store/> .

<https://comcomponent.com/knowledge/validonly-search/> a skos:Concept ;
    skos:prefLabel "validOnly指定の証明書検索"@ja ;
    skos:definition "X509Certificate2Collection.Findの第3引数にtrueを指定し、検証を通った有効な証明書だけを返す検索。"@ja ;
    skos:altLabel "validOnly" .

<https://comcomponent.com/knowledge/key-usage/> a skos:Concept ;
    skos:prefLabel "キー使用法(Key Usage)属性"@ja ;
    skos:definition "証明書の用途を示す属性。.NET Core系のクライアント認証ではDigital Signatureを含む必要がある。"@ja ;
    skos:altLabel "Key Usage" .

<https://comcomponent.com/knowledge/config-externalization/> a skos:Concept ;
    skos:prefLabel "拇印の構成外出し"@ja ;
    skos:definition "証明書の拇印をコードではなく構成ファイルに置き、リリースなしで差し替えられるようにする設計。"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/cert-selection/> .

<https://comcomponent.com/knowledge/cert-choice-logging/> a skos:Concept ;
    skos:prefLabel "選択証明書のログ出力"@ja ;
    skos:definition "起動時にどの証明書(拇印・期限)を選んだかをログに残す運用。障害調査と台帳突き合わせの起点になる。"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/certificate-failure/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-service/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/localmachine-store/> ;
    schema:description "無人実行のプログラムは全アカウント共通のコンピューターストアを使うのが原則"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/install/local-machine-and-current-user-certificate-stores> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/client-certificate/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/private-key/> ;
    schema:description "クライアント認証には証明書本体だけでなく対になる秘密キーでの署名処理が必要"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/pki/import-pfxcertificate> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-service/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/private-key-acl/> ;
    schema:description "コンピューターストアの秘密キーは既定で管理者とSYSTEM以外から読めないため、LocalSystem以外の実行アカウント(NETWORK SERVICE・専用アカウント等)には読み取り付与が必要"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/microsoft-desktop-optimization-pack/appv-v4/how-to-modify-private-key-permissions-to-support-management-server-or-streaming-server> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/certificate-chain/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/intermediate-ca/> ;
    schema:description "中間CAを挟む発行構成では、中間CA証明書を相手からの提示・AIA取得・ストアのいずれかで入手できないとチェーンを構築できない(ルート直下発行のチェーンには中間CAはない)"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/administration/windows-commands/certutil> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/certificate-chain/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/root-ca/> ;
    schema:description "ルートCAが「信頼されたルート証明機関」に配布されていないと信頼されない"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/administration/windows-commands/certutil> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/certificate-expiry/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/certificate-failure/> ;
    schema:description "有効期限切れは「朝から接続できない」型の障害の定番原因。定期棚卸しで防ぐ"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.security/about/about_certificate_provider> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/thumbprint-hardcode/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/certificate-failure/> ;
    schema:description "拇印は更新で必ず変わるため、コードや構成に直書きされた古い拇印の参照が障害原因になる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.security.cryptography.x509certificates.x509certificate2collection.find> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/certificate-failure/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/certificate-chain/> ;
    schema:description "certutil -verify でチェーンのどこが切れているかを切り分けられる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/administration/windows-commands/certutil> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/root-ca/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/group-policy/> ;
    schema:description "社内CAのルートはGPOの公開キーのポリシーで各PCへ配布する"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-fs/deployment/distribute-certificates-to-client-computers-by-using-group-policy> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/root-ca/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/intune/> ;
    schema:description "Intuneの「信頼された証明書」プロファイルで配布できる"@ja ;
    ks:evidence <https://learn.microsoft.com/intune/intune-service/protect/certificates-trusted-root> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/currentuser-store/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/certmgr-msc/> ;
    schema:description "現在のユーザーのストアを開く管理コンソール"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/localmachine-store/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/certlm-msc/> ;
    schema:description "ローカルコンピューターのストアを開く管理コンソール。管理には管理者権限が必要"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/certificate-store/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/cert-drive/> ;
    schema:description "Cert:\\CurrentUser / Cert:\\LocalMachine としてPowerShellから同じ構造を操作できる"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.security/about/about_certificate_provider> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/certificate-expiry/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/cert-drive/> ;
    schema:description "Get-ChildItem の -ExpiringInDays で期限切れ間近の証明書を機械的に棚卸しできる"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.security/about/about_certificate_provider> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/private-key/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/pfx/> ;
    schema:description "受け渡し時は証明書とペアでPFX(PKCS #12)に格納される。インポート時は既定でエクスポート不可"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/pki/import-pfxcertificate> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/certificate-chain/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/certutil/> ;
    schema:description "certutil -urlfetch -verify でチェーンのどこが切れているかを切り分けられる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/administration/windows-commands/certutil> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/code-signing-cert/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/trusted-publisher-store/> ;
    schema:description "署名済みソフトウェアの発行元を信頼済みとして登録する場所。GPOでの配布運用がある"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.security.cryptography.x509certificates.x509store> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/desktop-app/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/currentuser-store/> ;
    schema:description "ログオンユーザー本人の権限で動くアプリは、そのユーザーのストアを使うのが原則"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/install/local-machine-and-current-user-certificate-stores> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/root-ca/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/localmachine-store/> ;
    schema:description "社内配布のルートCAは通常、コンピューターの「信頼されたルート証明機関」に配置され全ユーザーに効く"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-fs/deployment/distribute-certificates-to-client-computers-by-using-group-policy> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/private-key-acl/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/certlm-msc/> ;
    schema:description "certlm.mscの「秘密キーの管理」から実行アカウントへ読み取り権限を付与する"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/microsoft-desktop-optimization-pack/appv-v4/how-to-modify-private-key-permissions-to-support-management-server-or-streaming-server> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cert-renewal/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/certificate-failure/> ;
    schema:description "新旧併存→相手先へ事前登録→切り替え→動作確認→旧削除の順で進めれば、切り替え起因の障害を避けられる"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/pki/import-pfxcertificate> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cert-ledger/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/certificate-expiry/> ;
    schema:description "用途・拇印・期限・担当者の台帳を棚卸し結果と突き合わせれば、期限切れを事前に発見できる"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.security/about/about_certificate_provider> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/self-signed-cert/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/trust-anchor-risk/> ;
    schema:description "鍵管理のないアドホックな自己署名を本番の信頼ストアに配布すると、秘密キー漏えい時になりすましの足場を与える"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-fs/deployment/distribute-certificates-to-client-computers-by-using-group-policy> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/thumbprint-hardcode/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/cert-selection/> ;
    schema:description "拇印は構成に外出しし、新旧証明書の並行期間を設けて切り替える。直書きは更新のたびに障害の火種になる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.security.cryptography.x509certificates.x509certificate2collection.find> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/self-signed-cert/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/root-ca/> ;
    schema:description "鍵管理のないアドホックな自己署名を本番の信頼の起点に据えることは避け、検証環境限定・期限つきで使う。信頼の起点には適切に運用される社内CAを用いる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-server/identity/ad-fs/deployment/distribute-certificates-to-client-computers-by-using-group-policy> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cert-ledger/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/certificate-expiry/> ;
    schema:description "台帳と月次の機械的な棚卸し(-ExpiringInDays)の突き合わせを、期限切れ事故の標準対策にする"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.security/about/about_certificate_provider> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/currentuser-store/> ;
    rdf:predicate ks:inherits ;
    rdf:object <https://comcomponent.com/knowledge/localmachine-store/> ;
    schema:description "ユーザーストアの各論理ストアは「個人」を除いてコンピューターストアの同名ストアの内容を継承して見せる。ルートCAの配布が全ユーザーに効くのはこの仕組み"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/install/local-machine-and-current-user-certificate-stores> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/client-certificate/> ;
    rdf:predicate ks:storedIn ;
    rdf:object <https://comcomponent.com/knowledge/personal-store/> ;
    schema:description "クライアント証明書は秘密キーと関連付く「個人」(My)ストアに入れる。「個人」は唯一継承されないため、誰から見える必要があるかを自分で決める"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/install/local-machine-and-current-user-certificate-stores> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/store-mismatch/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/certificate-failure/> ;
    schema:description "開発者のユーザーストアとサービス実行アカウントのユーザーストアは別物。「開発中は動いたのに本番で見つからない」の正体"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/install/local-machine-and-current-user-certificate-stores> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/iis-apppool/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/localmachine-store/> ;
    schema:description "IIS上のWebアプリはアプリケーションプールのIDで無人実行されるため、コンピューターストアを使う"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/install/local-machine-and-current-user-certificate-stores> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/iis-apppool/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/private-key-acl/> ;
    schema:description "アプリプールIDにも秘密キーの読み取り権限の付与が必要"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/microsoft-desktop-optimization-pack/appv-v4/how-to-modify-private-key-permissions-to-support-management-server-or-streaming-server> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/task-scheduler/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/localmachine-store/> ;
    schema:description "無人実行のタスクはコンピューターストア推奨。実行アカウントのユーザーストアでも動かせるため必須ではないが、プロファイルやストアの見え方の検証が増えるだけで利点が乏しい"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/drivers/install/local-machine-and-current-user-certificate-stores> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/exportable-import/> ;
    rdf:predicate ks:mayCause ;
    rdf:object <https://comcomponent.com/knowledge/key-exfiltration-risk/> ;
    schema:description "何でもエクスポート可能で取り込むのは秘密キーの持ち出し経路を1本増やす行為。既定のエクスポート不可を基本にし、原本pfxの安全な保管で代替する"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/pki/import-pfxcertificate> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/everyone-full-control/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/private-key-acl/> ;
    schema:description "署名に使うだけなら読み取りで足りる。Everyoneへのフルコントロールは秘密キーを平文パスワード並みの扱いに落とす"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/microsoft-desktop-optimization-pack/appv-v4/how-to-modify-private-key-permissions-to-support-management-server-or-streaming-server> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cert-renewal/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/private-key-acl/> ;
    schema:description "権限は証明書の秘密キーごとに付くため、入れ替えたら付与もやり直す。更新時に最も忘れやすい手順"@ja ;
    ks:evidence <https://learn.microsoft.com/previous-versions/windows/microsoft-desktop-optimization-pack/appv-v4/how-to-modify-private-key-permissions-to-support-management-server-or-streaming-server> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/partner-registration/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/cert-switchover/> ;
    schema:description "事前登録が必要なAPIでは、旧証明書で運用を続けたまま先に届け出て、新旧どちらでも受け付けられる並行期間を確保してから切り替える(拇印の異なる新旧証明書は同じストアに共存できる)"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/pki/import-pfxcertificate> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/x509store/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/certificate-store/> ;
    schema:description "StoreNameとStoreLocation(CurrentUser/LocalMachine)を指定してストアを開く.NETの入口。3章の判断がStoreLocationの指定に直結する"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.security.cryptography.x509certificates.x509store> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/validonly-search/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/certificate-failure/> ;
    schema:description "検証を通った有効な証明書だけを返すため期限切れを掴まない保険になる。ただし未信頼の自己署名も「見つからない」側に落ちる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.security.cryptography.x509certificates.x509certificate2collection.find> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/client-certificate/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/key-usage/> ;
    schema:description ".NET Core系ではキー使用法属性がある場合、Digital Signatureを含まない証明書はリクエスト送信に使われない"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.net.http.httpclienthandler.clientcertificates> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/config-externalization/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/cert-selection/> ;
    schema:description "拇印は証明書ごとに一意で更新すれば必ず変わるため、構成ファイルに外出ししてリリースなしで差し替えられるようにする。構成箇所は台帳に載せる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/api/system.security.cryptography.x509certificates.x509certificate2collection.find> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cert-choice-logging/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/certificate-failure/> ;
    schema:description "証明書は拇印で識別されるため、起動時にどの証明書(拇印・期限)を選んだかをログに残す。障害調査でも台帳突き合わせでもこの1行が効く"@ja ;
    ks:evidence <https://learn.microsoft.com/powershell/module/microsoft.powershell.security/about/about_certificate_provider> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .
