Lua-resty-auto-ssl: OCSP ์Šคํ…Œ์ดํ”Œ๋ง: ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 07์›” 24์ผ  ยท  21์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: auto-ssl/lua-resty-auto-ssl

๋ชจ๋“  ๊ฒƒ์ด ์ธ์ฆ์„œ์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋กœ๊ทธ์—์„œ ๋‹ค์Œ์„ ์–ป์Šต๋‹ˆ๋‹ค.

2016/07/24 09:43:00 [error] 10#10: connect() to [*]:80 failed (101: Network is unreachable), context: ssl_certificate_by_lua*, client: 10.0.0.1, server: 0.0.0.0:443
2016/07/24 09:43:00 [error] 10#10: [lua] ssl_certificate.lua:203: set_cert(): auto-ssl: failed to set ocsp stapling for * - continuing anyway - failed to get ocsp response: OCSP responder query failed: network is unreachable, context: ssl_certificate_by_lua*, client: 10.0.0.1, server: 0.0.0.0:443

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

ipv6=off ํ”Œ๋ž˜๊ทธ๋กœ Nginx๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ IPv4 ์ฃผ์†Œ๋งŒ ํ™•์ธํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

resolver 8.8.8.8 ipv6=off;

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AWS์—์„œ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ํ™•์ธ์ž IP๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

resolver 172.16.0.23 ipv6=off;

