.net core在linux平台哪里搜索证书
Where does .net core search for certificates on linux platform
在 Windows 上,对于 .NET Framework 类 我们可以将 sslkeyrepository
指定为 *SYSTEM/*USER.On linux
.NET Core 在哪里类 默认搜索 certificates
以及 sslkeyrepository
的值。
.Net Core
在 Linux 上使用 OpenSSL
,因此,您需要在容器中设置 Linux environment
,以便 OpenSSL
会选择上证书。
您可以通过两种方式做到这一点:
正在将证书 .crt
文件复制到 update-ca-certificates
将扫描受信任证书的位置 - 例如/usr/local/share/ca-certificates/
或 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 排除列表
信任本地主机上的所有自签名证书
将 https.crt 添加到您的受信任证书列表中
浏览器.
具体如何实现取决于您的 browser/distro。
你也可以参考完整的 Kestrel HTTPS sample app
或关注此博客 Configuring HTTPS in ASP.NET Core across different platforms
简短的回答是,在 Linux 上,LocalMachine/Root
存储可以只读模式打开,并且从该存储返回的证书来自标准 Linux 系统全局证书目录。 @barr-j 的回答提供了一些关于如何使用 Linux 命令将证书复制到系统目录的信息。然而,这些系统全局证书的正常用途是指定受信任的证书颁发机构,而不是作为存储 https 证书(包含私钥,主机上的所有用户都不应访问)的安全位置。
在使用 .NET 的 Linux 上,您不能直接写入 LocalMachine/Root X509Store
,并且 LocalMachine/My
不受支持。
如果您希望您的证书访问仅限于特定用户(对于 https 证书来说是个好主意),在 Linux 上使用 .NET 您可以使用 [= 写入和读取用户本地证书存储14=].
在 Windows 上,对于 .NET Framework 类 我们可以将 sslkeyrepository
指定为 *SYSTEM/*USER.On linux
.NET Core 在哪里类 默认搜索 certificates
以及 sslkeyrepository
的值。
.Net Core
在 Linux 上使用 OpenSSL
,因此,您需要在容器中设置 Linux environment
,以便 OpenSSL
会选择上证书。
您可以通过两种方式做到这一点:
正在将证书
.crt
文件复制到update-ca-certificates
将扫描受信任证书的位置 - 例如/usr/local/share/ca-certificates/
或 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 排除列表
信任本地主机上的所有自签名证书
将 https.crt 添加到您的受信任证书列表中 浏览器.
具体如何实现取决于您的 browser/distro。
你也可以参考完整的 Kestrel HTTPS sample app
或关注此博客 Configuring HTTPS in ASP.NET Core across different platforms
简短的回答是,在 Linux 上,LocalMachine/Root
存储可以只读模式打开,并且从该存储返回的证书来自标准 Linux 系统全局证书目录。 @barr-j 的回答提供了一些关于如何使用 Linux 命令将证书复制到系统目录的信息。然而,这些系统全局证书的正常用途是指定受信任的证书颁发机构,而不是作为存储 https 证书(包含私钥,主机上的所有用户都不应访问)的安全位置。
在使用 .NET 的 Linux 上,您不能直接写入 LocalMachine/Root X509Store
,并且 LocalMachine/My
不受支持。
如果您希望您的证书访问仅限于特定用户(对于 https 证书来说是个好主意),在 Linux 上使用 .NET 您可以使用 [= 写入和读取用户本地证书存储14=].