Skip to content

Commit

Permalink
update https setup
Browse files Browse the repository at this point in the history
  • Loading branch information
BlueHorn07 committed Sep 26, 2024
1 parent b880637 commit 4b2c22c
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 8 deletions.
18 changes: 16 additions & 2 deletions local-certs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

요걸 세팅 해야 popo-{public, admin}-web에서 HTTPS 엔드포인트를 요구하는 각종 auth 및 cookie 기반 Request를 로컬에서도 테스트 할 수 있습니다.

[NestJS - Localhost 환경에서 HTTPS 적용하기](https://lee-yo-han.github.io/nestjs-localhost-https) 포스트를 참고할 걸 권장드립니다. 아래의 내용은 위 포스트의 대충에 가깝습니다.


## Generate Self-signed certificates

```sh
Expand All @@ -14,10 +17,13 @@ $ cd local-certs
$ openssl genrsa -out private-key.pem 2048

# 개인키를 사용한 새로운 인증서 요청서 생성
# 모두 엔터만 쳐도 무방함.
$ openssl req -new -key private-key.pem -out cert-request.csr

# 요청서를 사용한 자체 서명 인증서 생성
$ openssl x509 -req -in cert-request.csr -signkey private-key.pem -out cert.pem
Certificate request self-signature ok
subject=C=KR, ST=Seoul, L=Seoul, O=personal, OU=local, CN=haha, emailAddress=hoho
```

본래 Production 서비스는 권위 있는 기관에 SSL Cert의 서명을 받아야 한다.
Expand All @@ -33,8 +39,8 @@ import * as https from "https";

async function bootstrap() {
const httpsOptions = {
key: fs.readFileSync("./private-key.pem"),
cert: fs.readFileSync("./cert.pem"),
key: fs.readFileSync("./local-certs/private-key.pem"),
cert: fs.readFileSync("./local-certs/cert.pem"),
};
const app = await NestFactory.create(AppModule, {
httpsOptions,
Expand All @@ -61,3 +67,11 @@ NODE_ENV=local
세팅 후에 클라이언트에서 요청하는 로컬 popo-nest-api 서버의 주소가 `http://localhost:4000`에서 `https://localhost:4000`으로 바뀌어야 한다는 것도 잊지 말자!!


그리고 Client-side에서 아래의 ENV를 설정해줘야 한다.

```sh
NODE_TLS_REJECT_UNAUTHORIZED=0
```


또, 크롬에서도 insecure localhost에 대한 접속을 허용해줘야 한다. `chrome://flags/#allow-insecure-localhost` 경로로 이동해서 해당 옵션을 Enabled로 바꾸자.
10 changes: 4 additions & 6 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,19 @@ import * as cookieParser from 'cookie-parser';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';

import * as fs from 'fs';
import { INestApplication } from '@nestjs/common';

async function bootstrap() {
let app: INestApplication<any>;
const isLocalDeploy = process.env.NODE_ENV == 'local';
let httpsOptions = null;
if (isLocalDeploy) {
const httpsOptions = {
httpsOptions = {
key: fs.readFileSync('./local-certs/private-key.pem'),
cert: fs.readFileSync('./local-certs/cert.pem'),
};
app = await NestFactory.create(AppModule, { httpsOptions });
} else {
app = await NestFactory.create(AppModule);
}

const app = await NestFactory.create(AppModule, { httpsOptions });;

app.use(cookieParser());

if (isLocalDeploy) {
Expand Down

0 comments on commit 4b2c22c

Please sign in to comment.