flask 앱을 실행하면, http://127.0.0.1:5000으로 안내해주는 것을 볼 것이다. 하지만 보통 우리가 확인하는 페이지는 http가 아닌 https인데 이는 뭐가 다를까?

ascent광고 - HTTP HTTPS 차이점

플라스크는 https를 사용하기 위해 ssl을 import 한후 경로를 지정해 설정해준다.

from flask import Flask, render_template

import ssl

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World"

@app.route("/page1")
def page1():

    return render_template('./index.html')

if __name__ == "__main__":

    ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
    ssl_context.load_cert_chain(certfile='server.crt', keyfile='server.key', password='****')

    app.run(host="0.0.0.0", port=2500, ssl_context=ssl_context, debug=True)

이후 해당 포트로 접속할때 https로 접근할 수 있다. (그냥 실행하면 바로 오류가 난다.)

OpenSSL 로 개인키 발급 및 SSL 인증서 생성

https://blogpfthumb-phinf.pstatic.net/20220221_231/espeniel_1645425537506Gk9dU_JPEG/image.jpg?type=s1

개요

웹 서비스에 https 를 적용할 경우 SSL 인증서를 VeriSign, Thawte, GeoTrust 등에서 인증서를 발급 받아야 하지만, 이는 비용이 발생하며, 실 운용서버가 아닌 경우는 다른 방법을 사용한다.

이럴때 OpenSSL 을 이용하여 Self signed certificate 를 생성하고 SSL 인증서를 발급하는 법을 알아보자.

Self signed Certificate(SSC) 란?

모든 인증서는 발급기관(CA)가 있어야 하나, 최상위에 있는 인증기관(root ca)은 서명해줄 상위 인증기관이 없으므로 root ca의 개인키로 스스로의 인증서에 서명하여 최상위 인증기관 인증서를 만든다. 이렇게 스스로 서명한 root ca 인증서를

Self Signed Certificate 라고 한다.

IE, FireFox, Chrome 등의 Web Browser 제작사는 VeriSign 이나 comodo 같은 유명 ROOT CA 들의 인증서를 신뢰하는 CA로 미리 등록해 놓으므로 저런 기관에서 발급된 SSL 인증서를 사용해야 browser 에서는 해당 SSL 인증서를 신뢰할수 있는데,