Httpie: "SSL ์˜ค๋ฅ˜: ํ˜ธ์ŠคํŠธ ์ด๋ฆ„<x>์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค<y>" - ํ•˜์ง€๋งŒ Curl/Chrome์€ SSL ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?</y></x>

์— ๋งŒ๋“  2014๋…„ 09์›” 26์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: httpie/httpie

JIRA REST API์™€ ํ•จ๊ป˜ httpie๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ช…๋ น์ด ์‹คํŒจํ•˜๊ณ  "SSLError: hostname์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค" ์Šคํƒ€์ผ ๋ฉ”์‹œ์ง€:

bash-3.2$ http https://jira.mongodb.org/rest/api/2/search?jql=assignee=bob

http: error: SSLError: hostname 'jira.mongodb.org' doesn't match either of '*.mongodb.com', 'mongodb.com'

๋‚ด ์ดํ•ด๋Š” SSL ์ธ์ฆ์„œ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ requests ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฉ”์‹œ์ง€๋Š” ์ธ์ฆ์„œ๊ฐ€ *.mongodb.com์— ๋Œ€ํ•œ ๊ฒƒ์ž„์„ ์•”์‹œํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ, jira.mongodb.org์— ํ•ด๋‹นํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ SSL ๊ฒฝ๊ณ  ์—†์ด ๋™์ผํ•œ ๋ช…๋ น์ด CuRL์„ ํ†ตํ•ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

bash-3.2$ curl -v  https://jira.mongodb.org/rest/api/2/search?jql=assignee=free
* Adding handle: conn: 0x7fbe2b003a00
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7fbe2b003a00) send_pipe: 1, recv_pipe: 0
* About to connect() to jira.mongodb.org port 443 (#0)
*   Trying 54.221.213.229...
* Connected to jira.mongodb.org (54.221.213.229) port 443 (#0)
* TLS 1.1 connection using TLS_RSA_WITH_AES_256_CBC_SHA
* Server certificate: jira.mongodb.org
* Server certificate: Go Daddy Secure Certification Authority
* Server certificate: Go Daddy Class 2 Certification Authority
> GET /rest/api/2/search?jql=assignee=free HTTP/1.1
> User-Agent: curl/7.30.0
> Host: jira.mongodb.org
> Accept: */*
>
< HTTP/1.1 200 OK
* Server Apache-Coyote/1.1 is not blacklisted
< Server: Apache-Coyote/1.1
< Vary: Accept-Encoding
< Cache-Control: no-cache, no-store, no-transform
< Content-Type: application/json;charset=UTF-8
< Date: Fri, 26 Sep 2014 02:14:22 GMT
< X-AREQUESTID: 134x54195573x2
< Transfer-Encoding: chunked
< X-AUSERNAME: anonymous
< Set-Cookie: atlassian.xsrf.token=ASGJ-NC06-6R0X-EKH7|4d65065ad638afb4fe7edb9b04e81379cc315e06|lout; Path=/
<
* Connection #0 to host jira.mongodb.org left intact
{"startAt":0,"maxResults":50,"total":0,"issues":[]}

๋˜ํ•œ ๋‚ด ๋ธŒ๋ผ์šฐ์ €(Chrome)์—์„œ๋„ ์ž˜ ๋กœ๋“œ๋˜๋ฉฐ SSL ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

screen shot 2014-09-26 at 12 12 05 pm

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์˜๊ฒฌ์ด ์žˆ์œผ์‹ญ๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์€ SNI์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 'pip install requests[security]'๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ถ”๊ฐ€ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

K-9 Mail์„ ์‚ฌ์šฉํ•˜์—ฌ Android ๊ธฐ๊ธฐ์—์„œ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ œ ๊ฐ„๋žตํ•œ ์„ค๋ช…์„ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

์ด๊ฒƒ์€ SNI์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 'pip install requests[security]'๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ถ”๊ฐ€ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

K-9 Mail์„ ์‚ฌ์šฉํ•˜์—ฌ Android ๊ธฐ๊ธฐ์—์„œ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ์ œ ๊ฐ„๋žตํ•œ ์„ค๋ช…์„ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ์ž‘์—… ์š”์ฒญ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ํ™•์ธ์„ False๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ฒญ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์š”์ฒญ[๋ณด์•ˆ]์„ ์„ค์น˜ํ•˜๊ณ  ํ™•์ธ์„ ์ธ์ฆ์„œ ํŒŒ์ผ๋กœ ์„ค์ •ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋„์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. requests[security] ๋ฐ httpie ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

pip install --upgrade requests[security]
pip install --upgrade httpie

์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” Python 3.6+์— ์˜์กดํ•˜๋Š” ์ตœ์‹  HTTPie ๋ฒ„์ „์—์„œ ์‚ฌ๋ผ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