최근 외부 로그인 공급자(예:구글,페이스 북)를 사용하여 인증을 구성하는 방법을 looking 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
에 대한 요청 만 제공됩니다.
왜 내가 기본
리눅스,맥코스에서 이것을 시도하거나 윈도우에서 명령줄을 사용하는 경우dotnet run
을 호출하고 크롬을 열고https://localhost:43000
로 이동하여 녹색 자물쇠 아이콘을 볼 수 있습니다.웹 응용 프로그램을 직접 실행하도록 지정하는 것입니다.:
또한 당신이 그것을 시도 할 브라우저를 선택합니다. 특정 브라우저에 테스트 루트 인증 기관의 인증서를 설치한 경우 해당 브라우저를 사용하십시오.):
에서 응용 프로그램을 시도 할 브라우저로 크롬을 선택 마지막으로,프로젝트 속성을 편집(오른쪽 클릭하고 속성을 선택):
:2980>
사용 ASP.NET 역방향 프록시가있는 코어
를 사용하여 웹 응용 프로그램을 제공 할 수는 있지만 ASP.NET 단지 황조롱이를 사용하여 코어,그것은 사용하지 않는 것이 좋습니다. 황조롱이는 완벽한 기능을 갖춘 웹 서버가 아니며 여전히 일부 보안 기능이 부족하기 때문입니다.
권장되지는 않지만,다른 사람에게 수행한 작업을 표시하고 웹 서버 설치 및 구성 부분을 건너뛰고 싶을 수도 있습니다. 디지털 오션이나 리노드와 같은 서비스를 사용하면 아주 짧은 시간에 부사장을 만들 수 있습니다 ASP.NET 코어는 닷넷 코어 만 설치할 필요가 있습니다.2980>
그러나,만약 당신이 뭔가 더 심각한(그리고 당신은 아마 당신이 여기 있기 때문에 할 수 있기 때문에)를 사용 해야 합니다.ASP.NET 핵심 응용 프로그램.
역방향 프록시 서버는 요청을 수락하고 다른 웹 서버로 전송하여 실제로 해당 요청에 대한 응답을 생성하는 웹 서버입니다. 응답은 해당 요청을 발행한 클라이언트에게 응답을 전달하는 프록시 서버로 다시 전송됩니다.
역방향 프록시를 사용하면 다음과 같습니다:
Browser <----> Nginx <----> Kestrel
이 설정에 대한 좋은 점은 우리가 전체 웹 서버 인 활용하고
Browser <---- HTTPS ---> Nginx <---- HTTP ----> Kestrel
그래서 우리는 심지어
먼저 설치해야 합니다. 나는 이것을 위해 우분투 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 관리자를 열고 서버를 선택합 인증서
가져오기를 클릭하여 인증서:
선택합니다.개인으로 저장소를 떠나,해당 암호를 입력합니다:
를 입력 ASP.NET 코어 모듈이 설치되었습니다. 그것은 당신이 이미 할 가능성이 매우 높습니다.2980>
그러나,그렇지 않은 경우(모듈을 열어서 확인 하 고 거기에 나열 되어 있는지 확인),여기에서 설치 지침을 찾을 수 있습니다 및 다운로드에 대 한 직접 링크 ASP.NET 여기에 코어 서버 호스팅 번들.
이 모듈이 수행하는 작업은 ASP.NET 핵심 웹 사이트 및 계속 실행(충돌하는 경우 다시 시작). 이 모듈은 또한 웹앱에 web.config
파일로 구성되어 있습니다. 프로젝트에서dotnet publish
를 실행하여web.config
설정을 게시 폴더에 올바르게 설정해야 합니다.
다음 단계에서는 새 응용 프로그램 풀을 만들고 관리 코드 없음을 선택합니다. 응용 프로그램 풀에서
ASP.NET 핵심 응용 프로그램. 우리는 우리가 방금 만든 응용 프로그램 풀을 선택해야합니다,물리적 경로로 게시 된 웹 사이트의 경로를 선택,바인딩으로
ASP.NET 핵심 응용 프로그램.