개인 pc 웹서버를 만들일이 생겨서 openssl로 인증서를 적용해봤습니다.
아래 링크의 내용을 참고했습니다.
메타세콰이어 블로그: m.blog.naver.com/espeniel/221845133507
1. OpenSSL 설치
slproweb.com/products/Win32OpenSSL.html
위 링크에 들어가시면 설치파일을 받을 수 있습니다.
2. 명령어 경로 지정
설치파일을 설치하면서 명령어 경로가 나오는 화면이 있는데 그 경로를 복사해둡니다. 저의 경우에는 아래와 같습니다.
C:\program files\openssl-win64
좌측 아래 검색창에 환경 변수 를 검색 -> 아래 환경 변수 클릭 -> 시스템 변수의 path 더블클릭 -> 새로 만들기 클릭후
C:\Program Files\OpenSSL-Win64\bin
입력(자신의 설치 경로\bin) bin은 명령어 파일들의 모음집을 의미합니다.
3. 키와 인증서 생성
openssl req -nodes -new -x509 -keyout server.key -out server.cert
인증서를 단 한줄로 생성할 수 있는 코드입니다. server.key와 server.cert라는 인증서를 둘 다 생성할 수 있습니다.
각 나라, 이름, 이메일 등 요구사항
비밀번호는 잘 기억할 수 있는 것으로 입력하세요. 잊어버리면 안됩니다
4. 인증요청서 생성
openssl req -new -key server.key -out server.csr
server.key -> 서버 개인 키
server.csr -> 서버 인증요청서
5. 개인키에서 패스워드 제거
cp server.key server.key.origin
openssl rsa -in server.key.origin -out server.key
패스워드가 있으면 아파치나 서버에서 접속시마다 비밀번호를 물어본다고 합니다.
6. 인증서 생성
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
crt, csr, key가 각각 생성되었습니다.
이제 express에 적용시키기만 하면 됩니다. 적용하는 법은 굉장히 쉽습니다. 익스프레스의 절대 폴더 아래에 각 인증서 파일을 넣은 다음에
var https = require('https');
var PORT = process.env.PORT || 443;
var server = https.createServer(app);
var options = {
key: fs.readFileSync(__dirname + '/인증서경로/server.key'),
cert: fs.readFileSync(__dirname + '/인증서경로/server.crt'),
ca: fs.readFileSync(__dirname + '/인증서경로/server.csr'),
};
https.createServer(options, app).listen(PORT);
이제 익스프레스 서버를 실행시키고 접속해보면 https가 적용되어 있는 모습을 볼 수 있습니다.
아마존의 acm과 route53 등을 이용한 도메인을 적용시키지 않은 상태로 직접 ip로 접속하면 위험한 사이트라고 뜨는데 이것은 공식 인증서가 적용되지 않았기 때문에 일어나는 현상이므로 도메인을 구매하여 적용시키면 해결됩니다.
댓글과 공감은 블로거에게 힘이 됩니다!
'Backend > Nest.js' 카테고리의 다른 글
package.json (0) | 2023.02.02 |
---|---|
node 패키지 매니저들 (0) | 2023.02.02 |
node.js에서 프로젝트 패키지 다운로드 받기 (0) | 2020.05.09 |