Nginx上部署HTTPS + HTTP2


Nginx上部署HTTPS依赖OpenSSL库和包含文件,即须先安装好libssl-dev(或者OpenSSL),且ln -s /usr/lib/x86_64-linux-gnu/libssl.so /usr/lib/,然后在编译配置Nginx时要指定–with-http_ssl_module和–with-http_v2_module。另外,若要在本地运行openssl命令,要安装OpenSSL包,本人用的OpenSSL-1.0.2g。注:本文采用Ubuntu 16.04上的操作实例  下图展示了数字证书(HTTPS中使用的由CA签名的公钥证书)的签名和验证原理:TLS保障信息传输安全:对于每一次新的对话(连接握手阶段。这里讲的对话不是HTTP中涉及的应用层对话,而是TLS对话),客户端和服务端都会协商一个对话密钥和对称加密算法(了解更多可参考“加密套件”“四次握手”相关内容)用来加减密信息,这样就避免非对称加减密耗时过长,运算速度更快;而Public/Private密钥对只用于”pre-master key”的加解密。特别地,在连接断开后,旧对话的恢复(两种实现方法:session ID和session ticket)不属于建立新的对话,无需协商一个新的对话密钥和对称加密算法。HTTP2:HTTP2 基于SPDY设计,支持HTTPS。但HTTP2与SPDY不同的是,不强制使用 HTTPS,但目前还没有浏览器支持;HTTP2 消息头的压缩算法采用 HPACK ,而非 SPDY 采用的 DELEFT。HTTP2基本兼容HTTP1.x的语义,只是改变了HTTP1.x的传输方式,在连接中是否使用HTTP2是通过协议协商(NPN、ALPN或Upgrade头)来决定的。HTTP2拥有许多新特性:二进制协议:HTTP2.0协议采用二进制格式,实现方便且健壮;HTTP1.x采用的是文本格式头部压缩:HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源,头压缩能够很好的解决该问题多路复用:多个请求和响应通过一个 TCP 连接并发完成,还支持请求优先级划分和流控制Server Push:服务端可以主动把 JS 和 CSS 文件推送给客户端,而不需要客户端先解析 HTML 再发送这些请求。当客户端需要的时候,它们已经在客户端了  下图是HTTP2 Frame 格式:RFC7540 – Hypertext Transfer Protocol Version 2 (HTTP/2)
    Nginx上部署HTTPS + HTTP2自签发证书:开发测试环境下可以在其他机器上去生成证书,然后再将所生成server.crt和server.key复制一份至Nginx的/usr/local/nginx/conf下即可修改配置文件nginx.conf为减少CPU负载,建议只运行一个工作进程,并且开启keep-alive。另外,version 0.6.7以上的Nginx ssl_certificate和ssl_certificate_key的默认关联目录为nginx.conf所在的目录,默认文件名都为cert.pem重启NginxHTTPS在Nginx上的部署至此已近完毕,然后就可以通过ht t ps : / / YO U R _ D OM A I N N A ME _ H E R E来访问了。由于本例中采用自签发证书(不同于CA自签名的Root证书),在Chrome下将看到如图警告信息,表明该证书不受信任。浏览器在默认情况下内置了一些CA机构的Root证书,这些证书受到绝对信任。     另外,本人在Chromium 58.0.3029.110 和 Firefox53.0.3 下均证实了HTTP2被成功启用:  私钥保护:私钥是重要的财产,尽可能限制能接触到私钥的人在一台可信的计算机上生成私钥和CSR(Certificate Signing Requests)。有一些CA会为你生成密钥和CSR,但这样做明显不妥受密码保护的密钥可以阻止在备份系统中被截获在发现被截获后,撤回老的证书,生成新的密钥和证书每年更新证书,总是使用最新的私钥部署证书链:证书链(Certificate Chain)包括信任锚(CA 证书)和签名证书,是由一系列 CA 证书发出的证书序列,最终以根 CA 证书结束;Web 浏览器已预先配置了一组浏览器自动信任的根 CA 证书,来自其他证书授权机构的所有证书都必须附带证书链,以检验这些证书的有效性。在很多部署场景中,单一的服务器证书显得不足,而多个证书则需要建立一个信任链。一个常见的问题是正确的配置了服务器证书但却搞忘了包含其他所需要的证书。此外,虽然其他证书通常有很长的有效期,但它们也会过期,如果它们过期就会影响整个链条。一个无效证书链会导致服务器证书失效和客户端浏览器报警告,这个问题有时候不是那么容易被检测到,因为有些浏览器可以自己重构一个完整的信任链而有些则不行。关于Nginx上部署证书链:  下图展示了证书链的工作原理:  Nginx上SSL配置指令说明下边只列举了部分,更多配置项可参考http://www.nginx.cn/doc/optional/ssl.html。
ssl开启HTTPSsyntax:ssl [on|off]default:ssl offcontext:main, serverssl_certificate证书文件,默认证书和密钥都位于cert.pem中,该文件还可以包含其他证书。自version 0.6.7起,ssl_certificate的默认关联目录为nginx.conf所在的目录。syntax:ssl_certificate filedefault:ssl_certificate cert.pemcontext:main, serverssl_certificate_key:证书密钥文件,默认密钥位于cert.pem中。自version 0.6.7起,ssl_certificate_key的默认关联目录为nginx.conf所在的目录。syntax:ssl_certificate_key filedefault:ssl_certificate_key cert.pemcontext:main, serverssl_client_certificate:Indicates file with certificates CA in PEM format, utilized for checking the client certificates.syntax:ssl_client_certificate filedefault:nonecontext:main, serverssl_dhparamIndicates file with Diffie-Hellman parameters in PEM format, utilized for negotiating TLS session keys.syntax:ssl_dhparam filedefault:nonecontext:main, serverssl_ciphers:Directive describes the permitted ciphers. Ciphers are assigned in the formats supported by OpenSSL.syntax:ssl_ciphers filedefault:ssl_ciphers ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXPcontext:main, serverComplete list can be looked with the following command:ssl_prefer_server_ciphers:Requires protocols SSLv3 and TLSv1 server ciphers be preferred over the client’s ciphers.syntax:ssl_prefer_server_ciphers [on|off]default:ssl_prefer_server_ciphers offcontext:main, serverssl_protocols:Directive enables the protocols indicated.TLS v1.0以上的版本是比较安全的,最好是弃用SSLv3以下的版本,SSLv2以下坚决不用syntax:ssl_protocols [SSLv2] [SSLv3] [TLSv1]default:ssl_protocol开发云主机域名s SSLv2 SSLv3 TLSv1context:main, serverssl_session_cache:The directive sets the types and sizes of caches to store the SSL sessions.syntax:ssl_session_cache off|none|builtin:size and/or shared:name:sizedefault:ssl_session_cache offcontext:main, serverssl_session_timeout:Assigns the time during which the client can repeatedly use the parameters of the session, which is stored in the cache.syntax:ssl_session_timeout timedefault:ssl_session_timeout 5mcontext:main, server

相关推荐: 使用腾讯云服务器关机后还会计费吗

使用腾讯云服务器关机后还会计费吗?如果买的腾讯云服务器是包年包月预付费模式,关机后肯定还要计费;如果你的腾讯云服务器是按量计费模式,关机后,只有流量的网络费用不收取,其他也是正常收费的。腾讯云服务器关机后还计费的原因:因为你占用了资源,服务器租给你用,别人就租…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 04/02 13:55
Next 04/02 13:55