마스터욱
Toggle navigation
  • 회원가입 | 정보찾기
ICON NAVIGATION
정보수정 쪽지함 주변맛집 익명채팅
공지사항 채팅 개발문의 방명록
  • MAIN NAVIGATION
  • 메인
  • 마스터욱 공간
    • 마스터욱 소개
    • 개발 리스트
    • 공지사항
    • 방명록
  • 마스터욱 외부자료
    • 네이버
    • 티스토리
    • 깃허브(github)
  • 개인 프로젝트
    • 랜덤 이성 채팅
    • Auto 크롤링
    • Javascript 카카오 채팅
    • 파이썬 뉴스매매
    • C# 키움 주식 자동매매
    • C# 키움 주식 패턴 분석
    • PHP 욱보드
    • 업비트 자동매매 개발
    • 업비트 자동매매 일지
  • 개발 의뢰
    • 개발 문의
    • 개발 견적
    • 개발 피드백
    • FAQ
  • 개발 경험 Tip
    • PHP
    • JSP
    • HTML
    • Javascript
    • Android
    • C#
    • MySQL
    • Linux
    • Python
    • NodeJS
    • React
    • Vue.js
    • Flutter
    • 정규식
    • 기타
  • 커뮤니티
    • 자유게시판
    • 추천사이트
    • 영화
    • 여행
    • 유머
    • Overseas News
  • 맛집&즐길 거리 탐방
    • 맛집 정보
    • 즐길 거리 정보
    • 내 주위 맛집&즐길 거리
  • 공유 사진
    • 음식
    • 여행
    • 캐릭터
    • 배경
    • 기타
    • 이모티콘
    • 일러스트
  • 놀이터
    • 블록뽀시기
    • 트레이딩뷰
    • 로또 시뮬레이션
    • 쳇쳇 익명 채팅
    • 랜덤 이성 채팅
    • AI 채팅
    • 미니 채팅
    • 바이너리 테스트
    • 마번호 생성기
    • 바카라 시뮬레이션
    • 홀짝점수 테스트
    • 로또 분석기
SITE STATISTICS
  • - 명 현재 접속자
  • 2,165 명 오늘 방문자
  • 2,047 명 어제 방문자
  • 5,192 명 최대 방문자
  • 689,785 명 전체 방문자
  • 2,569 개 전체 게시물
  • 496 개 전체 댓글수
Facebook Twitter GooglePlus KakaoStory NaverBand
  1. 홈
  2. 리눅스
목록으로

아마존 aws ec2 우분투 웹서버에(nodejs express) 무료SSL(https) 적용하기(삽질 많이함)

마스터욱 2 283 0 0 2021-11-21 00:40:06

일단 간단하게 요약

1. ec2 우분투 서버 기본세팅(nodejs 설치)

2. ec2 탄력적 IP 등록(고정아이피로 세팅하는 절차임) 

3. freenom.com 사이트 접속해서 무료 도메인 생성(도메인은 본인 마음대로 다른 사이트에서 구매해도 무방함)

4. aws Route53 호스팅 생성을 하고, 3번에서 생성한 도메인 등록, 그리고 오픈되는 네임서버 정보를 미리 메모해두자.(4개가 나올거임)

5. freenom.com 에 접속해서 3번에서 등록한 도메인의 네임서버 정보를, 4번에서 등록한 Route53 호스팅 도메인의 네임서버정보로 수정함.

6. 4번에서 등록한 호스팅에 들어가서, 등록한 도메인에 A레코드 추가, A레코드 IP는 2번에서 발급받은 탄력적 IP를 등록하면 됨.

7. 우분투에 접속해서 무료 SSL 발급받기, 명령어 아래참고 

 

메모) 탄력적IP 를 사용하지 않으면, 우분투를 재부팅시에 Route53의 A레코드 IP 주소를, 우분투의 퍼블릭 IPv4 의 주소로 세팅을 매번 새로 갱신해주어야 한다.(우분투 재부팅시에 IP를 새로 할당받기 때문)

