Windowsでは、.NET Frameworkクラスの場合、sslkeyrepository
を* SYSTEM/* USERとして指定できます。Onlinux
.NET Coreクラスは、デフォルトでcertificates
を検索し、 sslkeyrepository
の値は何でしょうか。
Linuxでは.Net Core
はOpenSSL
を使用するため、OpenSSL
が証明書を取得できるように、コンテナにLinux environment
を設定する必要があります。
これを行うには、次の2つの方法があります。
証明書.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/
update-ca-certificates
の呼び出し:
RUN update-ca-certificates
LinuxおよびMacの場合、.NET CORE
はOpenSSL
を使用します。
秘密鍵と証明書署名リクエストを生成するコマンド:
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では、証明書を集中的に信頼する方法がないため、次のいずれかを実行できます。
ブラウザの除外リストで使用しているURLを除外します
Localhost上のすべての自己署名証明書を信頼する
ブラウザの信頼できる証明書のリストにhttps.crtを追加します。
これを正確に達成する方法は、ブラウザ/ディストリビューションによって異なります。
完全な Kestrel HTTPSサンプルアプリ を参照することもできます
またはこのブログをフォロー 異なるプラットフォーム間でASP.NET CoreでHTTPSを構成
このページでは、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)
を使用してユーザーローカルの証明書ストアに読み書きできます。