0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何配置服务器使用 HTTPS

Linux爱好者 2018-02-09 15:17 次阅读

大家好!分享即关怀,我们很乐意与你分享其他的一些知识。我们准备了一个 Nginx 指南,分为三个系列。如果你已经知道一些 Nginx 知识或者想扩展你的经验和认知,这个再合适不过了。

我们将告诉你 Nginx 的运作模式、蕴含的概念,怎样通过调优 Nginx 来提高应用性能,或是如何设置它的启动和运行。

这个教程有三个部分:

基本概念—— 这部分需要去了解 Nginx 的一些指令和使用场景,继承模型,以及 Nginx 如何选择 server 块,location 的顺序。

性能—— 介绍改善 Nginx 速度的方法和技巧,我们会在这里谈及 gzip 压缩,缓存,buffer 和超时。

SSL 安装—— 如何配置服务器使用 HTTPS

创建这个系列,我们希望,一是作为参考书,可以通过快速查找到相关问题(比如 gzip 压缩,SSL 等)的解决方式,也可以直接通读全文。为了获得更好的学习效果,我们建议你在本机安装 Nginx 并且尝试进行实践。

SSL 和 TLS

SSL(Socket Secure Layer 缩写)是一种通过 HTTP 提供安全连接的协议。

SSL 1.0 由 Netscape 开发,但由于严重的安全漏洞从未公开发布过。SSL 2.0 于 1995 年发布,它存在一些问题,导致了最终的 SSL 3.0 在 1996 年发布。

TLS(Transport Layer Security 缩写)的第一个版本是作为 SSL 3.0 的升级版而编写的。之后 TLS 1.1 和 1.2 出来了。现在,就在不久之后,TLS 1.3 即将推出(这确实值得期待),并且已经被一些浏览器所支持。

从技术上讲,SSL 和 TLS 是不同的(因为每个协议都描述了协议的不同版本),但其中使用的许多名称是可以互换的。

基本 SSL/TLS 配置

为了处理 HTTPS 流量,你需要具有 SSL/TLS 证书。你可以通过使用 Let’s encrypt 以生成免费的证书。

当你拥有证书之后,你可以通过以下的方式轻易切换至 HTTPS:

