18 KiB
HTTPS ã«ã€ããŠ
HTTPSã¯åã«ãæå¹ãããç¡å¹ããã§æ±ºãŸããã®ã ãšæããã¡ã§ãã
ãããããããããã¯ããã«è€éã§ãã
/// tip | è±ç¥è
ããæ¥ãã§ããããHTTPSã®ä»çµã¿ã«ã€ããŠæ°ã«ããªãã®ã§ããã°ã次ã®ã»ã¯ã·ã§ã³ã«é²ã¿ãããŸããŸãªãã¯ããã¯ã䜿ã£ãŠãã¹ãŠãã»ããã¢ããããã¹ãããã»ãã€ã»ã¹ãããã®æé ãã芧ãã ããã
///
å©çšè ã®èŠç¹ãã HTTPS ã®åºæ¬ãåŠã¶ã«åœãã£ãŠã¯ã次ã®ãªãœãŒã¹ããªã¹ã¹ã¡ããŸã: https://howhttps.works/.
ããŠãéçºè ã®èŠç¹ãããHTTPSã«ã€ããŠèããéã«å¿µé ã«çœ®ãã¹ãããšãããã€ãã¿ãŠãããŸãããïŒ
- HTTPSã®å ŽåããµãŒãã¯ç¬¬äžè
ã«ãã£ãŠçæããã**ãèšŒææžããæã€**å¿
èŠããããŸãã
- ãããã®èšŒææžã¯ãçæãããããã®ã§ã¯ãªããå®éã«ã¯ç¬¬äžè ããååŸããããã®ã§ãã
- èšŒææžã«ã¯æå¹æéããããŸãã
- ã€ãŸãããã倱å¹ããŸãã
- ãã®ããæŽæ°ããã第äžè ããå床ååŸããå¿ èŠããããŸãã
- æ¥ç¶ã®æå·åã¯TCPã¬ãã«ã§è¡ãããŸãã
- ããã¯HTTPã®1ã€äžã®ã¬ã€ã€ãŒã§ãã
- ã€ãŸããèšŒææžãšæå·åã®åŠçã¯ãHTTPã®åã«è¡ãããŸãã
- TCPã¯ããã¡ã€ã³ãã«ã€ããŠç¥ããŸãããIPã¢ãã¬ã¹ã«ã€ããŠã®ã¿ç¥ã£ãŠããŸãã
- èŠæ±ãããç¹å®ã®ãã¡ã€ã³ã«é¢ããæ å ±ã¯ãHTTPããŒã¿ã«å ¥ããŸãã
- HTTPSèšŒææžã¯ãç¹å®ã®ãã¡ã€ã³ãã蚌æãããŸããããããã³ã«ãšæå·åã¯TCPã¬ãã«ã§è¡ãããã©ã®ãã¡ã€ã³ãæ±ãããŠããããç¥ãåã«è¡ãããŸãã
- ããã©ã«ãã§ã¯ãIPã¢ãã¬ã¹ããšã«1ã€ã®HTTPSèšŒææžããæãŠãªãããšã«ãªããŸãã
- ããã¯ããµãŒããŒã®èŠæš¡ãã¢ããªã±ãŒã·ã§ã³ã®èŠæš¡ã«å¯ããŸããã
- ããããããã«ã¯è§£æ±ºçããããŸãã
- TLSãããã³ã«(HTTPã®åã«ãTCPã¬ãã«ã§æå·åãåŠçãããã®)ã«ã¯ãSNIãšåŒã°ããæ¡åŒµããããŸãã
- ãã®SNIæ¡åŒµæ©èœã«ããã1ã€ã®ãµãŒããŒïŒåäžã®IPã¢ãã¬ã¹ãæã€ïŒãè€æ°ã®HTTPSèšŒææžãæã¡ãè€æ°ã®HTTPSãã¡ã€ã³/ã¢ããªã±ãŒã·ã§ã³ã«ãµãŒãã¹ãæäŸã§ããããã«ãªããŸãã
- ãããæ©èœããããã«ã¯ããããªãã¯IPã¢ãã¬ã¹ã§ãªãã¹ã³ããŠããããµãŒããŒäžã§åäœããŠããåäžã®ã³ã³ããŒãã³ã(ããã°ã©ã )ãããµãŒããŒå ã®ãã¹ãŠã®HTTPSèšŒææžãæã£ãŠããå¿ èŠããããŸãã
- ã»ãã¥ã¢ãªæ¥ç¶ãååŸããåŸã§ããéä¿¡ãããã³ã«ã¯HTTPã®ãŸãŸã§ãã
- ã³ã³ãã³ãã¯HTTPãããã³ã«ã§éä¿¡ãããŠããã«ãããããããæå·åãããŠããŸãã
ãµãŒããŒïŒãã·ã³ããã¹ããªã©ïŒäžã§1ã€ã®ããã°ã©ã /HTTPãµãŒããŒãå®è¡ãããHTTPSã«é¢ããå šãŠã®ããšã管çããã®ãäžè¬çã§ããæå·åããã HTTPS ãªã¯ãšã¹ã ãåä¿¡ãã埩å·åããã HTTP ãªã¯ãšã¹ã ãåããµãŒããŒã§å®è¡ãããŠããå®éã® HTTP ã¢ããªã±ãŒã·ã§ã³ïŒãã®å Žå㯠FastAPI ã¢ããªã±ãŒã·ã§ã³ïŒã«éä¿¡ããã¢ããªã±ãŒã·ã§ã³ãã HTTP ã¬ã¹ãã³ã¹ ãåãåããé©å㪠HTTPS èšŒææž ã䜿çšã㊠æå·å ãããããŠHTTPS ã䜿çšããŠã¯ã©ã€ã¢ã³ãã«éãè¿ããŸãããã®ãµãŒããŒã¯ãã°ãã° **TLS Termination Proxy**ãšåŒã°ããŸãã
TLS Termination ProxyãšããŠäœ¿ãããªãã·ã§ã³ã«ã¯ã以äžã®ãããªãã®ããããŸãïŒ
- TraefikïŒèšŒææžã®æŽæ°ã察å¿ïŒ
- Caddy (èšŒææžã®æŽæ°ã察å¿)
- Nginx
- HAProxy
Let's Encrypt
Let's Encrypt以åã¯ããããã®HTTPSèšŒææžã¯ä¿¡é Œã§ãã第äžè ã«ãã£ãŠè²©å£²ãããŠããŸããã
ãããã®èšŒææžãååŸããããã®æç¶ãã¯é¢åã§ãããªãã®æžé¡ãå¿ èŠãšããèšŒææžã¯ããªãé«äŸ¡ãªãã®ã§ããã
ããããã®åŸãLet's Encrypt ãäœãããŸããã
ããã¯Linux Foundationã®ãããžã§ã¯ãããçãŸãããã®ã§ãã èªååãããæ¹æ³ã§ãHTTPSèšŒææžãç¡æã§æäŸããŸãããããã®èšŒææžã¯ããã¹ãŠã®æšæºçãªæå·åã»ãã¥ãªãã£ã䜿çšãããŸãçåœïŒçŽ3ã¶æïŒã§ããããããã£ã寿åœã®çãã«ãã£ãŠãã»ãã¥ãªãã£ã¯å®éã«åªããŠããŸãã
ãã¡ã€ã³ã¯å®å šã«æ€èšŒãããèšŒææžã¯èªåçã«çæãããŸãããŸããèšŒææžã®æŽæ°ãèªååãããŸãã
ãã®ã¢ã€ãã¢ã¯ããããã®èšŒææžã®ååŸãšæŽæ°ãèªååããããšã§ãå®å šãªHTTPSããç¡æã§ãæ°žé ã«å©çšã§ããããã«ããããšã§ãã
éçºè ã®ããã® HTTPS
ããã§ã¯ãHTTPS APIãã©ã®ããã«èŠãããã®äŸããäž»ã«éçºè ã«ãšã£ãŠéèŠãªã¢ã€ãã¢ã«æ³šæãæããªãããã¹ãããã»ãã€ã»ã¹ãããã§èª¬æããŸãã
ãã¡ã€ã³å
ã¹ãããã®åãã¯ããã¡ã€ã³åãååŸããããšããå§ãŸãã§ãããããã®åŸãDNSãµãŒããŒïŒããããåãã¯ã©ãŠããããã€ããŒïŒã«èšå®ããŸãã
ããããã¯ã©ãŠããµãŒããŒïŒä»®æ³ãã·ã³ïŒãããã«é¡ãããã®ãæã«å ¥ããfixed ãããªãã¯IPã¢ãã¬ã¹ãæã€ããšã«ãªãã§ãããã
DNSãµãŒããŒã§ã¯ãååŸãããã¡ã€ã³ãããªãã®ãµãŒããŒã®ãããªãã¯IPã¢ãã¬ã¹ã«åããã¬ã³ãŒãïŒãA recordãïŒãèšå®ããŸãã
ããã¯ãããããæåã®1åã ãããããã¹ãŠãã»ããã¢ãããããšãã«è¡ãã§ãããã
/// tip | è±ç¥è
ãã¡ã€ã³åã®è©±ã¯HTTPSã«é¢ãã話ã®ã¯ããåã«ãããŸããããã¹ãŠããã¡ã€ã³ãšIPã¢ãã¬ã¹ã«äŸåãããããããã§èšåãã䟡å€ããããŸãã
///
DNS
ã§ã¯ãå®éã®HTTPSã®éšåã«æ³šç®ããŠã¿ããã
ãŸãããã©ãŠã¶ã¯DNSãµãŒããŒã«ãã¡ã€ã³ã«å¯ŸããIPãäœã§ãããã確èªããŸããä»åã¯ãsomeapp.example.comãšããŸãã
DNSãµãŒããŒã¯ããã©ãŠã¶ã«ç¹å®ã®IPã¢ãã¬ã¹ã䜿çšããããã«æç€ºããŸãããã®IPã¢ãã¬ã¹ã¯ãDNSãµãŒããŒã§èšå®ãããããªãã®ãµãŒããŒã䜿çšãããããªãã¯IPã¢ãã¬ã¹ã«ãªããŸãã
TLS Handshake ã®éå§
ãã©ãŠã¶ã¯IPã¢ãã¬ã¹ãšããŒã443ïŒHTTPSããŒãïŒã§éä¿¡ããŸãã
éä¿¡ã®æåã®éšåã¯ãã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®æ¥ç¶ã確ç«ãã䜿çšããæå·éµãªã©ã決ããã ãã§ãã
TLSæ¥ç¶ã確ç«ããããã®ã¯ã©ã€ã¢ã³ããšãµãŒããŒéã®ãã®ãããšãã¯ãTLSãã³ãã·ã§ã€ã¯ãšåŒã°ããŸãã
SNIæ¡åŒµæ©èœä»ãã®TLS
ãµãŒããŒå ã®1ã€ã®ããã»ã¹ã ãããç¹å® ã®IPã¢ãã¬ã¹ã®ç¹å®ã®ããŒã ã§åŸ ã¡åããããšãã§ããŸãã
åãIPã¢ãã¬ã¹ã®ä»ã®ããŒãã§ä»ã®ããã»ã¹ããªãã¹ã³ããŠããå¯èœæ§ããããŸãããIPã¢ãã¬ã¹ãšããŒãã®çµã¿åããããšã«1ã€ã ãã§ãã
TLSïŒHTTPSïŒã¯ããã©ã«ãã§443ãšããç¹å®ã®ããŒãã䜿çšãããã€ãŸãããããå¿
èŠãªããŒãã§ãã
ãã®ããŒãããªã¯ãšã¹ãã§ããã®ã¯1ã€ã®ããã»ã¹ã ããªã®ã§ããããå®è¡ããããã»ã¹ã¯TLS Termination ProxyãšãªããŸãã
TLS Termination Proxyã¯ã1ã€ä»¥äžã®TLSèšŒææžïŒHTTPSèšŒææžïŒã«ã¢ã¯ã»ã¹ã§ããŸãã
åè¿°ããSNIæ¡åŒµæ©èœã䜿çšããŠãTLS Termination Proxy ã¯ãå©çšå¯èœãªTLS (HTTPS)èšŒææžã®ã©ããæ¥ç¶å ãšããŠäœ¿çšãã¹ããããã§ãã¯ããã¯ã©ã€ã¢ã³ããæåŸ ãããã¡ã€ã³ã«äžèŽãããã®ã䜿çšããŸãã
ä»åã¯ãsomeapp.example.comã®èšŒææžã䜿ãããšã«ãªããŸãã
ã¯ã©ã€ã¢ã³ãã¯ããã®TLSèšŒææžãçæãããšã³ãã£ãã£ïŒãã®å Žåã¯Let's Encryptã§ãããããã«ã€ããŠã¯åŸè¿°ããŸãïŒããã§ã«ä¿¡é ŒããŠããããããã®èšŒææžãæå¹ã§ããããšãæ€èšŒããããšãã§ããŸãã
次ã«èšŒææžã䜿çšããŠãã¯ã©ã€ã¢ã³ããšTLS Termination Proxy ã¯ã TCPéä¿¡ã®æ®ããã©ã®ããã«æå·åããããæ±ºå®ããŸããããã§TLSãã³ãã·ã§ã€ã¯ã®éšåãå®äºããŸãã
ãã®åŸãã¯ã©ã€ã¢ã³ããšãµãŒããŒã¯æå·åãããTCPæ¥ç¶ãæã¡ãŸãããããŠããã®æ¥ç¶ã䜿ã£ãŠå®éã®HTTPéä¿¡ãéå§ããããšãã§ããŸãã
ãããHTTPSã§ãããçŽç²ãªïŒæå·åãããŠããªãïŒTCPæ¥ç¶ã§ã¯ãªããã»ãã¥ã¢ãªTLSæ¥ç¶ã®äžã«HTTPãããã ãã§ãã
/// tip | è±ç¥è
éä¿¡ã®æå·åã¯ãHTTPã¬ãã«ã§ã¯ãªããTCPã¬ãã«ã§è¡ãããããšã«æ³šæããŠãã ããã
///
HTTPS ãªã¯ãšã¹ã
ããã§ã¯ã©ã€ã¢ã³ããšãµãŒããŒïŒå ·äœçã«ã¯ãã©ãŠã¶ãšTLS Termination ProxyïŒã¯æå·åãããTCPæ¥ç¶ãæã€ããšã«ãªããHTTPéä¿¡ãéå§ããããšãã§ããŸãã
ããã§ãã¯ã©ã€ã¢ã³ãã¯HTTPSãªã¯ãšã¹ããéä¿¡ããŸããããã¯ãæå·åãããTLSã³ãã¯ã·ã§ã³ãä»ããåãªãHTTPãªã¯ãšã¹ãã§ãã
ãªã¯ãšã¹ãã®åŸ©å·å
TLS Termination Proxy ã¯ãåæãåããŠããæå·åã䜿çšããŠããªã¯ãšã¹ãã埩å·åãããã¬ãŒã³ (埩å·åããã) HTTP ãªã¯ãšã¹ã ãã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠããããã»ã¹ (äŸãã°ãFastAPI ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠãã Uvicorn ãæã€ããã»ã¹) ã«éä¿¡ããŸãã
HTTP ã¬ã¹ãã³ã¹
ã¢ããªã±ãŒã·ã§ã³ã¯ãªã¯ãšã¹ããåŠçãããã¬ãŒã³(æå·åãããŠããªã)HTTPã¬ã¹ãã³ã¹ ãTLS Termination Proxyã«éä¿¡ããŸãã
HTTPS ã¬ã¹ãã³ã¹
TLS Termination Proxyã¯æ¬¡ã«ãäºåã«åæãåããŠããæå·(someapp.example.comã®èšŒææžããå§ãŸã)ã䜿ã£ãŠã¬ã¹ãã³ã¹ãæå·åãããã©ãŠã¶ã«éãè¿ãã
ãã®åŸãã©ãŠã¶ã§ã¯ãã¬ã¹ãã³ã¹ãæå¹ã§æ£ããæå·ããŒã§æå·åãããŠããããšãªã©ãæ€èšŒããŸãããããŠããã©ãŠã¶ã¯ã¬ã¹ãã³ã¹ã埩å·åããŠåŠçããŸãã
ã¯ã©ã€ã¢ã³ãïŒãã©ãŠã¶ïŒã¯ãã¬ã¹ãã³ã¹ãæ£ãããµãŒããŒããæ¥ãããšãç¥ãããšãã§ããŸãã ãªããªãããã®ãµãŒããŒã¯ã以åã«HTTPSèšŒææžã䜿ã£ãŠåæããæå·ã䜿ã£ãŠããããã§ãã
è€æ°ã®ã¢ããªã±ãŒã·ã§ã³
åããµãŒããŒïŒãŸãã¯è€æ°ã®ãµãŒããŒïŒã«ãäŸãã°ä»ã®APIããã°ã©ã ãããŒã¿ããŒã¹ãªã©ãè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãååšããå¯èœæ§ããããŸãã
ç¹å®ã®IPãšããŒãïŒãã®äŸã§ã¯TLS Termination ProxyïŒãæ±ãããšãã§ããã®ã¯1ã€ã®ããã»ã¹ã ãã§ãããä»ã®ã¢ããªã±ãŒã·ã§ã³/ããã»ã¹ããåããããªãã¯IPãšããŒãã®çµã¿åããã䜿çšããããšããªãéãããµãŒããŒäžã§å®è¡ããããšãã§ããŸãã
ããããã°ãTLS Termination Proxy ã¯ãè€æ°ã®ãã¡ã€ã³ãè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ã®HTTPSãšèšŒææžãåŠçããããããã®ã±ãŒã¹ã§é©åãªã¢ããªã±ãŒã·ã§ã³ã«ãªã¯ãšã¹ããéä¿¡ããããšãã§ããŸãã
èšŒææžã®æŽæ°
å°æ¥ã®ããæç¹ã§ãåèšŒææžã¯ïŒååŸåŸçŽ3ã¶æã§ïŒå€±å¹ããŸãã
ãã®åŸãLet's Encryptãšéä¿¡ããå¥ã®ããã°ã©ã ïŒå¥ã®ããã°ã©ã ã§ããå Žåãããã°ãåãTLS Termination Proxyã§ããå ŽåãããïŒã«ãã£ãŠãèšŒææžãæŽæ°ããŸãã
TLSèšŒææžã¯ãIPã¢ãã¬ã¹ã§ã¯ãªãããã¡ã€ã³åã«é¢é£ä»ããããŠããŸãã
ãããã£ãŠãèšŒææžãæŽæ°ããããã«ãæŽæ°ããã°ã©ã ã¯ãèªèšŒå±ïŒLet's EncryptïŒã«å¯ŸããŠããã®ãã¡ã€ã³ãæ¬åœã«ãææããã管çããŠããããšã蚌æããå¿ èŠããããŸãã
ãã®ããã«ããŸãããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã®ããŒãºã«å¯Ÿå¿ããããã«ãããã€ãã®æ¹æ³ããããŸãããã䜿ãããæ¹æ³ãšããŠã¯:
- ããã€ãã®DNSã¬ã³ãŒããä¿®æ£ããŸãã
- ãããããããã«ã¯ãæŽæ°ããã°ã©ã ã¯DNSãããã€ããŒã®APIããµããŒãããå¿ èŠããããŸãããããã£ãŠã䜿çšããŠããDNSãããã€ããŒã«ãã£ãŠã¯ããã®ãªãã·ã§ã³ã䜿ããå Žåãããã°ã䜿ããªãå ŽåããããŸãã
- ãã¡ã€ã³ã«é¢é£ä»ãããããããªãã¯IPã¢ãã¬ã¹äžã§ãïŒå°ãªããšãèšŒææžååŸããã»ã¹äžã¯ïŒãµãŒããŒãšããŠå®è¡ããŸãã
- äžã§è¿°ã¹ãããã«ãç¹å®ã®IPãšããŒãã§ãªãã¹ã³ã§ããããã»ã¹ã¯1ã€ã ãã§ãã
- ããã¯ãåãTLS Termination ProxyãèšŒææžã®æŽæ°åŠçãè¡ãå Žåã«éåžžã«äŸ¿å©ãªçç±ã®1ã€ã§ãã
- ããã§ãªããã°ãTLS Termination Proxyãäžæçã«åæ¢ããèšŒææžãååŸããããã«æŽæ°ããã°ã©ã ãèµ·åããTLS Termination Proxyã§èšŒææžãèšå®ããTLS Termination Proxyãåèµ·åããªããã°ãªããªããããããŸãããTLS Termination Proxyã忢ããŠããéã¯ã¢ããªãå©çšã§ããªããªããããããã¯çæ³çã§ã¯ãããŸããã
ã¢ããªãæäŸããªãããã®ãããªæŽæ°åŠçãè¡ãããšã¯ãã¢ããªã±ãŒã·ã§ã³ã»ãµãŒããŒïŒUvicornãªã©ïŒã§TLSèšŒææžãçŽæ¥äœ¿çšããã®ã§ã¯ãªããTLS Termination Proxyã䜿çšããŠHTTPSãåŠçããå¥ã®ã·ã¹ãã ãçšæããããªãäž»ãªçç±ã®1ã€ã§ãã
ãããã·è»¢éããããŒ
ãããã·ã䜿ã£ãŠHTTPSãåŠçããå Žåãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒïŒããšãã°FastAPI CLIçµç±ã®UvicornïŒã¯HTTPSåŠçã«ã€ããŠäœãç¥ãããTLS Termination Proxyãšã¯ãã¬ãŒã³ãªHTTPã§éä¿¡ããŸãã
ãã®ãããã·ã¯éåžžããªã¯ãšã¹ããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã«è»¢éããåã«ããã®å Žã§ããã€ãã®HTTPããããŒãèšå®ãããªã¯ãšã¹ãããããã·ã«ãã£ãŠè»¢éãããŠããããšãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã«ç¥ãããŸãã
/// note | æè¡è©³çް
ãããã·ããããŒã¯æ¬¡ã®ãšããã§ãïŒ
///
ããã§ããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã¯ä¿¡é Œã§ãããããã·ã®èåŸã«ããããšãç¥ããªããããããã©ã«ãã§ã¯ãããã®ããããŒãä¿¡é ŒããŸããã
ããããã¢ããªã±ãŒã·ã§ã³ãµãŒããŒããããã·ããéä¿¡ãããforwardedããããŒãä¿¡é Œããããã«èšå®ã§ããŸããFastAPI CLIã䜿çšããŠããå Žåã¯ãCLI Option --forwarded-allow-ips ã䜿ã£ãŠãã©ã®IPããã®forwardedããããŒãä¿¡é Œãã¹ãããæå®ã§ããŸãã
ããšãã°ãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒãä¿¡é Œã§ãããããã·ããã®éä¿¡ã®ã¿ãåãåã£ãŠããå Žåã--forwarded-allow-ips="*" ã«èšå®ããŠãåä¿¡ãããã¹ãŠã®IPãä¿¡é Œããããã«ã§ããŸããåãåããªã¯ãšã¹ãã¯ããããã·ã䜿çšããIPããã®ãã®ã ãã«ãªãããã§ãã
ããããããšã§ãã¢ããªã±ãŒã·ã§ã³ã¯ãHTTPSã䜿çšããŠãããã©ããããã¡ã€ã³ãªã©ãèªèº«ã®ãããªãã¯URLãäœã§ããããææ¡ã§ããããã«ãªããŸãã
ããã¯ãããšãã°ãªãã€ã¬ã¯ããé©åã«åŠçããã®ã«äŸ¿å©ã§ãã
/// tip | è±ç¥è
ããã«ã€ããŠã¯ãBehind a Proxy - Enable Proxy Forwarded Headers{.internal-link target=_blank} ã®ããã¥ã¡ã³ãã§è©³ããåŠã¹ãŸãã
///
ãŸãšã
HTTPSãæã€ããšã¯éåžžã«éèŠã§ãããã»ãšãã©ã®å Žåãããªãã¯ãªãã£ã«ã«ã§ããéçºè ãšã㊠HTTPS ã«é¢ããåŽåã®ã»ãšãã©ã¯ããããã®æŠå¿µãšãã®ä»çµã¿ãçè§£ããããšã§ãã
ããããã²ãšãã³éçºè åãHTTPSã®åºæ¬çãªæ å ±ãç¥ãã°ãç°¡åãªæ¹æ³ã§ãã¹ãŠã管çããããã«ãããŸããŸãªããŒã«ãçµã¿åãããŠèšå®ããããšãã§ããŸãã
次ã®ç« ã®ããã€ãã§ã¯ãFastAPI ã¢ããªã±ãŒã·ã§ã³ã®ããã« HTTPS ãã»ããã¢ããããæ¹æ³ã«ã€ããŠãããã€ãã®å ·äœäŸã玹ä»ããŸããð