0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

.Netの証明書関連のAPIは、Ubuntuではどこを参照している?

Last updated at Posted at 2021-05-04

はじめに

Windowでは、証明書はLocalMachineやCurrentUserストアに保存されています。(certlm.mscやcertmgr.mscで確認できます。)
.NetのAPIからもLocalMachineやCurrentUserを指定して証明書にアクセスすることができます。
ubuntu20.04.2LTSでは、どのような仕組みになっているのか調べてみました。

以下の記事に詳しく書かれています。

CurrentUser

ユーザのストアは、以下の場所に保存されます。ストアは、初回アクセス時に作成されます。

~/.dotnet/corefx/x509stores/

.Netが内部的に管理しているフォルダなのでAPI経由で使用します。(パスも変更されるかもしれません。)
My、Root、IntermediateでWindows上とほぼ同様の操作が可能です。

LocalMachine

Ubuntu では基本的な CA 証明書が ca-certificates パッケージで提供されていて、ローカルマシンストアは、このパッケージと連携しています。

通常、ca-certificatesパッケージは、以下のフォルダにインストールされています。
/usr/share/ca-certificates/
ca-certificatesパッケージで有効にする証明書のリストです。
/etc/ca-certificates.conf

ca-certificates.conf
...
mozilla/ACCVRAIZ1.crt
mozilla/AC_RAIZ_FNMT-RCM.crt
...

自己署名証明書はRoot、それ以外はIntermediateとして認識されます。
APIからは、読み取り専用で書き込むことはできません。

証明書を登録する方法

  1. /usr/share/ca-certificates/にPEM形式の証明書をコピーします。
  2. ca-certificates.confにコピーした証明書を追記します。
  3. sudo update-ca-certificatesを実行します。

削除方法

  1. ca-certificates.confから削除したい証明書の行を削除します。
  2. sudo update-ca-certificates -fを実行します。

Myは存在しません。

まとめ

ユーザストアは、.Net独自の形式で保存されているため、Windowsとの互換性が高いようです。ローカルマシンストアは、OSの証明書を参照する形になっているので参照のみとなっています。ローカルマシンストア、Myがないため、.net Web API等で使用できるWebサーバのKestrelでも、ストアは使用せずに、環境変数にサーバ証明書のpfxファイルのパスを指定するようになっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?