开始监听端口 443(当你输入 https://sample.co时浏览器将使用的默认端口)

提供证书及其密钥

server{

listen443ssldefault_server;

listen[::]:443ssldefault_server;

ssl_certificate/etc/nginx/ssl/netguru.crt;

ssl_certificate_key/etc/nginx/ssl/netguru.key;

}

我们也想通过调整配置实现:

仅使用 TLS 协议。由于众所周知的漏洞,所有的 SSL 版本都将不再使用

使用预定义的安全的服务器密码(类似于协议的情况 – 那些日子只有少数密码被认为是安全的)

请牢记,上述设置总是在变化的。时不时重新更新是个好主意。

ssl_protocolsTLSv1TLSv1.1TLSv1.2;

ssl_ciphersEECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:!MD5;

ssl_prefer_server_cipherson;

server{

listen443ssldefault_server;

listen[::]:443ssldefault_server;

ssl_certificate/etc/nginx/ssl/netguru.crt;

ssl_certificate_key/etc/nginx/ssl/netguru.key;

}

TLS 会话恢复

使用 HTTPS,在 TCP 之上需要增加 TLS 握手。这大大增加了此前实际数据传输的时间。假设你从华沙请求 /image.jpg,并接入到柏林最近的服务器:

如何配置服务器使用 HTTPS

为了在 TLS 握手期间节省一个 roundtrip 时间,以及生成新密钥的计算开销,我们可以重用在第一个请求期间生成的会话参数。客户端和服务器可以将会话参数存储在会话 ID 密钥的后面。在接下来的 TLS 握手过程中,客户端可以发送会话 ID,如果服务器在缓存中仍然有正确的条目,那么会重用前一个会话所生成的参数。

server{

ssl_session_cacheshared:SSL:10m;

ssl_session_timeout1h;

}

OCSP Stapling

SSL 证书可以随时撤销。浏览器为了知道给定的证书是否不再有效,需要通过在线证书状态协议 (Online Certificate Status Protocol ,OCSP) 执行额外的查询。无需用户执行指定的 OCSP 查询,我们可以在服务器上执行此操作,缓存其结果,并在 TLS 握手期间为客户端提供 OCSP 响应。它被称为OCSP stapling。

server{

ssl_staplingon;

ssl_stapling_verifyon;#verifyOCSPresponse

ssl_trusted_certificate/etc/nginx/ssl/lemonfrog.pem;#tellnginxlocationofallintermediatecertificates

resolver8.8.8.88.8.4.4valid=86400s;#resolutionoftheOCSPresponderhostname

resolver_timeout5s;

}

Security headers

有一些标头确实值得调整以提供更高的安全性。有关更多关于标头及其详细信息,你绝对应该查看OWASP 项目之安全标头。

HTTP Strict-Transport-Security

或简称 HSTS,强制用户代理在向源发送请求时使用 HTTPS。

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

X-Frame-Options

表示浏览器是否需要在一帧、一个 iframe 或一个对象标签中渲染页面。

add_header X-Frame-Options DENY;

X-Content-Type-Options

此选项将阻止浏览器在判断文件类型时嗅探文件。文件将会按照 Content-Type 头中声明的格式转译。

add_header X-Content-Type-Options nosniff;

Server tokens

另一个很好的做法是在 HTTP 响应头字段中隐藏有关 Web 服务器的信息:

Server : nginx/1.13.2

实现此功能可以通过禁用 server_tokens 指令:

server_tokens off;

附录 :: Let’s Encrypt

安装

最新的安装包可以在这里找到。

为了测试使用暂存环境,不排除速率限制。

生成新证书

certbotcertonly--webroot--webroot-path/var/www/netguru/current/public/\

-dfoo.netguru.co\

-dbar.netguru.co

确保能够正确更新。

certbot renew --dry-run

确保你在 crontab 添加了自动更新。运行 crontab -e,同时添加下边一行代码

3 * * * /usr/bin/certbot renew --quiet --renew-hook "/usr/sbin/nginx -s reload"

检查 SSL 是否能够通过 ssllabs 正常运行。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SSL
    SSL
    +关注

    关注

    0

    文章

    125

    浏览量

    25739
  • nginx
    +关注

    关注

    0

    文章

    149

    浏览量

    12173
  • https
    +关注

    关注

    0

    文章

    51

    浏览量

    6133

原文标题:Nginx 教程(3):SSL 设置

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    vsftpd服务器的安装与配置

    Linux常用服务器搭建ftp服务器--一般远程链接服务器使用较多
    发表于 07-04 13:37

    RCB2系统服务器使用介绍

    《西子奥的斯服务器LCB2RCB2服务器使用[技术专攻]》由会员分享,可在线阅读,更多相关《西子奥的斯服务器LCB2RCB2服务器使用[技术专攻](49页珍藏版)》请在人人文库网上搜索
    发表于 09-06 07:50

    如何基于HTTP Web服务器示例实现TLS HTTPS服务器

    我正在尝试基于此 HTTP Web 服务器示例实现 TLS HTTPS 服务器https://github.com/STMicroelectronics/x-cube-azrtos-
    发表于 01-04 06:23

    AT32基于mbed TLS的HTTPS服务器

    AT32基于mbed TLS的HTTPS服务器介绍如何使用mbed TLS 搭建一个HTTPS 服务器,用户可以根据自己的应用去编写网页内容的同时,又简单地将传输数据加密。
    发表于 10-26 08:24

    np312-串口服务器使用说明

    np312-串口服务器使用说明:介绍了np312是一款具备连网能力的高性能串口设备联网服务器
    发表于 04-02 10:37 33次下载

    如何配置设置建立dhcp服务器

    如何配置设置建立dhcp服务器    DHCP服务器典型配置实例 常见的DHCP组网方式可分为两类
    发表于 01-30 17:19 3625次阅读
    如何<b class='flag-5'>配置</b>设置建立dhcp<b class='flag-5'>服务器</b>

    如何配置基于Win 2003 的服务器

    如何配置基于Win 2003 的服务器 概要   本文介绍了如何配置基于 Windows Server 2003 的服务器,以便当计
    发表于 01-29 11:31 615次阅读

    如何配置Win 2003的DNS服务器

    如何配置Win 2003的DNS服务器 概要   本文介绍了如何配置“域名系统”(DNS) 服务器,使其承载可从外
    发表于 01-29 11:35 653次阅读

    服务器的基本配置_服务器配置怎么看

    本文主要阐述了服务器的基本配置服务器配置的查看方法。
    的头像 发表于 07-24 10:16 3.4w次阅读
    <b class='flag-5'>服务器</b>的基本<b class='flag-5'>配置</b>_<b class='flag-5'>服务器</b>的<b class='flag-5'>配置</b>怎么看

    AN4108_如何搭建用于家庭智能耗电显示的HTTPS服务器

    AN4108_如何搭建用于家庭智能耗电显示的HTTPS服务器
    发表于 11-21 12:57 0次下载
    AN4108_如何搭建用于家庭智能耗电显示的<b class='flag-5'>HTTPS</b><b class='flag-5'>服务器</b>

    AN4108_如何搭建用于家庭智能耗电显示的HTTPS服务器

    AN4108_如何搭建用于家庭智能耗电显示的HTTPS服务器
    发表于 11-21 17:06 0次下载
    AN4108_如何搭建用于家庭智能耗电显示的<b class='flag-5'>HTTPS</b><b class='flag-5'>服务器</b>

    linux查看服务器配置

    在Linux操作系统中,了解服务器配置对于系统管理员和网络工程师而言至关重要。通过查看服务器配置,您可以了解服务器的硬件和软件组成部分,包括
    的头像 发表于 11-17 09:41 1129次阅读

    租用和托管是两种主要的服务器使用方式

    租用和托管是两种主要的服务器使用方式。租用是由服务提供商提供硬件,负责基本软件的安装、环境配置,确保服务器上基本服务功能的正常运行。而托管则
    的头像 发表于 12-13 09:33 433次阅读

    云存储服务器怎么配置

    云存储服务器配置是一个复杂的过程,涉及到硬件、软件、网络等多个方面。 云存储服务器配置概述 云存储是一种基于互联网的存储方式,用户可以通过网络访问存储在远程
    的头像 发表于 07-02 09:15 873次阅读

    配置rsyslog服务器

    配置rsyslog服务器
    的头像 发表于 11-11 11:13 229次阅读
    <b class='flag-5'>配置</b>rsyslog<b class='flag-5'>服务器</b>