如何使用Windows SDK中的工具为代码签名创建自签名证书?
我做了一个干净的Windows 10和Visual Studio 2015安装,并没有找到任何地方的makecert.exe.是否需要安装其他软件才能恢复此程序?
我查看了"C:\ Program Files(x86)\ Microsoft SDKs\Windows \\"下的所有文件夹,但没有看到任何文件夹.
我还打开了"VS2015的开发人员命令提示符"并尝试运行"makecert",但未找到.
出于某种原因,我在系统上缺少makecert.exe.我搜索了整个硬盘,它不在那里.特别是,它不在C:\ Program Files\Microsoft SDKs\Windows\v6.0A\bin中,我相信它应该是.我没有在互联网上找到关于这个主题的任何文章.有什么想法发生了什么?
我正在使用ASP.Net Core,我有2个项目.
如果我使用Postman尝试其中一个WebApi端点,我没有任何问题,并且/ api/values按预期返回(标准测试端点)
但是,如果我使用MVC应用程序尝试相同的操作,我会得到一个非常令人沮丧的错误:
HttpsConnectionFilter[1]
Failed to authenticate HTTPS connection
Run Code Online (Sandbox Code Playgroud)
我正在使用Kestrel托管Asp.Net核心.
我有一个使用PowerShell创建的自签名PFX证书,这是抛出异常的代码:
var handler = new HttpClientHandler();
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.SslProtocols = SslProtocols.Tls12;
handler.ClientCertificates.Add(new X509Certificate2("localcert.pfx", "xxx"));
var client = new HttpClient(handler);
var content = await client.GetStringAsync("https://localhost:44301/api/values");
Run Code Online (Sandbox Code Playgroud)
如果我要运行这个,我会得到同样的错误:
var client = new HttpClient();
var content = await client.GetStringAsync("https://localhost:44301/api/values");
Run Code Online (Sandbox Code Playgroud)
我的Kestrel设置在我的Program.cs中是这样的
var cert = new X509Certificate2("localcert.pfx", "xxx");
var host = new WebHostBuilder()
.UseKestrel(cfg => cfg.UseHttps(cert))
.UseUrls("https://localhost:44300")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
Run Code Online (Sandbox Code Playgroud)
我知道我为上面的HttpClient再次定义了证书,但我很绝望.
任何人都可以提供一些见解,了解为什么会发生这种情况,以及如何修复它,甚至调试它,因为它让我发疯.我正在浏览并单步执行KestrelHttpServer代码,看看是否会提供一些见解.
这是我从Kestrel控制台窗口获得的完整错误
info:HttpsConnectionFilter 1 无法验证HTTPS连接.System.IO.IOException:身份验证失败,因为远程方已关闭传输流.在System.Net.Security.SslState.StartReadFrame(Byte []缓冲区,Int32 …