์์ ์ ๋คํธ์ํฌ ์ฒ๋ฆฌ๋ฅผ ํ๋ฉด์ ๋ง๋ฅ๋ค์๋ ๋ฌธ์ ๋ฅผ ๋ค์ํ๋ฒ ์ ์ด๋ณธ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฐ๋ ๊น์ง ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด๋ณธ๋ค.
Problem
App Transport Security has blocked a cleartext HTTP resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
์ด๋ฐ ์๋ฌ๋ฅผ ๋ณธ ์ ์ด ์๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ๋ณด์์ ์ทจ์ฝํ, ์ฆ HTTP๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ณด์์ค์ ์ ๋ฐ๊ฟ์ฃผ์ด์ผ ํ๋ค๋ ์๋ฌ์ด๋ค.
Solution
๋น์ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ์กฐ์น๋ฅผ ์ทจํด์ฃผ๋ฉด ๋๋ค. Inpo.plist
์์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํด์ฃผ์.
App Transport Security
์ด์ App Transport Security ์ด๋ ์์ด ๋ฌด์์ธ์ง ์์๋ณผ ํ์๊ฐ ์๋ค.
๋ค์ํ ์ข ๋ฅ์ App์ด ๊ฐ์ธ ์ ๋ณด๋ฅผ ๋ค๋ฃจ๊ฒ ๋๋ฉด์, ์ฌ์ฉ์ ์ ๋ณด ๋ณดํธ์ ๋ํ ์ค์์ฑ์ด ๋์์ก๋ค. ๊ธฐ์กด์ ๋ณด์/์ํธ ๊ธฐ์ ์ด ์ค๋๋๋ฉด์ ๊ณต๊ฒฉ์ ์ทจ์ฝํด์ก๊ณ , ๊ทธ์ ๋นํด ์ปดํจํฐ ์ฑ๋ฅ์ ๋น์ฝ์ ์ผ๋ก ๋ฐ์ ํ๋ฉด์ ์๋ก์ด ๋คํธ์ํฌ ๊ณต๊ฒฉ์ ๋์์ด ํ์ํ๋ค. ์ด์ 2015๋ ๋์ ํ๊ฒ ๋๋ค. 2016๋ ์ดํ๋ถํฐ ์๋กญ๊ฒ ๋ง๋ค์ด์ง๋ App์ ๋ฐ๋์ ATS๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๊ณ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก URLSession
, CFURL
, NSURLConnection
API๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒฝ์ฐ ATS ๊ธฐ๋ฅ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ์๋ค. ATS ๊ธฐ๋ฅ์ด ์ผ์ ธ์๋ค๋ฉด HTTP ํต์ ์ด ๋ถ๊ฐ๋ฅํ๋ค. Apple์์ ๊ถ์ฅํ๋ ์๊ตฌ์ฌํญ์ ๋ค์๊ณผ ๊ฐ๋ค.
- Server: TLS(Transport Layer Security) protocol version >= 1.2
- 2048bit ์ด์์ RSA Key Or ECC Key๊ฐ ์๋ SHA256์ ์ธ์ฆ์์ ์ฌ์ฉ
์์ธํ ๋ด์ฉ์ Preventing Insecure Network Connections์ ์ฐธ๊ณ ํ์.
TLS(Transport Layer Security): ์ธํฐ๋ท์์์ ์ ๋ณด๋ฅผ ์ํธํํด์ ์ก์์ ํ๋ ํ๋กํ ์ฝ
HTTPS: TLS์์ HTTP์ ์น์ ๋ณด์๋ HTTP ํต์ ์ ํ๋ Protocol
Exception
๋ณดํต์ ATS๋ฅผ ์ผ๋ ๊ฒ์ด ๋น์ฐํ ์ข๋ค. ๊ทธ๋ฐ๋ฐ ๋ค์๊ณผ ๊ฐ์ ์์ธ์ ๊ฒฝ์ฐ ATS๋ฅผ ๋นํ์ฑํ ํ ์ ์๋ค.
- AVFoundation ํ๋ ์์ํฌ๋ฅผ ํตํ ์คํธ๋ฆฌ๋ฐ ์๋น์ค
- WebKit์ ํตํ ์ฝํ ์ธ ์์ฒญ
- ๋ก์ปฌ ๋คํธ์ํฌ ์ฐ๊ฒฐ
์ด ์ธ์ ์์์ ์ผ๋ก ์ ์ง๋ณด์๋ฅผ ์ํด ATS๋ฅผ ์ฌ์ฉํ์ง ์์ ์ ์์ง๋ง, AppStore ์ฌ์ฌ์์๋ ์ด๋ฅผ ์ํ ์ ๋นํ ์ด์ ๊ฐ ํ์ํ ์ ์๋ค.
๋ง๋ฌด๋ฆฌ
๊ฐ๋จํ๊ฒ ATS ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ๊ณผ ๋ฌด์์ธ์ง์ ๋ํด ์์๋ณด์๋ค. ๋!