首页 文章

ASP.Net核心应用程序服务只在Ubuntu上侦听端口5000

提问于
浏览
2

我试图在Ubuntu服务器上托管ASP.Net Core MVC应用程序(启用https重定向),使用Nginx作为反向代理 . 我使用OpenSSL创建并安装了本地SSL证书 . 当我使用dotnet CLI运行我的应用程序时,它会同时监听http://localhost:5000https://localhost:5001,并且我可以使用https在Web上访问它(http请求正由Nginx重定向到https) .

问题是当我尝试运行作为服务时,它只监听http://localhost:5000 .

这是* .service文件:

[Unit]
Description=Test ASP.Net core web application service.

[Service]
WorkingDirectory=/home/ubuntu/MyAppFolder
ExecStart=/usr/bin/dotnet/home/ubuntu/MyAppFolder/MyApplication.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
SyslogIdentifier=MyApplication
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Development
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
Environment=ASPNETCORE_HTTPS_PORT=5001
Environment=ASPNETCORE_URLS=http://localhost:5000;https://localhost:5001

[Install]
WantedBy=multi-user.target

Environment details :ASP.Net Core 2.1.1,ASP.Net Core SDK 2.1.3,Nginx 1.14,Ubuntu 16.04

1 回答

  • 2

    最后我想出了这个问题 . 问题是开发人员ssl证书与dotnet SDK一起安装,名称为localhost . 如果是Ubuntu,证书位于/ home / /.dotnet/corefx/cryptography/x509stores/my

    Kestrel只搜索执行用户的主目录,这对于'www-data'是不存在的,因此无法找到开发证书 . 由于它没有绑定到默认的https端口 .

    为了使其正常工作,我首先使用OpenSSL将PEM(.crt)格式的现有证书转换为PKCS12(.pkf) . 以下是命令 .

    sudo openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile more.crt
    

    然后我需要使用appsettings.json文件将此证书指定给Kestrel服务器 . 下面是该文件现在的样子:

    {
      "ConnectionStrings": {
        "PostgresConnection": "Host=localhost; Database=postgres; Username=postgres; Password=xyz123"
      },
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Warning"
        }
      },
    
      "Kestrel": {
        "Endpoints": {
          "HTTPS": {
            "Url": "https://localhost:5001",
            "Certificate": {
              "Path": "/etc/ssl/certs/<certificate.pfx>",
              "Password": "xyz123"
            }
          }
        }
      }
    }
    

    然后,您需要将www-data用户添加到ssl-certs组 . 下面是命令行:

    sudo usermod -aG ssl-cert www-data
    

相关问题