๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ› ๏ธ

[Safari] http ์š”์ฒญ์„ https๋กœ ๊ฐ•์ œ ์ „ํ™˜ํ•ด๋ฒ„๋ฆฌ๋Š” ๋ฌธ์ œ | fastapi, uvicorn

by ๋ฐ”์ฟ„๋ฆฌ 2024. 3. 27.

 

๊ธฐ์กด์— ์ง„ํ–‰๋˜์–ด์„œ ๋ฐฐํฌ๋œ ํ”„๋กœ์ ํŠธ์—์„œ safari๋กœ ์ ‘์†์‹œ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค๋Š” ์ œ๋ณด์—

local์—์„œ ์‹คํ–‰์‹œํ‚ค๊ณ  localhost๋กœ ์ ‘์†์„ ์‹œ๋„ํ–ˆ๋‹ค.

 

WARNING:  Invalid HTTP request received.
Traceback (most recent call last):
  File "/Users/{myname}/Desktop/project/{projectname}/venv/lib/python3.8/site-packages/uvicorn/protocols/http/httptools_impl.py", line 131, in data_received
    self.parser.feed_data(data)
  File "httptools/parser/parser.pyx", line 212, in httptools.parser.parser.HttpParser.feed_data
httptools.parser.errors.HttpParserInvalidMethodError: Invalid method encountered

 

ํ„ฐ๋ฏธ๋„์—๋Š” ์ด๋Ÿฐ ์—๋Ÿฌ๋ฅผ ๋ฑ‰๊ณ ์žˆ๋‹ค.

 

http๋กœ ์š”์ฒญํ•œ๊ฒŒ https๋กœ ๊ฐ•์ œ ์ „ํ™˜์ด ๋˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

https๋กœ ๋ฐ”๋€Œ๋Š” ๊ฑธ ๋ง‰์œผ๋ฉด ๋œ๋‹ค.

 

์ด ๋ฐฉ๋ฒ•์„ ๋ช‡์‹œ๊ฐ„์ด๋‚˜ ์ฐพ์•„๋ดค๋Š๋ฐ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

Safari ์„ค์ •์—์„œ ์›น ์‚ฌ์ดํŠธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ... โ†’ ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๊ธฐ๋„ ํ•˜๊ณ 

 

HSTS ์„ค์ •์„ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ ์„ค์ •ํ•˜๋ผ๋Š” ๊ฒƒ๋„ ๋”ฐ๋ผ์„œ ์ง„ํ–‰ํ•ด๋ณด์•˜์œผ๋‚˜

๋˜‘๊ฐ™์€ ์—๋Ÿฌ๋งŒ ๋–จ์–ด์งˆ ๋ฟ์ด์—ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์–ด์งœํ”ผ local์—์„œ ์‹คํ–‰์‹œํ‚ค๊ณ  ํ™•์ธํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ˆ, ๋‚ด๊ฐ€ https๋กœ ์ ‘์†์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐฉํ–ฅ์„ ๋ฐ”๊ฟ”๋ณด์•˜๋‹ค.

https๋กœ application์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ openssl ์„ค์ •์„ ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

๋‚ด๊ฐ€ ์‹คํ–‰์‹œํ‚ค๋Š” application๊ณผ ๋™์ผํ•œ ๊ฒฝ๋กœ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ commend๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365

 

์ž„์‹œ๋กœ ๋ฐœ๊ธ‰ ๋ฐ›๋Š” ๊ฒƒ์ด๊ธฐ์— ์ž…๋ ฅํ•˜๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ๋“ค์— ๋Œ€ํ•ด์„œ ๊ทธ๋ƒฅ ๋Œ€์ถฉ ์ž…๋ ฅํ•ด์ค€๋‹ค.

 

2๊ฐœ์˜ pem์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค.

(1) cert.pem

(2) key.pem

 

์ด์ œ app์„ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ, ์ด pemํ‚ค์™€ ๊ฐ™์ด ์‹คํ–‰ ์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค.

 

์›๋ž˜ ๋ช…๋ น์–ด

uvicorn.run("main:app", host='0.0.0.0', port=8000, reload=True)

 

pemํ‚ค์™€ ๊ฐ™์ด ์‹คํ–‰์‹œํ‚ค๋Š” ๋ช…๋ น์–ด

uvicorn.run("main:app", host='0.0.0.0', port=8000, ssl_keyfile='key.pem', ssl_certfile='cert.pem')

 

https๋กœ localhost ํ˜ธ์ถœํ•˜๋ฉด !!!

https://localhost:8000

 

์ด๋Ÿฐ ๊ฒฝ๊ณ ๊ฐ€ ๋œจ๋Š”๋ฐ ์›น ์‚ฌ์ดํŠธ ๋ฐฉ๋ฌธ์„ ํด๋ฆญํ•˜๋ฉด

 

ํก .. ๐Ÿซข ๊ฐ๊ฒฉ์Šค๋Ÿฌ์›Œ์š” ... ์ด์ œ ๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ .. ใ… ใ