LibressSL과 H2O로 HTTP/2 진행
OpenSSL도 이 TLS 통신 소프트웨어로 사용되지만 LibressSL도 사용할 수 있다.
새 HTTP 서버 H2O와 LibressSL의 조합을 통해 HTTP/2의 통신을 확인합니다.
개시하다
HTTP/2 및 TLS 관계 및 제한 사항
HTTP/2 및 TLS 통신의 관계를 확인합니다.
HTTP/2를 통해 통신하기 위해서는 웹 서버 측과 브라우저 측 모두 HTTP/2 기능을 지원해야 합니다.또한 쌍방이 실현한 HTTP/2 규격은 반드시 같아야 한다.
HTTP/2 자체는 http와 https에 대응하는 규격을 제정했다.
어떤 경우에도 HTTP/2로 통신할 것인지 웹 서버 측과 브라우저 측 간에 결정해야 합니다.
그러나 현재 주요 브라우저는 https만 지원하는 상황에서 ALPN이 결정하는 사용자만 지원한다.따라서 브라우저를 대상으로 하는 웹 서버는 HTTP/2에 해당하는 경우 ALPN이 필요합니다.
OpenSSL 1.0.2는 ALPN을 지원합니다.1.0.1은 지원되지 않습니다.LibressSL은 ALPN을 지원합니다.
이상에 따라 OpenSSL을 전제로 HTTP/2 지원을 제공하는 웹 서버에 따라 OpenSSL은 1.0.2 이후를 사용해야 한다.그리고 그 대신 LibressSL도 논의할 수 있습니다.
HTTP/2의 TLS 통신 소프트웨어에서 LibressL을 사용하는 장점
HTTP/2 통신에서 새로운 암호 세트를 사용하는 ChaChaChaCha Chaa20-Poly 1305는 LibressSL을 선택하는 장점이다.
OpenSSL 중 현재 개발 중인 1.1.0은 ChaChachaa20-Poly 1305를 지원하지만, 현재 1.0.2와 1.0.1은 지원하지 않는다.
https://www.openssl.org/news/openssl-1.1.0-notes.html
컨디션
이번 확인은 CentOS 7(x86 64)에서 이루어졌습니다.
H2O 및 LibressSL을 통해 HTTP/2 확인
H2O는 HTTP/2를 지원하는 새 HTTP 서버입니다.
H2O는 TLS 통신 소프트웨어로서 OpenSSL과 LibressSL 두 가지를 구상할 수 있다.
이번에 우리는 LibressSL과 조합하여 최신 H2O를 구축하여 동작을 확인할 것이다.
H2O 설치
아래에서 최신 버젼 2.0.0을 다운로드하세요.
https://github.com/h2o/h2o/archive/v2.0.0.tar.gz
H2O version 2.0.0은 misc/libresssl-2.7.tar.부착 gz.
이번에는 이걸로 빌딩을 진행합니다.
(misc/libressl.mk 내 VERSION
를 고치면 최신 LibreSSL도 사용할 수 있습니다.)# tar xf v2.0.0.tar.gz
# cd h2o-2.0.0/
# cmake -DWITH_BUNDLED_SSL=on .
# make
# make install
이상/usr/local/
의 아래쪽에 H2O가 설치되어 있습니다.
H2O 설정 및 시작
H2O/usr/local/share/doc/h2o/
이하에는 문서와 샘플이 있습니다.
이번에는 이 샘플을 활용하면서 아래의 설정 파일을 만들어 간단하게 HTTP/2로 연결 확인을 했다.
/root/h2o.confhosts:
"test.com":
listen:
port: 80
listen:
port: 443
ssl:
certificate-file: /usr/local/share/doc/h2o/examples/h2o/server.crt
key-file: /usr/local/share/doc/h2o/examples/h2o/server.key
paths:
"/":
file.dir: /usr/local/share/doc/h2o/examples/doc_root
access-log: /var/log/h2o-access-log
error-log: /var/log/h2o-error-log
pid-file: /var/log/h2o-pid-file
여기서 끝내도록 설정합니다.
다음 명령은 H2O를 시작합니다.# /usr/local/bin/h2o -m daemon -c /root/h2o.conf
동작 확인
크롬 51.0.2704.84m(64-bit)로 https에 접근해보면'Welcome to H2O-an optimized HTTP 서버'문자열을 확인할 수 있다.
또 아래 캡처한 바와 같이 프로토콜은 h2
로 나타나 HTTP/2를 통해 통신한다.
openssl s_client
명령 지정-alpn h2
을 사용하여 ALPN이 유효한지 확인할 수도 있습니다.# /usr/local/bin/openssl s_client -port 443 -cipher 'CHACHA20' -alpn h2
CONNECTED(00000003)
...
---
SSL handshake has read 1565 bytes and written 387 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-CHACHA20-POLY1305-OLD
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
ALPN protocol: h2
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-CHACHA20-POLY1305-OLD
...
ALPN protocol은 h2
입니다.
총결산
HTTP/2를 지원하는 웹 서버를 구축하려면 ALPN이 필요합니다.
ALPN을 지원하는 LibressSL은 HTTP/2를 제공하는 웹 서버에서 TLS 통신 소프트웨어로 사용할 수 있음을 확인합니다.
LibressSL을 선택하면 HTTP/2에서 ChaChaChaa20-Pol1305를 사용할 수 있는 것도 매력이다.
HTTP/2를 지원하는 상황에서 TLS 통신 소프트웨어로서 OpenSSL 외에 LibreSSL도 유력한 후보로 논의할 수 있다.
Reference
이 문제에 관하여(LibressSL과 H2O로 HTTP/2 진행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kinichiro/items/0ee2417da7ab2a2ced4e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# tar xf v2.0.0.tar.gz
# cd h2o-2.0.0/
# cmake -DWITH_BUNDLED_SSL=on .
# make
# make install
hosts:
"test.com":
listen:
port: 80
listen:
port: 443
ssl:
certificate-file: /usr/local/share/doc/h2o/examples/h2o/server.crt
key-file: /usr/local/share/doc/h2o/examples/h2o/server.key
paths:
"/":
file.dir: /usr/local/share/doc/h2o/examples/doc_root
access-log: /var/log/h2o-access-log
error-log: /var/log/h2o-error-log
pid-file: /var/log/h2o-pid-file
# /usr/local/bin/h2o -m daemon -c /root/h2o.conf
# /usr/local/bin/openssl s_client -port 443 -cipher 'CHACHA20' -alpn h2
CONNECTED(00000003)
...
---
SSL handshake has read 1565 bytes and written 387 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-CHACHA20-POLY1305-OLD
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
ALPN protocol: h2
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-CHACHA20-POLY1305-OLD
...
HTTP/2를 지원하는 웹 서버를 구축하려면 ALPN이 필요합니다.
ALPN을 지원하는 LibressSL은 HTTP/2를 제공하는 웹 서버에서 TLS 통신 소프트웨어로 사용할 수 있음을 확인합니다.
LibressSL을 선택하면 HTTP/2에서 ChaChaChaa20-Pol1305를 사용할 수 있는 것도 매력이다.
HTTP/2를 지원하는 상황에서 TLS 통신 소프트웨어로서 OpenSSL 외에 LibreSSL도 유력한 후보로 논의할 수 있다.
Reference
이 문제에 관하여(LibressSL과 H2O로 HTTP/2 진행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kinichiro/items/0ee2417da7ab2a2ced4e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)