私は非常に基本的な自己ホスト型.NETコア2.1アプリケーションを以下の構成で使用しています。
public class Program
{
public static void Main(string[] args)
{
var Host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.Build();
Host.Run();
}
}
次のような非常に典型的なシンプルなコントローラー:
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody] string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
このアプリケーションは、テストしてHTTPSローカルエンドポイントポート(私の場合は44325)に移動すると、かなりうまく機能します。
https:// localhost:44325/api/values
これまでのところすべて良い。 IIS Expressを使用していないため、このHTTPS接続の証明書がどこから来ているのかを理解したいと思います。実際、証明書はIISに属していません。 =エクスプレス:
拇印を検索すると、証明書ストアで上記の証明書が見つかりません。この証明書はどのように生成されますか?どこで見つけることができますか?なぜこの証明書はEdgeとchromeで機能しますが、Firefoxでは信頼されていませんか?オンザフライで生成されますか?
私の起動設定は次のとおりです。
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:55894",
"sslPort": 44325
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Experimental1": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/values",
"applicationUrl": "https://localhost:44325;http://localhost:55894",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
IIS Expressではなく、Experimental1プロファイルを使用しています。アプリケーションを実行すると、小さなコンソールが表示されます。
この証明書はどのように生成されますか?
.NET Core SDKは、最初にdotnet new
を実行したときに証明書を生成します
https://blogs.msdn.Microsoft.com/webdev/2018/02/27/asp-net-core-2-1-https-improvements/ を参照してください
どこで見つけることができますか?
SDKはASP.NET Core HTTPS開発証明書をローカルユーザー証明書ストアにインストールします。
localhost
を検索なぜこの証明書はEdgeとchromeで機能しますが、Firefoxでは信頼されていませんか?
確かに。 dotnet dev-certs https --trust
を実行した後でも、Firefoxは証明書を信頼せず、「証明書は自己署名されているため信頼されていません。 」
それは単に Firefoxはもはや自己署名証明書を信頼しない かもしれません。私の回避策は、セキュリティ例外を追加することです。