はじめに
Microsoftが最近オープンソースに力を入れている。
元々VisualStudioが好きな僕が「そうだ!ASP.NET Coreを使ってみよう」と奮い立ってみた。
※いつもはJavascriptとPerl使いです。Tengラブ。
.NET Core SDKインストール
インストール参考
インストール手順
$ wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
$ sudo dpkg -i packages-microsoft-prod.deb
$ sudo add-apt-repository universe
$ sudo apt install apt-transport-https
$ sudo apt update
ASP.NET Coreサンプルを用意
VisualStudio2019を起動し、ASP.NET Coreのサンプルプロジェクトを作成して、ビルド。
Debug配下またはRelease配下のファイル達をUbuntuに転送。
$ sudo mkdir /var/webapp/
$ sudo mv /home/hoge/asp_net_app /var/webapp/
実行してみる
$ dotnet /var/webapp/asp_net_app/hoge.dll
Unable to start Kestrel.
System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found.
エラー。。
調べてみるとhttps接続でなければならないらしく、オレオレ証明書を作って入れる。
オレオレ証明書の作成
参考 - ASP.NET CoreでHTTPSエラーが発生する現象の対処方法
https://www.aruse.net/entry/2018/10/05/204120
$ openssl genrsa 2024 > server.key
証明書署名要求(CSR / Certificate Signing Request)を作成します。
$ openssl req -new -key server.key > server.csr
Country Name (2 letter code) []:
State or Province Name (full name) []:
Locality Name (eg, city) []:
Organization Name (eg, company) []:
Organizational Unit Name (eg, section) []:
Common Name (eg, fully qualified host name) []:localhost
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: password
サーバー証明書を作成します。
ここでは有効期限を10年(3650日)としています。
$ openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt
サーバー証明書を crt 形式(と秘密鍵)から pfx 形式に変換します。パスワードは"password"と設定しています。
$ openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
Enter Export Password:
Verifying - Enter Export Password:
そして、ASP.NET MVC プロジェクトの Program.cs を以下のように修正します。
//追加
using System.Net;
//(中略)
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
options.Listen(IPAddress.Loopback, 5000);
options.Listen(IPAddress.Loopback, 5001, listenOptions =>
{
listenOptions.UseHttps("server.pfx","password");
});
})
.UseStartup<Startup>();