(์ด IP๋Š” cat /etc/resolv.conf ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  nameserver ๊ฐ’์„ ์ฐพ์œผ๋ฉด ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

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

๋ฆฌ์กธ๋ฒ„๋ฅผ ์ง€์ •ํ–ˆ์Šต๋‹ˆ๊นŒ?
resolver 8.8.8.8;

๋„ค

ํฌํŠธ 80์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•˜์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ธํ”„๋ผ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋„์ปค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค

๋‚ด ์ž์‹ ์˜ ์ด๋ฏธ์ง€๋ฅผ ์‹œ๋„ํ•˜๊ณ  ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://hub.docker.com/r/pushtospace/nginx/

์‹œ๊ฐ„์ด ๋˜๋ฉด ์‹œ๋„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‚ด ๊ฑฐ:

FROM openresty/openresty:latest-xenial
RUN /usr/local/openresty/luajit/bin/luarocks install lua-resty-auto-ssl
RUN openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 \
      -subj '/CN=sni-support-required-for-valid-ssl' \
      -keyout /etc/ssl/resty-auto-ssl-fallback.key \
      -out /etc/ssl/resty-auto-ssl-fallback.crt
ADD nginx.conf /usr/local/openresty/nginx/conf/nginx.conf
RUN mkdir -p /etc/resty-auto-ssl/storage/file/
VOLUME ["/etc/resty-auto-ssl/storage/file/"]

@serathius : ์„œ๋ฒ„๊ฐ€ Let's Encrypt์˜ OCSP ์„œ๋ฒ„๋กœ ์•„์›ƒ๋ฐ”์šด๋“œ ์š”์ฒญ์„ ์‹œ๋„ํ•  ๋•Œ ์‹คํŒจํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. lua-resty-auto-ssl์ด ์„ค์น˜๋œ ๋™์ผํ•œ ์„œ๋ฒ„์—์„œ ๊ธฐ๋ณธ Let's Encrypt OCSP ์„œ๋ฒ„์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์ˆ˜๋™์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

curl -v "http://ocsp.int-x3.letsencrypt.org/"

"200 OK" ์ƒํƒœ์˜ ์‘๋‹ต์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์•ˆ ๋ณด์ด๋ฉด ์ถœ๋ ฅ๋ฌผ์„ ๊ฒŒ์‹œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ๋„คํŠธ์›Œํฌ์— ์ด ์•„์›ƒ๋ฐ”์šด๋“œ ์š”์ฒญ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ ์ด ๊ฒฝ์šฐ ๋กœ๊ทธ ํŒŒ์ผ์˜ ์˜ค๋ฅ˜์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์œ ํšจํ•œ SSL ์ธ์ฆ์„œ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹จ์ˆœํžˆ OCSP ์Šคํ…Œ์ดํ”Œ๋ง ์ด ์‹คํŒจํ–ˆ์Œ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ OCSP ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ์˜ ๋ชซ์ž…๋‹ˆ๋‹ค.

์•„๋งˆ๋„ IPv6๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ด๊ฒƒ์„ ์–ป๋Š”๋‹ค

2016/08/31 04:58:27 [error] 31119#0: unexpected response for ocsp.int-x3.letsencrypt.org
2016/08/31 04:58:28 [error] 31119#0: connect() to [2001:428:4402:108::419e:2f9a]:80 failed (101: Network is unreachable), context: ssl_certificate_by_lua*, client: 50.4.134.47, server: 0.0.0.0:443
2016/08/31 04:58:28 [error] 31119#0: [lua] ssl_certificate.lua:203: set_cert(): auto-ssl: failed to set ocsp stapling for staging.example.com - continuing anyway - failed to get ocsp response: OCSP responder query failed (http://ocsp.int-x3.letsencrypt.org/): network is unreachable, context: ssl_certificate_by_lua*, client: snip, server: 0.0.0.0:443

ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•œ ํ›„ ์ž‘๋™ํ•˜๋Š” https ํŽ˜์ด์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋ฌด์Šจ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์•„์„ธ์š”?

2016/10/18 18:38:30 [error] 18084#18084: *24710 [lua] ssl_certificate.lua:203: set_cert(): auto-ssl: failed to set ocsp stapling for www.franklpharma.cz - continuing anyway - failed to get ocsp response: OCSP responder query failed (http://ocsp.int-x3.letsencrypt.org/): network is unreachable, context: ssl_certificate_by_lua*, client: 10.135.30.111, server: 0.0.0.0:443
2016/10/18 18:38:54 [error] 18084#18084: *24729 connect() to [2a02:26f0:122::215:f618]:80 failed (101: Network is unreachable), context: ssl_certificate_by_lua*, client: 10.135.30.111, server: 0.0.0.0:443

์šฐ๋ฆฌ๋Š” ๋งค ๋…„๋งˆ๋‹ค Nginx/Openresty ์ •์ง€(nginx_status ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š๊ณ  ๋กœ๊ทธ๊ฐ€ ๋น„์–ด ์žˆ์Œ)๋ฅผ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 10 ์‹œ๊ฐ„. ์ด๊ฑฐ ์—ฐ๊ฒฐ๋˜๋‚˜์š”? ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”

์ถ”์‹ : ๊ทธ IPv6 ์ฃผ์†Œ๋ฅผ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

@GUI ์ปฌ์ด ์ž‘๋™ ์ค‘์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ธ์ฆ์„œ๋Š” ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๋‚ด ๋กœ๊ทธ์—๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€ ๋กœ๋“œ์— ๋Œ€ํ•ด ์ด ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”

[root@realm0-ssl1 logs]# curl -v "http://ocsp.int-x3.letsencrypt.org/"
*   Trying 2.22.8.114...
* Connected to ocsp.int-x3.letsencrypt.org (2.22.8.114) port 80 (#0)
> GET / HTTP/1.1
> Host: ocsp.int-x3.letsencrypt.org
> User-Agent: curl/7.47.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: nginx
< Content-Type: text/plain; charset=utf-8
< Content-Length: 0
< Cache-Control: max-age=33645
< Expires: Fri, 28 Oct 2016 23:29:12 GMT
< Date: Fri, 28 Oct 2016 14:08:27 GMT
< Connection: keep-alive
< 
* Connection #0 to host ocsp.int-x3.letsencrypt.org left intact

@fibigerg : ์•„, ํฅ๋ฏธ๋กญ๋„ค์š”. curl์ด IPv4๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ nginx ๋‚ด๋ถ€ ์—ฐ๊ฒฐ์€ IPv6์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์ง€๋งŒ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. nginx์—์„œ ์–ด๋–ค resolver ์„ค์ •์„ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๊นŒ? resolver 8.8.8.8 ์™€ ํ•จ๊ป˜ Google์˜ DNS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‹œ์Šคํ…œ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” DNS ์„œ๋ฒ„๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Linux ์‹œ์Šคํ…œ์—์„œ๋Š” cat /etc/resolv.conf ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค( nameserver ํ•ญ๋ชฉ ์ฐพ๊ธฐ).

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ nginx์™€ ๊ธฐ๋ณธ ์‹œ์Šคํ…œ ์„œ๋ฒ„ ๊ฐ„์— ๋‹ค๋ฅธ DNS ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„ nginx๋Š” ๊ธฐ๋ณธ ์‹œ์Šคํ…œ DNS ์„œ๋ฒ„๋ฅผ ์„ ํƒํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ README์—์„œ Google DNS ํ•ญ๋ชฉ์„ ์˜ˆ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ์€ ๊ดœ์ฐฎ์ง€ ๋งŒ Google์˜ DNS๊ฐ€ IPv6 ์ฃผ์†Œ๋ฅผ nginx๋กœ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ IPv6๊ณผ ์™„์ „ํžˆ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ๋„คํŠธ์›Œํฌ์—์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ nginx๊ฐ€ IPv6 ์ฃผ์†Œ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•œ ํ›„ ์—ฐ๊ฒฐ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค๋ฉด nginx resolver ์„ค์ •์„ ์‹œ์Šคํ…œ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„์™€ ์ผ์น˜ํ•˜๋„๋ก ํ•˜๋ฉด(์•„๋งˆ๋„ IPv6 ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค) ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด SSL ์ธ์ฆ์„œ๋Š” ์ด ์ธก๋ฉด์ด ์‹คํŒจํ•ด๋„ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ๊ฐ€ OCSP ์Šคํ…Œ์ดํ”Œ๋ง ๊ณผ ํ•จ๊ป˜ ๋ฐ˜ํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค(nginx๋Š” ์„ฑ๊ณต์„ ์บ์‹ฑํ•˜๋Š” ๋Œ€์‹  ์Šคํ…Œ์ดํ”Œ๋ง ์š”์ฒญ์„ ๊ณ„์† ์š”์ฒญํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค).

ipv6=off ํ”Œ๋ž˜๊ทธ๋กœ Nginx๋ฅผ ๊ตฌ์„ฑํ•˜์—ฌ IPv4 ์ฃผ์†Œ๋งŒ ํ™•์ธํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

resolver 8.8.8.8 ipv6=off;

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AWS์—์„œ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜๊ณ  ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ํ™•์ธ์ž IP๊ฐ€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

resolver 172.16.0.23 ipv6=off;

(์ด IP๋Š” cat /etc/resolv.conf ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  nameserver ๊ฐ’์„ ์ฐพ์œผ๋ฉด ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

@GUI @berzniz ์†”๋ฃจ์…˜ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! Digital Ocean VPS์—์„œ IPv6์„ ํ™œ์„ฑํ™”ํ–ˆ์œผ๋ฉฐ ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ํƒ์ƒ‰๊ณผ ๋””๋ฒ„๊น…์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ชจ๋‘๋“ค!

์ด ๋ฌธ์ œ๋Š” ์„œ๋ฒ„์˜ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ(IPv6 ํ˜ธํ™˜ ์—ฌ๋ถ€)๊ณผ DNS ์„œ๋ฒ„ ์„ ํƒ(IPv6 ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜ ์—ฌ๋ถ€)์—์„œ ๋น„๋กฏ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋”ฉ ๊ด€์ ์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์€ ๋งŽ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์„ ๋ช…ํ™•ํžˆ ํ•˜๊ณ  ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด README์˜ ์˜ˆ์— ๋ช‡ ๊ฐ€์ง€ ์˜๊ฒฌ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/GUI/lua-resty-auto-ssl/commit/856f52fb096c29f950dda83b3201faa5557a239b ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์ œ์•ˆ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์†Œ๋ฆฌ๋ฅผ ์ง€๋ฅด์‹ญ์‹œ์˜ค.

"OCSP ์‘๋‹ต ์‹คํŒจ(6: ์ธ์ฆ๋˜์ง€ ์•Š์Œ)"๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒˆ ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ๋‹ค์‹œ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

127.0.0.1 - - [03/Jan/2017:19:18:19 +0000] "POST /deploy-challenge HTTP/1.1" 200 5 "-" "curl/7.47.0"
10.255.0.3 - - [03/Jan/2017:19:18:20 +0000] "GET /.well-known/acme-challenge/i64vxEpJN-wUE-OvK7tKh0M3o842VcXSSeoyxtCd7Wk" (ํ˜ธํ™˜, Let's Encrypt ๊ฒ€์ฆ ์„œ๋ฒ„, +https://www.letsencrypt.org)"
127.0.0.1 - - [03/Jan/2017:19:18:22 +0000] "POST /clean-challenge HTTP/1.1" 200 5 "-" "curl/7.47.0"
127.0.0.1 - - [03/Jan/2017:19:18:25 +0000] "POST /deploy-cert HTTP/1.1" 200 30 "-" "curl/7.47.0"
2017/01/03 19:18:26 [์˜ค๋ฅ˜] 16#16: 3 [๋ฃจ์•„] SSL_์ธ์ฆ์„œ.

์Šน์ธ๋˜์ง€ ์•Š์€ ์‘๋‹ต์„ ๋ฐ›๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”

@faguirre1 : ์ด "์Šน์ธ๋˜์ง€ ์•Š์€" ์˜ค๋ฅ˜๋Š” ์ด ์Šค๋ ˆ๋“œ์˜ ์ด์ „ "๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Œ" ์˜ค๋ฅ˜์™€ ์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด์จŒ๋“  ๋„๋ฉ”์ธ์— ๋‹ค๋ฅธ ์š”์ฒญ์„ ํ•˜๋ฉด nginx ๋กœ๊ทธ์— ๋™์ผํ•œ OCSP ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๊นŒ? Let's Encrypt OCSP๊ฐ€ "unauthorized"( #1 , #2 )๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—์„œ ์ด๊ฒƒ์€ Let's Encrypt ์ธก์˜ ์ผ์‹œ์ ์ธ ์„œ๋ฒ„ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋กœ๊ทธ์— ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„์—์„œ curl -v "http://ocsp.int-x3.letsencrypt.org/" ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์–ด๋–ค ๊ฒฐ๊ณผ๋ฅผ ์–ป์Šต๋‹ˆ๊นŒ?

(๊ทธ๋ฆฌ๊ณ  ๋ช…ํ™•ํžˆ ํ•˜์ž๋ฉด, ์ด ์˜ค๋ฅ˜์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  SSL ์ธ์ฆ์„œ๋Š” ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์™„์ „ํžˆ ์œ ํšจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. OCSP ์Šคํ…Œ์ดํ”Œ๋ง์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ OCSP ์กฐํšŒ๋ฅผ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™”๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.)

์•ˆ๋…•,

๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์š”์ฒญ์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์˜ค๋Š˜ ํ™•์ธ ํ›„ ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. Let's Encrypt end์˜ ๋ฌธ์ œ์˜€๋‹ค๋Š” ๋ง์”€์ด ์˜ณ์•˜๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

ipv6=off ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € resolv.conf ์— ๋‚˜์—ด๋œ DNS ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์•˜์ง€๋งŒ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

BTW @GUI , ์ €๋Š” lua-resty-auto-ssl ๊ฐ€ SSL ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ผ๋งˆ๋‚˜ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š”์ง€ ์‚ฌ๋ž‘ํ•ฉ๋‹ˆ๋‹ค! ์ž˜ ํ–ˆ์–ด! ๊ธฐ๋ถ€๊ธˆ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์‹œ์„ค์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฐฉ๊ธˆ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ipv6=off๋„ ํ•ด๊ฒฐํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ๋ฐ€์ ‘ํ•œ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ์—ฌ๊ธฐ์— ๊ฒŒ์‹œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ธ์ฆ์„œ๊ฐ€ ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „์— ์–ด์ œ(#192์™€ ๋™์ผํ•œ ๋ฌธ์ œ) ์žฌ๋ฐœ๊ธ‰์„ ํ•  ์ˆ˜ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ๊ณ , ์˜ค๋Š˜๋„ ์—ฌ์ „ํžˆ ์ƒˆ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ฐพ์€ ๋กœ๊ทธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2019/11/24 12:50:45 [crit] 17#17: *3 connect() to [2600:1415:2000::17ce:f212]:80 failed (99: Address not available), context: ssl_certificate_by_lua*, client: 1.158.52.47, server: 0.0.0.0:443
2019/11/24 12:50:45 [error] 17#17: *3 [lua] ssl_certificate.lua:260: set_response_cert(): auto-ssl: failed to set ocsp stapling for <domain> - continuing anyway - failed to get ocsp response: OCSP responder query failed (http://ocsp.int-x3.letsencrypt.org): address not available, context: ssl_certificate_by_lua*, client: 1.158.52.47, server: 0.0.0.0:443

ipv6=off ๋ฅผ ํฌํ•จํ•˜๋Š” resolver ๋ช…๋ น์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  IPv6 ์ฃผ์†Œ์— ๋„๋‹ฌํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ณ  ์ด๊ฒƒ์ด ipv6 ๋„คํŠธ์›Œํฌ๊ฐ€ ์—†๋Š” ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค(๊ฒฐ๊ณผ์ ์œผ๋กœ 99: Address not available ).

๋‚˜๋Š” ์ฆ‰์‹œ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ, ์—ฌ๊ธฐ ํ˜ธ์ฃผ์—์„œ ์ง€๊ธˆ ์ด๋ฅธ ์•„์นจ์œผ๋กœ ์ธํ•ด ๋ช‡ ๊ฐ€์ง€ ๋ถ„๋ช…ํ•œ ์˜ต์…˜์„ ๋†“์ณค์„ ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ IPv6 ์ฃผ์†Œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์›์ธ์— ๋Œ€ํ•œ ์ œ์•ˆ์ด ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด nginx ๊ตฌ์„ฑ์ด๋‚˜ ๋„์ปค ์ด๋ฏธ์ง€ ๋ฐ ๊ด€๋ จ ์Šคํƒ์—์„œ ์–ด๋–ค ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ข‹์•„, ์ƒˆ๋กœ์šด ์•„์นจ, ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ๋‘๋‡Œ, ๋‚ด๊ฐ€ ์‹œ๋„ํ–ˆ์–ด์•ผ ํ•  ์ฒซ ๋ฒˆ์งธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ €์žฅ์†Œ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์ธ์ฆ์„œ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฑฐ๊พธ๋กœ, ๋ชจ๋“  ๊ฒƒ์ด ์ง€๊ธˆ์€ ๊ณ ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์˜ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์—ฌ์ „ํžˆ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์ž์‹ ์˜ ์ดํ•ด๋ฅผ ์œ„ํ•ด ๊ทธ๋ฆฌ๊ณ  ๋‚˜์ค‘์— ๋‹ค์‹œ ๊ณ ๊ฐœ๋ฅผ ๋“œ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์˜๊ฒฌ์„ ๋ณด๋‚ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

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

๊ด€๋ จ ๋ฌธ์ œ

prionkor picture prionkor  ยท  11์ฝ”๋ฉ˜ํŠธ

discobean picture discobean  ยท  8์ฝ”๋ฉ˜ํŠธ

arya6000 picture arya6000  ยท  11์ฝ”๋ฉ˜ํŠธ

jasonbouffard picture jasonbouffard  ยท  6์ฝ”๋ฉ˜ํŠธ

n11c picture n11c  ยท  13์ฝ”๋ฉ˜ํŠธ