ASP.NET 처음부터 코어

최근 외부 로그인 공급자(예:구글,페이스 북)를 사용하여 인증을 구성하는 방법을 looking ASP.NET 코어는 이제 그들 중 일부에 대한 요구 사항입니다 것으로 나타났습니다.

내가 주목 한 또 다른 것은 활성화에 대한 리소스를 찾는 것이 얼마나 어려운지였습니다.ASP.NET 핵심.

이 블로그 게시물은 로컬 배포판을 만드는 과정에 관한 것입니다.(주소 표시줄에 녹색 자물쇠 표시)로컬 개발 시간에 대 한 크롬에서 오류 없이 실행 하는 인터넷 핵심 웹사이트. 이 응용 프로그램은 당신에게 아름다운 천장 디자인 아이디어의 갤러리를 보여줍니다

ASP.NET 코어

개발 시 사용할 직접 생성해야 하는 경우 인증서를 만드는 데 사용하는 것이 좋습니다. 그것은 당신이 당신의 자신의 인증 기관 및 인증서를 만들 수있는 방법을 설명뿐만 아니라,당신은 인증 기관을 신뢰 브라우저(크롬이나 파이어 폭스)를 구성 할 수있는 방법뿐만 아니라.

경우에도,이해하려면의 역할은 무엇이 인증서를 HTTPS,뭔가를 찾고 있다면 간단(ish)는 방법에 대한 설명 https 작동합니다.

이제부터는 인증 기관,인증서 및 해당 개인 키를 생성했다고 가정합니다.개인 정보 교환 파일.

새 프로젝트 만들기

비주얼 스튜디오 코드와 여먼을 사용하여 프로세스를 설명하겠습니다.

여먼에 익숙하지 않은 경우 프로젝트 템플릿 목록에서 새 프로젝트를 만들 수 있는 명령줄 도구입니다. 이 패키지에는 디버깅 심볼이 들어 있습니다. 설치 하는 방법에 대 한 지침을 따를 수 있습니다.ASP.NET 여기에 핵심 템플릿.

비주얼 스튜디오 코드와 여먼을 사용하는 이유는 이 과정이 윈도우,리눅스,맥코스에서 작동하기 때문이다.

ASP.NET 핵심 템플릿은 다음 명령을 실행합니다:

