ssl自签名证书错误 - localhost

时间:2016-09-09 12:28:19

标签: c# asp.net-web-api

我使用的课程非常有趣,但我遇到了一些问题。

http://www.asp.net/web-api/overview/security/individual-accounts-in-web-api

我收到证书错误但我明白为什么会出现此问题。此证书应连接到我的计算机名称。我不明白他如何生成此证书以及如何编辑此问题。

enter image description here

这是重要的代码。用证书名称解决这个问题需要做些什么?

using System;
using System.Net;
using System.Net.Http;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;

namespace LocalAccountsApp.Filters
{
    public class RequireHttpsAttribute : AuthorizationFilterAttribute
    {
        public int Port { get; set; }

        public RequireHttpsAttribute()
        {
            Port = 443;
        }

        public override void OnAuthorization(HttpActionContext actionContext)
        {
            var request = actionContext.Request;

            if (request.RequestUri.Scheme != Uri.UriSchemeHttps)
            {
                var response = new HttpResponseMessage();

                if (request.Method == HttpMethod.Get || request.Method == HttpMethod.Head)
                {
                    var uri = new UriBuilder(request.RequestUri);
                    uri.Scheme = Uri.UriSchemeHttps;
                    uri.Port = this.Port;

                    response.StatusCode = HttpStatusCode.Found;
                    response.Headers.Location = uri.Uri;
                }
                else
                {
                    response.StatusCode = HttpStatusCode.Forbidden;
                }

                actionContext.Response = response;
            }
            else
            {
                base.OnAuthorization(actionContext);
            }
        }
    }

}

1 个答案:

答案 0 :(得分:5)

该错误是正确的。您使用的证书由域localhost自行签名。由于它没有由受信任的证书根(例如Verisign)签名,因此您的浏览器会警告您证书无效,因此网站可能是非法的。

错误不应该导致功能问题,当您部署到生产环境时,您应该获得为您要部署到的域签名的可信证书。

您不会让任何人为域localhost签署证书,但如果错误困扰您,您可以将您使用的证书添加到受信任的根列表中使用MMC的证书,如this TechNet article

中所述