Docker에 간단한 HTTPS 서버 구축 (Node.js)

HTTPS로 데이터의 교환을 확인하고 싶을 때가 있었기 때문에 간이적인 HTTPS 서버를 작성해 보았다.

환경


  • Docker
  • Version 18.03.1-ce-win65 (17513)

  • Node.js
  • v8.11.3

  • npm
  • 5.6.0

  • 사용Image
  • alpine


  • 컨테이너 만들기


    docker run --name server -itd -p 8443:8443 alpine
    



    컨테이너에 로그인


    docker exec -it server /bin/ash
    

    ash는 alpine에서 사용되는 쉘
  • 참고 사이트
  • htps : // 코 m / 유타 카오 s / ms / 56d d7 09d7 2b0d9173




  • 필요한 모듈 설치



    1.alpine 패키지 리포지토리에서 최신 색인 검색
    apk update
    



    2.Node.js 설치
    apk add nodejs
    



    3.npm 설치
    apk add npm
    



    4.openssl 설치(HTTPS 인증서 작성에 필요)
    apk add openssl
    



    작업 디렉토리 만들기


    mkdir work
    cd work
    



    인증서 파일(pfx 파일) 만들기


    openssl genrsa 2048 > mysslserver.key
    openssl req -new -key mysslserver.key -subj "/C=JP/ST=Tokyo-to/L=Shibuya/O=Company Name/OU=IT dept./CN=Company Dept CA" > mysslserver.csr
    openssl x509 -days 3650 -req -signkey mysslserver.key < mysslserver.csr > mysslserver.crt
    openssl pkcs12 -export -inkey mysslserver.key -in mysslserver.crt > mysslserver.pfx
    


  • 참고 사이트
  • htps : // 코 m / 완 - r / r ms / 980 552 94, c0d 935 2


  • HTTPS 서버 생성



    vi로 작성한다.

    https.js
    https = require('https');
    fs = require('fs');
    port=8443;
    https.createServer({pfx: fs.readFileSync('mysslserver.pfx')}, function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello World\n');
    }).listen(port);
    console.log('Server running at port:' + port);
    
  • 참고 사이트
  • htps : // 코 m / 완 - r / r ms / 980 552 94, c0d 935 2


  • 서버 시작


    node https.js
    



    소통 확인



    https : localhost : 8443으로 이동하여 Hello World가 표시되면 OK

    좋은 웹페이지 즐겨찾기