$ yo aspnet _-----_ ╭──────────────────────────╮ | | │ Welcome to the │ |--(o)--| │ marvellous ASP.NET Core │`---------´ │ generator! │ ( _´U`_ ) ╰──────────────────────────╯ /___A___\ / | ~ | __'.___.'__ ´ ` |° ´ Y ` ? What type of application do you want to create? (Use arrow keys)❯ Empty Web Application Empty Web Application (F#) Console Application Console Application (F#) Web Application Web Application Basic Web Application Basic (F#) 

빈 웹 응용 프로그램을 선택합니다. 간단한 웹 프로젝트는 텍스트”안녕하세요 세계”와 페이지가 생성됩니다.

당신은 윈도우를 실행하고 비주얼 스튜디오의 전체 버전이있는 경우 당신은 단지 파일을 수행 할 수 있습니다->새 프로젝트,선택 닷넷 코어,ASP.NET 핵심 웹 응용 프로그램을 선택한 다음 빈을 선택합니다.

황조롱이에 대한 구성

황조롱이는 기본적으로 사용되는 웹 서버입니다 ASP.NET 핵심.

Microsoft.AspNetCore.Server.Kestrel.Https패키지를 종속성으로 추가합니다.

프로젝트를 사용하는 경우.프로젝트를 편집하여 이 작업을 수행할 수 있습니다.이 섹션에는 다음이 포함됩니다.:

"Microsoft.AspNetCore.Server.Kestrel.Https": "1.1.0"

버전 번호는 다를 수 있지만Microsoft.AspNetCore.Server.Kestrel패키지에 사용된 버전과 같아야 합니다.

.csproj을 사용하는 경우 다음을 실행하여 종속성을 추가할 수 있습니다:

dotnet add package Microsoft.AspNetCore.Server.Kestrel.Https

인증서 구성

우리를 사용하도록 황조롱이를 구성합니다.파일(인증서 및 개인 키)우리는Program.cs편집WebHostBuilder가 생성되고 몇 가지 변경을해야합니다:

var host = new WebHostBuilder() .UseConfiguration(config) .UseKestrel(options => { options.UseHttps("localhost.pfx", "password"); }) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseUrls("https://*:4430") .UseStartup<Startup>() .Build();

변경 사항은 다음과 같습니다:

.UseKestrel(options => { options.UseHttps("localhost.pfx", "password");})

어떤 우리가 무엇을 지정 곳이다.우리가 사용하고자하는 파일 및 암호. UseHttps은 확장 메서드이며,존재하지 않는다는 오류가 발생하면Microsoft.AspNetCore.Server.Kestrel.Https너겟 패키지를 추가하지 않았기 때문입니다.

또한:

.UseUrls("https://*:4430")

황조롱이가 들어오는 연결을 수신 할 위치를 정의합니다. 또는*대신https://localhost:4430를 사용할 수 있습니다. 그러나*을 사용하면 도메인 이름을 사용할 수 있습니다(예:myDomain.com에 웹 응용 프로그램이있는 경우 여전히 작동하는 반면localhost에서는localhost에 대한 요청 만 제공됩니다.

왜 내가 기본 포트 443 을 사용하지 않았는지 궁금하다면,그것은 1024 이하의 포트에 대해 리눅스에 대한 특별한 권한이 필요하기 때문입니다. 윈도우 에서는이 문제가되지 않을 것입니다. 그러나,황조롱이와 함께이 일을 하기 때문에 개발 시간에 있을 때 권장,그것은 큰 문제가 아니다.

리눅스,맥코스에서 이것을 시도하거나 윈도우에서 명령줄을 사용하는 경우dotnet run을 호출하고 크롬을 열고https://localhost:43000로 이동하여 녹색 자물쇠 아이콘을 볼 수 있습니다.웹 응용 프로그램을 직접 실행하도록 지정하는 것입니다.:

실행 옵션에서 응용 프로그램을 선택

또한 당신이 그것을 시도 할 브라우저를 선택합니다. 특정 브라우저에 테스트 루트 인증 기관의 인증서를 설치한 경우 해당 브라우저를 사용하십시오.):

에서 응용 프로그램을 시도 할 브라우저로 크롬을 선택 마지막으로,프로젝트 속성을 편집(오른쪽 클릭하고 속성을 선택):

마우스 오른쪽 버튼을 클릭하고 속성을 선택

:2980>

시작 주소 변경

사용 ASP.NET 역방향 프록시가있는 코어

를 사용하여 웹 응용 프로그램을 제공 할 수는 있지만 ASP.NET 단지 황조롱이를 사용하여 코어,그것은 사용하지 않는 것이 좋습니다. 황조롱이는 완벽한 기능을 갖춘 웹 서버가 아니며 여전히 일부 보안 기능이 부족하기 때문입니다.

권장되지는 않지만,다른 사람에게 수행한 작업을 표시하고 웹 서버 설치 및 구성 부분을 건너뛰고 싶을 수도 있습니다. 디지털 오션이나 리노드와 같은 서비스를 사용하면 아주 짧은 시간에 부사장을 만들 수 있습니다 ASP.NET 코어는 닷넷 코어 만 설치할 필요가 있습니다.2980>

그러나,만약 당신이 뭔가 더 심각한(그리고 당신은 아마 당신이 여기 있기 때문에 할 수 있기 때문에)를 사용 해야 합니다.ASP.NET 핵심 응용 프로그램.

역방향 프록시 서버는 요청을 수락하고 다른 웹 서버로 전송하여 실제로 해당 요청에 대한 응답을 생성하는 웹 서버입니다. 응답은 해당 요청을 발행한 클라이언트에게 응답을 전달하는 프록시 서버로 다시 전송됩니다.

역방향 프록시를 사용하면 다음과 같습니다:

Browser <----> Nginx <----> Kestrel

이 설정에 대한 좋은 점은 우리가 전체 웹 서버 인 활용하고 활성화 할 수 있다는 것입니다:

Browser <---- HTTPS ---> Nginx <---- HTTP ----> Kestrel

