下面是Asp.net Core项目配置HTTPS支持的完整攻略。
配置HTTPS支持
- 在项目中安装Microsoft.AspNetCore.HttpsPolicy包
PM> Install-Package Microsoft.AspNetCore.HttpsPolicy
- 修改ConfigureServices方法,在其中添加使用HttpsRedirection中间件和开启SSL证书:
services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = StatusCodes.Status308PermanentRedirect;
options.HttpsPort = 5001;
});
```
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.Configure
{
options.CertificateCallback = async (context, certificate, chain, errors) =>
{
if (errors == SslPolicyErrors.None)
{
return true;
}
// TODO: Add logging here
if (errors == SslPolicyErrors.RemoteCertificateNameMismatch)
{
context.Response.Headers.Add("CertificateError", "Subject Name");
}
else if (errors == SslPolicyErrors.RemoteCertificateChainErrors)
{
context.Response.Headers.Add("CertificateError", "Chain");
}
context.Response.StatusCode = StatusCodes.Status403Forbidden;
return false;
};
});
```
- 在Configure方法中添加使用HttpsRedirection中间件和使用HSTS:
app.UseHttpsRedirection();
app.UseHsts();
- 在项目属性中开启SSL证书:
在项目属性的Debug标签中,启用Enable SSL,如果没有证书,Visual Studio将自动生成一个。
示例1:使用自签名证书
有时开发人员需要使用自签名证书来开发和测试,而不是使用真实的CA证书。以下是使用自签名证书的步骤:
-
打开命令提示符,并导航到项目文件夹。
-
执行以下命令以生成证书:
dotnet dev-certs https --trust
- 运行应用程序。
注意:第一次使用自签名证书时,浏览器会警告您该证书不受信任。在警告中选择该证书为安全即可。
示例2:使用Let's Encrypt证书
Let's Encrypt是一个免费的证书颁发机构,可以用于生产环境。以下是使用Let's Encrypt证书的步骤:
-
安装Certbot。
-
运行以下命令以获取新证书:
sudo certbot certonly --standalone -d example.com
其中example.com是您要获取证书的域名。
- 配置服务器以使用Let's Encrypt证书。
将包含Let's Encrypt证书的pfx文件复制到服务器。将以下配置添加到应用程序的程序集中:
```
var httpsPort = 443;
var certificatePath = "path/to/pfx/file.pfx";
var certificatePassword = "password";
var certificate = new X509Certificate2(certificatePath, certificatePassword);
var host = new WebHostBuilder()
.UseKestrel(options =>
{
options.Listen(IPAddress.Any, httpsPort, listenOptions =>
{
listenOptions.UseHttps(certificate);
});
})
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup
.Build();
host.Run();
```
注意:许多托管提供程序已经配置了Let's Encrypt证书,使其变得容易。
至此,Asp.net Core项目的HTTPS支持配置就完成了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Asp.net Core项目配置HTTPS支持 - Python技术站