2017-04-24 38 views
-1

我使用最新的libressl 2.5.3来检查NGINX上的ALPN支持。我想我有所有正确的设置,但是当我尝试从测试:Nginx ALPN支持 - 在线测试是否正确?

https://tools.keycdn.com/http2-test

告诉我:是啊!域支持HTTP/2.0

"ALPN is not supported" 

相反,当我试图用opnessl本地测试,我们可以看到alpn是正确的版本H2

#openssl s_client -alpn h2 -connect domain:port | grep ALPN 
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3 
verify return:1 
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3 
verify return:1 
depth=0 CN = fbrqx.com 
verify return:1 
ALPN protocol: h2 

我做错了什么?

正确的信息由keycdn提供?

谢谢。

Ricardo/Brqx。

+0

Stack Overflow是编程和开发问题的网站。这个问题似乎与题目无关,因为它不涉及编程或开发。请参阅帮助中心的[我可以询问哪些主题](http://stackoverflow.com/help/on-topic)。也许[超级用户](http://superuser.com/)或[Unix&Linux堆栈交换](http://unix.stackexchange.com/)会是一个更好的地方。另请参阅[我在哪里发布有关Dev Ops的问题?](http://meta.stackexchange.com/q/134306) – jww

+0

而不是告诉没有用,为什么你看不到是一个非常有用的解决方案的问题。当然不是正确的地方,但是对于人来说,了解正确的地方非常复杂。更有价值的是比其他用户更好的解决方案。 –

+0

这个问题可能对其他人有用,但它对这个网站的脱离主题。将它放置在一个主题上的网站上。你有两个网站可能涉及主题。您可能也对[帮助中心](https://stackoverflow.com/help)感兴趣,在这里详细讨论这些内容。 – jww

回答

-1

今天keycdn工作并告诉我们ALPN支持。

在这里我们可以看到libressl信息(因此与2.5.3版本[2017年4月]你可以测试的OpenSSL):

openssl version -a 
LibreSSL 2.5.3 
built on: date not available 
platform: information not available 
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: information not available 
OPENSSLDIR: "/PATH/libressl/libressl-2.5.3/.openssl/etc/ssl" 

如何测试服务器:

1,从服务器(使用OpenSSL客户端)

openssl s_client -alpn h2 -connect DOMAIN:PORT -status 

New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 
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-AES128-GCM-SHA256 
    Session-ID: 1FB23766E93F4983F3218F3E1C0058947DD60BEEB414CA50BDDF9009299A273B 
    Session-ID-ctx: 
    Master-Key: BBCC316C78C85C90066F660A5C1018F5F71CEADFF13AC406758BA06B0D07A5FFCF21395657CFF1B42760C371EE70281D 
    TLS session ticket lifetime hint: 300 (seconds) 
    TLS session ticket: 
    0000 - 06 48 61 b7 a7 63 23 ad-6a cf f9 47 39 49 c0 1a .Ha..c#.j..G9I.. 
    0010 - b3 04 db ea 02 2e 46 a9-9a 6b 02 de b5 e9 bb c4 ......F..k...... 
    0020 - 68 71 ba b2 62 27 08 76-f0 cb cb e6 e5 7d 4a 50 hq..b'.v.....}JP 
    0030 - f8 4d 40 24 2a 35 2a 7e-03 5b bc 27 73 7d 1a 14 [email protected]$*5*~.[.'s}.. 
    0040 - f3 86 9d d9 33 42 49 c7-93 28 a0 f9 e3 4a cb 93 ....3BI..(...J.. 
    0050 - 4d e7 43 bf 8d 8b 9d 3b-06 47 04 77 ca ca 0b 56 M.C....;.G.w...V 
    0060 - fc 6c ff 0d ac 69 7c b3-bb 6f fb 35 d5 75 7d aa .l...i|..o.5.u}. 
    0070 - d3 34 e1 04 f9 85 06 50-a2 3d 12 8d 69 39 53 32 .4.....P.=..i9S2 
    0080 - c7 c4 f3 84 93 fb 87 8c-48 a2 7b 8f 35 5a c0 4f ........H.{.5Z.O 
    0090 - 3c 58 39 3d 5d cf b1 10-b4 fa 19 9d 43 f2 09 c7 <X9=].......C... 

    Start Time: 1493112423 
    Timeout : 7200 (sec) 
    Verify return code: 0 (ok) 
  • 从客户端 - 浏览器谷歌浏览器(会告诉我们当前的连接什么听http2)
  • 铬://网内部/#http2

    这是nginx的配置:

    server { 
        index index.html index.htm index.php; 
    
        # Direct http2 
        listen  IP:PORT ssl http2; 
    
        # Haproxy redirection 
        listen  IP:PORT http2 proxy_protocol; 
    ... 
    

    而这一次是HAProxy的配置(我的想法是使用之间的SSL层HA和Nginx可能会在全球不同的服务器上运行)。

    frontend ABC 
        mode tcp 
    # Works with http11 
    # bind 0.0.0.0:PORT ssl crt /etc/haproxy/certs/DOMAIN.pem alpn http/1.1 
    
    # Works with http2 and http11 
        bind 0.0.0.0:PORT ssl crt /etc/haproxy/certs/DOMAIN.pem alpn h2,http/1.1 ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA 
    
    
        reqadd X-Forwarded-Proto:\ https 
    
        use_backend proxy_nginx if { ssl_fc_alpn -i h2 } 
    
        default_backend nginx 
    
    backend nginx 
        mode tcp 
        server server_nginx IP:PORT check ssl verify none 
    
    backend proxy_nginx 
    
        mode tcp 
        server proxy_nginx IP:PORT check send-proxy 
    ... 
    

    现在,每个人都可以使用http2和alpn工作Haproxy,Nginx和libressl 2.5.3。

    有趣的网址查询:

    https://gist.github.com/thisismitch/7c91e9b2b63f837a0c4b https://www.mare-system.de/blog/page/1405201517/ https://jve.linuxwall.info/blog/index.php?post/2015/10/04/SHA1/SHA256-certificate-switching-with-HAProxy https://wiki.mozilla.org/Security/Server_Side_TLS#Recommended_configurations

    最好的问候。

    Ricardo/Brqx。