하지만 탄력적IP 는 요금이 발생한다... 번거로워도 금액을 조금이라도 아끼자면 위처럼 해도 된다.

하지만 기업의 실서비스를 한다고 가정한다면 탄력적 IP는 필수일 것이다.(난 개인서버라서 안해도 됨)

 

무료 SSL 라이브러리 설치

# apt-get install letsencrypt

 

무료 SSL 발급받기

# certbot certonly --manual --email 이메일주소 -d 도메인주소 

 

너무 많은 시도를 하면 벤 당한다.(하루 지나야 풀어주드라)

그래서

# certbot certonly --dry-run --manual --email 이메일주소 -d 도메인주소

위와같이 --dry-run 옵션으로 미리 테스트를 하는게 좋음.

 

위 명령어 후에

도메인주소/.well-known/acme-challenge/랜덤특수문자열

 

위와같은 형식의 URL 에 랜덤특수문자열 이 출력되도록 요구한다.

이는 SSL 발급주체가, 이 사이트가 나의것이 맞는지 테스트하는 것이다.

 

위 URL로 접속하면 랜덤특수문자열이 출력이 정상적으로 되게 하고,(위 경로로 파일을 어떻게 만들어야 할지 모른다면, 웹개발 기본이 약한것으로 간주...)

Enter 를 입력하면,

 

/etc/letsencrypt/live/도메인주소/privkey.pem 

/etc/letsencrypt/live/도메인주소/cert.pem 

/etc/letsencrypt/live/도메인주소/chain.pem 

 

위 경로에 3개의 파일이 생성된다.

 

그리고 app.js 를 만들어서 아래 소스를 작성한다.

 

// Dependencies 

const fs = require('fs');

const http = require('http');

const https = require('https');

const express = require('express');

 

const app = express();

 

// Certificate 인증서 경로

const privateKey = fs.readFileSync('/etc/letsencrypt/live/도메인주소/privkey.pem', 'utf8');

const certificate = fs.readFileSync('/etc/letsencrypt/live/도메인주소/cert.pem', 'utf8');

const ca = fs.readFileSync('/etc/letsencrypt/live/도메인주소/chain.pem', 'utf8');

 

const credentials = {

key: privateKey,

cert: certificate,

ca: ca

};

 

app.use((req, res) => {

res.send('Hello there!');

});

 

// Starting both http & https servers

const httpServer = http.createServer(app);

const httpsServer = https.createServer(credentials, app);

 

httpServer.listen(80, () => {

console.log('HTTP Server running on port 80');

});

 

httpsServer.listen(443, () => {

console.log('HTTPS Server running on port 443');

});

 

var io = require('socket.io')(httpsServer);

var usr_cnt = 0;

io.on('connection', function(socket){

console.log('a user connected');

//메세지 수신시

socket.on('send', function(res){

//socket.emit('recv', data); //메세지를 발송한 본인에게만

console.log('recv ok');

io.emit('recv', res); //전체 커넥션 유저들에게

});

 

//메세지 삭제시

socket.on('msg_del', function(msg_idx){

io.emit('msg_del_result', msg_idx); //전체 커넥션 유저들에게

});

 

//브라우저 접속시

usr_cnt++;

console.log('connect', usr_cnt);

io.emit('usr_cnt', usr_cnt);

 

//브라우저를 떠날때 실행됨

socket.on('disconnect', () => {

usr_cnt--;

console.log('disconnect', usr_cnt);

io.emit('usr_cnt', usr_cnt);

});

});

 

그리고 도메인 주소로 접속하면 https 접속을 확인할 수 있다.

정말 짧게 작성한것이고, 나중에 정밀하게 다시 리뷰할 예정. 

핑크색 소스는 채팅서버소스로 보나스~

0
0

목록

Facebook Twitter GooglePlus KakaoStory NaverBand
2 Comments

비밀번호 확인

확인
댓글은 자신을 나타내는 '얼굴'입니다. *^^*
등록
자동등록방지 숫자를 순서대로 입력하세요.

댓글수정


