web-dev-qa-db-ja.com

Linuxプラットフォームで.netコアが証明書を検索する場所

Windowsでは、.NET Frameworkクラスの場合、sslkeyrepositoryを* SYSTEM/* USERとして指定できます。Onlinux .NET Coreクラスは、デフォルトでcertificatesを検索し、 sslkeyrepositoryの値は何でしょうか。

13
subbaraoc

Linuxでは.Net CoreOpenSSLを使用するため、OpenSSLが証明書を取得できるように、コンテナにLinux environmentを設定する必要があります。

これを行うには、次の2つの方法があります。

  1. 証明書.crtファイルを、update-ca-certificatesが信頼できる証明書をスキャンする場所にコピーします。 /usr/local/share/ca-certificates/ oron RHEL /etc/pki/ca-trust/source/anchors/

    COPY myca.crt /usr/local/share/ca-certificates/
    
  2. update-ca-certificatesの呼び出し:

    RUN update-ca-certificates
    
3
Barr J

LinuxおよびMacの場合、.NET COREOpenSSLを使用します。

秘密鍵と証明書署名リクエストを生成するコマンド:

openssl req -config https.config -new -out csr.pem

自己署名証明書を作成するコマンド:

openssl x509 -req -days 365 -extfile https.config -extensions v3_req -in csr.pem -signkey key.pem -out https.crt

kestrelで使用できる証明書と秘密キーを含むpfxファイルを生成するコマンド:

openssl pkcs12 -export -out https.pfx -inkey key.pem -in https.crt -password pass:<password>

その後Trust the certificate

この手順はオプションですが、これがない場合、ブラウザはサイトが安全でない可能性があることを警告します。ブラウザがtrust your certificateでない場合は、次のように表示されます。

Linuxでは、証明書を集中的に信頼する方法がないため、次のいずれかを実行できます。

  1. ブラウザの除外リストで使用しているURLを除外します

  2. Localhost上のすべての自己署名証明書を信頼する

  3. ブラウザの信頼できる証明書のリストにhttps.crtを追加します。

これを正確に達成する方法は、ブラウザ/ディストリビューションによって異なります。

完全な Kestrel HTTPSサンプルアプリ を参照することもできます

またはこのブログをフォロー 異なるプラットフォーム間でASP.NET CoreでHTTPSを構成

5
ArunPratap

このページでは、Linux(およびすべてのプラットフォーム)での.NET Coreの_X509Store_の場所の適切な(および公式の)要約を提供しています

Linuxでは、_LocalMachine/Root_ストアを読み取り専用モードで開くことができ、そのストアから返される証明書は、標準のLinuxシステムグローバル証明書ディレクトリから取得されます。 @ barr-jの回答は、Linuxコマンドを使用して証明書をシステムディレクトリにコピーする方法に関する情報を提供します。ただし、これらのシステムグローバル証明書の通常の用途は、信頼できる認証局を指定することであり、https証明書(秘密鍵が含まれ、ホスト上のすべてのユーザーがアクセスできないようにする)を安全に保管する場所としてではありません。

Linuxと.NETでは、_LocalMachine/Root X509Store_に直接書き込むことはできません。_LocalMachine/My_はサポートされていません。

証明書へのアクセスを特定のユーザーに限定したい場合(https証明書には良い考えです)、. NETを使用するLinuxでは、new X509Store(StoreName.My, StoreLocation.CurrentUser)を使用してユーザーローカルの証明書ストアに読み書きできます。

0
crimbo