sub*_*aoc 13 c# ssl .net-core .net-standard .net-standard-2.0
在Windows上,对于.NET Framework类,我们可以指定sslkeyrepository为*SYSTEM/*USER.On 默认情况下linux.NET Core类在哪里搜索,certificates以及可能是什么值sslkeyrepository.
.Net CoreOpenSSL在 Linux 上使用,因此,您需要Linux environment在容器中设置您OpenSSL的证书,以便获取证书。
您可以通过两种方式做到这一点:
将证书.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/
Run Code Online (Sandbox Code Playgroud)
调用update-ca-certificates:
RUN update-ca-certificates
Run Code Online (Sandbox Code Playgroud)
对于Linux和Mac .NET CORE将使用OpenSSL.
命令生成私钥和证书签名请求:
openssl req -config https.config -new -out csr.pem
Run Code Online (Sandbox Code Playgroud)
命令创建自签名证书:
openssl x509 -req -days 365 -extfile https.config -extensions v3_req -in csr.pem -signkey key.pem -out https.crt
Run Code Online (Sandbox Code Playgroud)
命令生成一个pfx文件,其中包含可与Kestrel一起使用的证书和私钥:
openssl pkcs12 -export -out https.pfx -inkey key.pem -in https.crt -password pass:<password>
Run Code Online (Sandbox Code Playgroud)
之后 Trust the certificate
此步骤是可选的,但如果没有它,浏览器将警告您网站可能不安全.如果浏览器没有,您将看到以下内容trust your certificate:
在Linux上没有集中的方式来信任证书,因此您可以执行以下操作之一:
排除您在浏览器排除列表中使用的URL
信任localhost上的所有自签名证书
将https.crt添加到浏览器中的可信证书列表中.
如何实现这一点取决于您的浏览器/发行版.
您还可以参考完整的Kestrel HTTPS示例应用程序
或者关注此博客在不同平台上的ASP.NET Core中配置HTTPS
此页面提供了X509Store.NET Core 在 Linux(和所有平台)上的位置的良好(和官方)摘要。
简短的回答是,在 Linux 上,LocalMachine/Root可以以只读模式打开存储,并且从该存储返回的证书来自标准的 Linux 系统全局证书目录。@barr-j 的回答提供了一些关于如何使用 Linux 命令将证书复制到系统目录的信息。然而,这些系统全局证书的正常用途是指定受信任的证书颁发机构,而不是作为存储 https 证书的安全位置(其中包含一个私钥,主机上的所有用户都不应访问该证书)。
在带有 .NET 的 Linux 上,您不能LocalMachine/Root X509Store直接写入,并且LocalMachine/My不受支持。
如果您希望您的证书访问仅限于特定用户(https 证书的一个好主意),在带有 .NET 的 Linux 上,您可以使用new X509Store(StoreName.My, StoreLocation.CurrentUser).