글쓰기
검색
번호 제목 이름 날짜 조회
  • 34
    **************************************** 우분투 자주 사용하는 명령어 모음
    마스터욱
    조회수 54   26-03-29 18:54
    마스터욱
    26-03-29 18:54
    54
  • 33
    오라클 우분투 서버 세팅후 네트워크 작업
    마스터욱
    조회수 119   26-03-25 03:26
    마스터욱
    26-03-25 03:26
    119
  • 32
    nginx 504 Gateway Time-out
    마스터욱
    조회수 290   25-05-27 14:16
    마스터욱
    25-05-27 14:16
    290
  • 31
    우분투 postfix 설치(메일 서버)
    마스터욱
    조회수 293   24-04-30 16:18
    마스터욱
    24-04-30 16:18
    293
  • 30
    우분투(ubunto) GitHub 연동 및 업로드
    마스터욱
    조회수 190   23-09-21 02:42
    마스터욱
    23-09-21 02:42
    190
  • 29
    우분투(Ubuntu)에 FTP(vsftpd) 설치 및 세팅
    마스터욱
    조회수 171   23-09-18 17:59
    마스터욱
    23-09-18 17:59
    171
  • 28
    Nginx location(redirect) 설정
    마스터욱
    조회수 197   23-09-18 02:17
    마스터욱
    23-09-18 02:17
    197
  • 27
    CentOS 명령어 모음
    마스터욱
    조회수 151   23-05-21 00:25
    마스터욱
    23-05-21 00:25
    151
  • 26
    CentOS SSL 설치하기
    마스터욱
    조회수 146   23-05-19 17:14
    마스터욱
    23-05-19 17:14
    146
  • 25
    특정 파일명 프로세스 Kill 시키기
    마스터욱
    조회수 194   23-03-15 13:35
    마스터욱
    23-03-15 13:35
    194
  • 24
    [4] ****************************** 우분투(ubuntu) 무료 SSL 발급받기 - 개정판 [4]
    마스터욱
    조회수 231   23-02-22 05:50
    마스터욱
    23-02-22 05:50
    231
  • 23
    [5] ****************************** 우분투 - nginx 설치 및 기본설정 [5]
    마스터욱
    조회수 284   22-11-23 18:19
    마스터욱
    22-11-23 18:19
    284
  • 22
    PHP - exec() 함수 사용시, 쉘의 에러확인방법
    마스터욱
    조회수 159   22-01-20 03:40
    마스터욱
    22-01-20 03:40
    159
  • 21
    ****************************** 리눅스, Mysql 용량에 관한 설명
    마스터욱
    조회수 141   22-01-19 01:44
    마스터욱
    22-01-19 01:44
    141
  • 20
    리눅스 실시간 아파치 엑세스 로그 확인
    마스터욱
    조회수 147   21-12-27 13:49
    마스터욱
    21-12-27 13:49
    147
  • 19
    mysql 8.0 이상 root password 변경방법
    마스터욱
    조회수 176   21-12-11 21:47
    마스터욱
    21-12-11 21:47
    176
  • 18
    php extension_dir 경로를 모를때 해결법
    마스터욱
    조회수 242   21-12-11 21:33
    마스터욱
    21-12-11 21:33
    242
  • 17
    [2] 아마존 aws ec2 우분투 웹서버에(nodejs express) 무료SSL(https) 적용하기(삽질 많이함) [2]
    마스터욱
    조회수 284   21-11-21 00:40
    마스터욱
    21-11-21 00:40
    284
  • 16
    아마존(aws) nodejs 서버에 https 인증서 발급받기
    마스터욱
    조회수 187   21-11-17 03:37
    마스터욱
    21-11-17 03:37
    187
  • 15
    리눅스 유저/그룹/그룹에 유저 추가/폴더에 권한 할당
    마스터욱
    조회수 165   21-11-15 13:57
    마스터욱
    21-11-15 13:57
    165
글쓰기
검색
  • 1
  • 2
  • 다음

Search

개인정보처리방침
마스터욱. All rights reserved.

Close

0 명 접속중
Time Loading...