그래서 우리는 심지어 로 황조롱이를 구성 할 필요가 없습니다.2980>

먼저 설치해야 합니다. 나는 이것을 위해 우분투 16.04 를 사용하고 있지만 윈도우에도 설치할 수 있습니다.2980>

우분투를 실행하는 경우 터미널을 열고

$ sudo apt-get install nginx

다음으로 우리가해야 할 일은 구성을 편집하는 것입니다. 그러나 구성 파일의 위치가 무엇인지,구성 파일이 어떻게 활성화되는지를 알기 전에 유용합니다. 구성 파일이 일반적으로 배치되는 폴더는/etc/nginx/sites-available/입니다(이 위치는 다른 리눅스 배포판을 사용하는 경우 다를 수 있습니다).

설치 시 표시되는 구성 파일의 이름은default입니다.

구성을 사용하려면/etc/nginx/sites-enabled폴더에 있어야 합니다. 따라서 새 구성 파일(sites-available)을 생성 한 후sites-enabled에 심볼릭 링크가 생성되어 새 파일을 가리 킵니다.

방금sites-available에서my-site-https라는 새 구성 파일을 생성했다고 상상해보십시오. 그 후에sites-enabled폴더로 이동하여 다음 명령을 실행하여 심볼릭 링크를 만듭니다:

$ ln -s /etc/nginx/sites-available/my-site-htts

이 새로운 구성을 읽으려면 명령을 실행하십시오.:2980>

$ sudo nginx -s reload

ASP.NET http://localhost:5000에서 실행되는 핵심 응용 프로그램입니다.

먼저/etc/nginx/sites-available라는 이름의 새 파일을 만듭니다(예:aspnetcore).:

