일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Artificial Intelligence
- WebGL
- 주일설교
- 김양재
- c++
- 빅데이터
- 데이터 과학
- 인공지능
- No SQL
- Deep learning
- 우리들교회
- Statistics
- 딥러닝
- nodeJS
- data science
- 빅 데이타
- 확률
- Machine Learning
- 김양재 목사님
- openCV
- MongoDB
- 몽고디비
- 통계
- 빅 데이터
- Big Data
- 빅데이타
- R
- probability
- node.js
- 김양재 목사
- Today
- Total
Scientific Computing & Data Science
[Programming / WebApp] Node.js에서 HTTPS 서버 구축하기 본문
이번 글에서는 Node.js에서 개발용 인증서를 통해 HTTPS 서버 구축하는 방법에 대해 알아보도록 하겠습니다.
SSL 인증서의 개념 및 대한 자세한 내용은 다음 사이트를 참고하기 바랍니다:
HTTPS와 SSL 인증서: https://opentutorials.org/course/228/4894
SSL 인증서 무료로 받아 설치하기: http://www.autoboy.pe.kr/258
KISA SSL 인증서: https://www.crosscert.com/symantec/02_1_03.jsp
Node.js에서 HTTPS 서버를 구축하는 방법에 대한 참고 사이트는 다음과 같습니다:
개발용 OpenSSL 다운로드 : http://slproweb.com/products/Win32OpenSSL.html
OpenSSL Key 생성 참고 사이트 : http://zero-gravity.tistory.com/239
HTTPS 서버와 HTTPS 클라이언트 구현: https://mylko72.gitbooks.io/node-js/content/chapter7/chapter7_5.html
Node.js 공식 API 사이트: https://nodejs.org/api/https.html
OpenSSL 다운로드
본 튜토리얼은 Windows OS 환경에서 진행하겠습니다.
우선 다음 사이트에서 Windows용 OpenSSL 설치 파일을 다운받습니다:
http://slproweb.com/products/Win32OpenSSL.html
참고로 "Win64 OpenSSL v1.1.0b"를 다운받아 설치하였는데, 인스톨 안내 페이지의 마지막에 기부(Donation)를 하겠냐고 묻습니다.
기부를 원치 않는다면 체크를 해제하도록 합니다.
설치된 경로는 "C:\OpenSSL-Win64"이며 각자의 상황에 따라 다를 수 있습니다. 이 설치된 경로를 환경변수의 Path에 추가하도록 합니다.
개인키 발급
Windows Command Line Tool을 관리자 권한으로 실행합니다. (반드시 관리자 권한으로 실행해야 합니다. 관리자 권한으로 실행하지 않을 경우 키 생성을 실패할 수 있습니다.)
키를 생성하고자 하는 경로로 이동하여 다음 명령을 입력하여 개인키를 발급합니다.
> openssl genrsa 1024 > private.pem
private.pem을 텍스트 편집기를 통해 열면 다음과 비슷한 파일을 확인할 수 있습니다.
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDJw8MRrg9au/09TPYmrvY3yQQasTcf8za4wN4ktjnxfbTPGnu5
7uRI+ByEIHkX4TBqie9DU/Xzsy7rBKXAXT5GnKUld1lLryFZd79HhjlH7xJYt8Co
2tTjzWYWPcLdq9IvtYTg8beiK0EHRnBLCMZ7jrvOkiVXM1bpWFvkh2GZZQIDAQAB
AoGABek2Tc5LpNzdDm6yx29Yx0mcVSvb8ZOuhrsfxvOPvwNvyKF9/nSBO6IJM9W/
tnNid7ySxeYvznPxa/E26evRZzLNdPYzO50H9CX8QMpCDJiuvrrL0Zh0dSopo9/t
LhqB8WTtWenTTRUlzZGeQ8zoblu0+ITo+0ij8ijLEdIg6gECQQD7OUsdVq4zFONB
oxzXDT28/OSQHCk2t8Rk1GCcdTX8VLiTYg+DrnmKDeriuog58E2sLcHWAsQOwhmJ
OGFET0mDAkEAzZnAQ5WSyF+BJx+HrssgOzz/rsT6zfksZHY840vIyzecnglfaAHW
b7+Md3cr/COcRD6NjQBqZK8a6RuykaPk9wJBAKhEX8Nu447jVrQIBLEl9Uw4Nv8v
XYuA2tKOTYd+GoLAXECbVbjljBKj78edGNF12xCQNVyazab06xW15bBTSvECQQCa
AOr1NNqn4HHbnlCB64EPHlfez4mWM2i/L5nYH/Id1mAoOJkQTSAUwIQ1ED0QNpRc
wgZBceg/1rHvnmGZmgxtAkAFAxsEV3oHZFmH8OGGdoQeYVCug2AoRFhaMFqv21cK
LbITitp4tNXLmXdNxU81z8b4Olf3xMVOe5Bj+qC8urGf
-----END RSA PRIVATE KEY-----
공개키 생성하기
다음 Command Line 명령을 통해 공개키를 생성합니다:
> openssl req -x509 -new -key private.pem > public.pem
생성된 공개키는 다음과 비슷할 것입니다.
-----BEGIN CERTIFICATE-----
MIIC1zCCAkCgAwIBAgIJAMhUWRgDKk07MA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD
VQQGEwJLUjELMAkGA1UECAwCS1kxDjAMBgNVBAcMBVNFT1VMMREwDwYDVQQKDAhB
TFBJTklPTjENMAsGA1UECwwESElGVTEOMAwGA1UEAwwFR0NIT0kxJDAiBgkqhkiG
9w0BCQEWFWNpbmVtYTRkcjEyQGdtYWlsLmNvbTAeFw0xNjEwMDQxMjExMTNaFw0x
NjExMDMxMjExMTNaMIGCMQswCQYDVQQGEwJLUjELMAkGA1UECAwCS1kxDjAMBgNV
BAcMBVNFT1VMMREwDwYDVQQKDAhBTFBJTklPTjENMAsGA1UECwwESElGVTEOMAwG
A1UEAwwFR0NIT0kxJDAiBgkqhkiG9w0BCQEWFWNpbmVtYTRkcjEyQGdtYWlsLmNv
bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAycPDEa4PWrv9PUz2Jq72N8kE
GrE3H/M2uMDeJLY58X20zxp7ue7kSPgchCB5F+EwaonvQ1P187Mu6wSlwF0+Rpyl
JXdZS68hWXe/R4Y5R+8SWLfAqNrU481mFj3C3avSL7WE4PG3oitBB0ZwSwjGe467
zpIlVzNW6Vhb5IdhmWUCAwEAAaNTMFEwHQYDVR0OBBYEFCpu6zZQNWlEXounidqn
+n7Lu7/WMB8GA1UdIwQYMBaAFCpu6zZQNWlEXounidqn+n7Lu7/WMA8GA1UdEwEB
/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADgYEAkHrUX+3z6zw5rxl0FiR4f5Jnk0MH
Gu4wAgHy3J/YMdH+eFIQhyfJd1B8k6efsdev2nhiGVY0v653q/2NA9RJWpH+blfN
0jFwKZwhPIB5UXFjAHb/D936p6s2QjM6TQ9oJSGUFQd6zCiTH43Hu5EemxON7UYG
++l1a96Q+wEUSk8=
-----END CERTIFICATE-----
app.js 코드 작성
우선 Express Framework으로 생성한 Node.js Project의 Root 경로에 "keys" 폴더를 생성하고, 이 경로에 앞서 생성한 두 개의 SSL 키를 저장하였습니다.
"app.js" 코드에 다음과 같이 옵션을 지정합니다:
const options = {
key: fs.readFileSync('./keys/private.pem'),
cert: fs.readFileSync('./keys/public.pem')
};
그리고, 다음과 같이 서버를 생성합니다. Port 번호는 3000으로 하였습니다:
https.createServer(options, app).listen(3000, function() {
console.log("HTTPS server listening on port " + 3000);
});
결과 테스트
이제 서버를 실행하고, 웹브라우저의 주소창에 다음을 입력하여 결과를 테스트합니다:
https://localhost:3000/
인증서를 확인하는 안내 창이 뜨면 성공한 것이다.
'Programming > Web App' 카테고리의 다른 글
[Programming / Web App] Node.js의 Express Framework에서 RScript 실행하기 (0) | 2016.09.25 |
---|---|
[Programming / WebApp] Canvas에 웹캠 화면 출력 (1) | 2016.09.18 |
[Programming / WebApp] 네이버 영화 웹 스크랩핑(Web Scraping) (3) | 2016.09.16 |
[Programming / WebApp] Express-Session (0) | 2016.09.16 |
[Programming / WebApp] Express-Cookies (0) | 2016.09.15 |