我使用编译安装的openssl-1.2.h生成SSL证书(但我用yum安装openssl-devel)。这是我的nginx(1.10.1)配置。 服务器{ charset utf-8; 听443 ssl http2; server_name localhost;
ssl on;
ssl_certificate /etc/ssl/certs/aa_2048.crt;
ssl_certificate_key /etc/ssl/certs/aa_2048.key;
#
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/private/aa_2048.dhparam;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
keepalive_timeout 70;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
...
}
我使用chrome 51.0.2704.103打开链接,但它使用的是http / 1.1协议,而不是我所使用的http / 2.x. 那么它有什么问题呢?
这是openssl和nginx的过程。 - > https://github.com/AarioAi/Conf/tree/aario/Dockerfiles不是主分支,而是分支aario。
答案 0 :(得分:1)
您是使用openssl 1.0.2h编译Nginx还是仅使用它来生成cert csr?
你可以编辑你的问题来添加“nginx -V”的输出吗?
猜测它是使用openssl 1.0.1编译的,Chrome需要openssl 1.0.2或更高版本,因为它需要ALPN(https://ma.ttias.be/day-google-chrome-disables-http2-nearly-everyone-may-31st-2016/)。
如果HTTP / 2适用于其他浏览器(例如Opera或Firefox),那就是原因。