server { listen 443 ssl; ssl_certificate PATH_TO_CERTIFICATE/CERTIFICATE_NAME.pem; ssl_certificate_key PATH_TO_PRIVATE_KEY/PRIVATE_KEY.pem; location / { proxy_pass http://localhost:5000; }}

이 경우 포트 443 을 사용하여 포트 443 으로 구성 할 수 있습니다. 다음으로 인증서(ssl_certificate)와 개인 키(ssl_certificate_key)의 위치를 지정하고 마지막으로 모든 요청(location /)을http://localhost:5000으로 전달하도록 지시합니다.

마지막으로sites-enabled에서이 파일에 대한 심볼릭 링크를 만듭니다(default파일에 대한 링크를 삭제할 수 있습니다.이 구성을 로드하려면 다음 단계를 따르세요.:

$ sudo nginx -s reload

당신은 당신이있는 경우 ASP.NET 이제http://localhost:5000에서 실행되는 핵심 응용 프로그램을 열고https://localhost를 통해 제공되는 것을 볼 수 있습니다.암호를 입력하라는 메시지가 표시됩니다. 특히 개인 키의 암호. 이 방법은 실용적이지 않을 수 있으므로 개인 키에서 암호를 제거하려면 다음 명령을 실행할 수 있습니다:

$ openssl rsa -in privateKeyWithPassword.pem -out privateKeyWithoutPassword.pem

다른 유용한 것은 대한 모든 요청을 로 리디렉션하는 것입니다. 이 설정을 사용하려면 다음 추가 구성을 추가합니다.:

server { listen 80; return 301 https://$host$request_uri;}

감독자 구성

우리가 관심을 가져야 할 한 가지는 우리가 우리를 지켜야한다는 것입니다.ASP.NET 핵심 웹 응용 프로그램 실행.

감독자라는 도구가 있는데,이 도구를 사용하면 응용 프로그램이 시작 시간에 시작되도록 구성 할 수 있으며,충돌이 발생하면 다시

우리가해야 할 첫 번째 일은 그것을 설치하는 것입니다. 나는 이것을 위해 우분투 16.04 를 사용하고 있으며,이 배포판에서는 설치가 매우 간단합니다:

$ sudo apt-get install supervisor

우리가 해야 할 다음 일은 우리의 웹 응용 프로그램에 대 한 감독자 구성 파일을 만드는 것입니다. 구성 파일 안에 이 파일을 배치하십시오.:

command=/usr/bin/dotnet PATH_TO_YOUR_PUBLISHED_PROJECT/YOURWEBAPP.dlldirectory=PATH_TO_YOUR_PUBLISHED_PROJECTautostart=trueautorestart=truestdout_logfile=/var/log/aspnetcore.out.logstderr_logfile=/var/log/aspnetcore.err.logenvironment=ASPNETCORE_ENVIRONMENT="Production"

첫 번째 줄은 수퍼바이저에서 웹 응용 프로그램을 참조 할 수있는 이름(aspnetcore)을 정의합니다.

command가 있는 줄은 실행할 명령을 정의합니다. 이 경우dotnet다음에 웹 응용 프로그램이 나타납니다. 프로젝트 루트에서dotnet run을 실행하는 것과 같습니다.

다음 줄(directory=)은 작업 디렉터리를 프로젝트가 있는 디렉터리로 설정합니다.

autostart=true은 시작 시 응용 프로그램이 시작됨을 의미합니다.

autorestart=true은 응용 프로그램이 충돌하거나 중지된 경우에도 응용 프로그램이 다시 시작됨을 의미합니다(예:kill사용). 충돌 시에만 응용 프로그램을 다시 시작하려면autorestart=unexpected으로 변경하십시오.

다음 두 줄은 표준 및 오류 출력이 각각 기록되는 파일을 정의합니다.

마지막으로environment환경 변수를 설정할 수 있습니다.이 경우ASPNETCORE_ENVIRONMENT=Production을 설정합니다.

이 새 구성 파일을 사용하려면 다음 명령을 실행합니다:

$ sudo supervisorctl reread$ sudo supervisorctl update

$ sudo supervisorctl

를 실행하여 감독자에서 실행 중인 프로세스의 상태를 확인할 수 있습니다.관리자에서 사용 가능한 명령 목록에help를 입력합니다. 종료하려면quit을 입력하십시오.

구성하는 HTTPS IIS

첫 번째 단계는 HTTPS 를 사용하도록 설정하는 기능을 사용하는 동안 IIS 를 설치하는 것이 우리의 인증서 및 개인 키(를 사용하여.둘 다 포함 된 파일).

IIS 관리자를 열고 서버를 선택합 인증서

열기는 서버 인증서 IIS

가져오기를 클릭하여 인증서:

인증서 가져오기

선택합니다.개인으로 저장소를 떠나,해당 암호를 입력합니다:

우리가 계속하기 전에 암호

를 입력 ASP.NET 코어 모듈이 설치되었습니다. 그것은 당신이 이미 할 가능성이 매우 높습니다.2980>

그러나,그렇지 않은 경우(모듈을 열어서 확인 하 고 거기에 나열 되어 있는지 확인),여기에서 설치 지침을 찾을 수 있습니다 및 다운로드에 대 한 직접 링크 ASP.NET 여기에 코어 서버 호스팅 번들.

이 모듈이 수행하는 작업은 ASP.NET 핵심 웹 사이트 및 계속 실행(충돌하는 경우 다시 시작). 이 모듈은 또한 웹앱에 요청을 전달한 다음 응답을 클라이언트로 다시 전달합니다.프로젝트 루트에 있는web.config파일로 구성되어 있습니다. 프로젝트에서dotnet publish를 실행하여web.config설정을 게시 폴더에 올바르게 설정해야 합니다.

다음 단계에서는 새 응용 프로그램 풀을 만들고 관리 코드 없음을 선택합니다. 응용 프로그램 풀에서 런타임에 대 한 필요가 없습니다:

새 응용 프로그램 풀 만들기

ASP.NET 핵심 응용 프로그램. 우리는 우리가 방금 만든 응용 프로그램 풀을 선택해야합니다,물리적 경로로 게시 된 웹 사이트의 경로를 선택,바인딩으로 및 인증서 드롭 다운에서 우리의 인증서를 선택:

새 웹 사이트 만들기

ASP.NET 핵심 응용 프로그램.

공유 만 공평합니다…페이스 북에 공유

페이스 북

트위터에 이것에 대해 트윗

트위터

링크드 인에 공유

링크드 인

답글 남기기

이메일 주소는 공개되지 않습니다.