我也读过其他类似的答案,但他们要么使用IIS,要么谈论自签名证书,要么根本就没有达到目的。
我正在尝试创建一个简单的web,它将使用.NET 5托管在带有的Windows机器中。
我能够创建一个自签名证书并在开发过程中使用它,但是这将托管在客户端的计算机中,并且他们可能有一个SSL证书。在过去,对于仅在本地主机上运行的web应用程序,我做了如下操作:
public static IHostBuilder CreateHostBuilder ( string [] args ) =>
Host.CreateDefaultBuilder( args )
.ConfigureWebHostDefaults( builder =>
{
builder.UseStartup<Startup>();
builder.UseKestrel(options => {
if ( ServerConfiguration.ShouldUseHttps() )
{
options.Listen( IPAddress.Any, 6050, listenOptions =>
{
listenOptions.UseHttps( Path.Combine( "Certificates", "cert.pfx" ), CertificatePassword );
} );
}
else
{
options.Listen( IPAddress.Any, 6050 );
}
} );
} );其中cert.pfx是我自己签署的证书。我将该证书随软件一起发送,并告诉客户端安装它,然后他们可以使用HTTPS,浏览器将信任证书。对于本地主机应用程序来说,可能已经足够了,但是对于公开的API来说还不够。
因此,假设客户端购买了一个SSL证书,我希望我的.NET应用程序使用该证书,该证书将与我的应用程序安装在同一台计算机上。我怎样才能做到这一点?
现在,我刚刚在另一台计算机中部署了我的应用程序,没有任何证书或其他任何东西,但是当然,我会收到“SSL证书不能信任”的错误(例如,在postman中)。
如果客户端不购买SSL证书,我们可以使用自签名证书吗?
非常感谢。
发布于 2021-12-15 00:55:38
不要在代码中配置端点。相反,在您的appsettings.json文件中配置它们,如Kestrel文献中所述。您可以只配置一个端点,也可以配置多个端点。
下面是一个具有HTTP和HTTPS端点的示例配置,其中包含一个带有密码的pfx文件的证书:
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://localhost:5000"
},
"HttpsInlineCertFile": {
"Url": "https://localhost:5001",
"Certificate": {
"Path": "<path to .pfx file>",
"Password": "<certificate password>"
}
}
}
}
}文档显示了证书的不同配置,如.pem和密钥文件(例如,让我们加密)或使用。
这样,如果客户端获得了他们自己的证书,这只是一个更新appsettings.json的问题。
https://stackoverflow.com/questions/70353000
复制相似问题