[Node.js] https 서버 생성
2017. 11. 16. 01:26ㆍ개발/Node.js
반응형
https
http프로토콜에서 security가 추가된 것으로 http로 통신했을때 보안 이슈를 방지하고자 만들어짐.
https 서버를 만들기 위해서는 SSL이라는 인증서가 필요한데 개발용으로 비용을 지불하고 인증서를 구매하기는 어려움.
즉, OpenSSL을 사용하면 개발용으로 충분히 사용가능.
OpenSSL
1. 설치
설치 경로 : http://slproweb.com/products/Win32OpenSSL.html
윈도우 환경이라면 path에 환경변수를 추가해줘야 사용 가능.
환경변수를 굳이 넣고싶지 않다면 설치된 경로로 들어가서 다음 프로세스를 진행하면 됨. (openssl에 들어가서 명령어를 입력할때는 다음 프로세스에 있는 명령어에서 openssl을 빼고 입력하면 됨.)
2. 개인키 생성
1 | openssl genrsa -out private_key.pem 1024 | cs |
3. 공개키 생성
1 | openssl rsa -in private_key.pem -out public_key.pem -pubout | cs |
https 서버 생성
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var fs = require('fs'); var https = require('https'); var index = require('./routes/index'); var users = require('./routes/users'); var app = express(); const PORT = 3000; // key define const optionsForHTTPS = { key : fs.readFileSync('./keys/key.pem'), cert : fs.readFileSync('./keys/cert.pem') }; // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); // uncomment after placing your favicon in /public //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', index); app.use('/users', users); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); https.createServer(optionsForHTTPS, app).listen(PORT, function(){ console.log('HTTPS Server Start PORT:' + PORT); }); module.exports = app; | cs |
반응형
'개발 > Node.js' 카테고리의 다른 글
node.js + socket.io 에서 일정시간 이후 socket closed 되는 문제 (0) | 2021.08.10 |
---|---|
Express를 활용한 File Server 만들기 (multer, post 사용) (0) | 2021.04.18 |
[Node.JS] Express 에서 cookie 사용 (0) | 2017.09.21 |
[Node.js] Express Framework에서 textarea + DB 연동시 줄바꿈 해결방법 (0) | 2017.09.14 |
[Node.js] Framework 비교 자료 (0) | 2017.09.13 |