服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - 详解Nginx服务器中配置全站HTTPS安全连接的方法

详解Nginx服务器中配置全站HTTPS安全连接的方法

2019-11-06 12:06姜南 Nginx

这篇文章主要介绍了详解Nginx服务器中配置全站HTTPS安全连接的方法,其中要点还是在于SSL证书的申请,需要的朋友可以参考下

HTTPS就等于HTTP加上TLS(SSL),HTTPS协议的目标主要有三个:

    数据保密性。保证内容在传输过程中不会被第三方查看到。就像快递员传递包裹时都进行了封装,别人无法知道里面装了什么东西。
    数据完整性。及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收。
    身份校验。保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方。

启用HTTPS之前需要有证书,而证书需要首先在自己服务器上创建CSR,对应的公钥和私钥。这里我全部都拿Nginx服务器举例,Apache也不会差太多,都是基于openssl的。因为我只有一个主机域名www.zzvips.com,所以证书方便选择了COMODO的PositiveSSL,每年9刀。需要注意COMODO要求证书至少是2048位,见下面的命令。激活证书的时候需要注意common name那里要填写自己的域名地址,我因为并不使用zzvips.com,所以这里写的就是www.zzvips.com,需要注意这两个主机地址是不同的。其他的组织名公司名什么的如果没有就写NA,不要留空。下面简单说一下步骤


1、以root登录,升级服务器。这里是为了解决OpenSSL的一个大漏洞CVE-2014-0224,因为ChangeCipherSpec消息的问题可能导致中间人攻击,解密并修改被攻击的服务器和客户端之间的通信,从而获得加密的数据。

查看OpenSSL版本,确认至少在1.0.1h以上,

?
1
openssl version -a

如果没有,升级服务器,以Debian为例

?
1
2
apt-get update
apt-get upgrade

2、创建CSR和私钥

?
1
openssl req -new -newkey rsa:2048 -nodes -keyout www.zzvips.com.key -out www.zzvips.com.csr

得到2个文件,私钥www.zzvips.com.key,CSR文件www.zzvips.com.csr,其中CSR里面的内容在激活证书的时候需要提交

3、购买证书,完成激活,下载证书文件

下载的证书文件通常是一个压缩包,有些是2个文件,有些是4个文件

如果是2个文件,是这样的:

  • www_zzvips_com.ca-bundle
  • www_zzvips_com.crt

如果是4个文件,通常都是这样的:

  • www_zzvips_com.crt
  • COMODORSADomainValidationSecureServerCA.crt
  • COMODORSAAddTrustCA.crt
  • AddTrustExternalCARoot.crt

其中www_zzvips_com.ca-bundle就是自动合并了其他3个文件的产物,一个道理

4、合并证书,顺序一定不能错

?
1
cat www_zzvips_com.crt www_zzvips_com.ca-bundle > www.zzvips.com.crt

或者

?
1
cat www_zzvips_com.crt www_zzvips_com.ca-bundle > www.zzvips.com.crt

最后产生的www.zzvips.com.crt是4个文件的合并,此文件与之前产生的www.zzvips.com.key一起组成了Nginx需要使用的证书

5、把www.zzvips.com.crt和www.zzvips.com.key复制到Nginx的conf目录下,比如/usr/local/nginx/conf/

?
1
cp www.zzvips.com.crt www.zzvips.com.key /usr/local/nginx/conf/

6、修改Nginx配置文件或者vhost/下的虚拟主机配置文件,启用https,配置加密方式等

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#合并80和443配置文件也可以,一起配置,最后强制转移80到443就可以了
listen 80;
listen 443;
 
#指定证书文件
ssl_certificate www.zzvips.com.crt;
ssl_certificate_key www.zzvips.com.key;
 
#禁用不安全的SSLv1 2 3,只使用TLS
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 
ssl_prefer_server_ciphers on;
 
#RC4也是不安全的了,只能去掉
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
 
#301转移
if ($server_port = 80) {
return 301 https://$server_name$request_uri;
}

7、测试Nginx配置文件并重新reload配置文件

?
1
2
Nginx -t
service nginx reload

这样服务器的HTTPS就配置完了。

既然HTTPS非常安全,数字证书费用也不高,那为什么互联网公司不全部使用HTTPS呢?原因主要有两点:

HTTPS对速度的影响非常明显。每个HTTPS连接一般会增加1-3个RTT,加上加解密对性能的消耗,延时还有可能再增加几十毫秒。
HTTPS对CPU计算能力的消耗很严重,完全握手时,web server的处理能力会降低至HTTP的10%甚至以下。

HTTPS为什么会严重降低性能?主要是握手阶段时的大数运算。其中最消耗性能的又是密钥交换时的私钥解密阶段(函数是rsa_private_decryption)。这个阶段的性能消耗占整个SSL握手性能消耗的95%。

然而随着各大网站的相继跟进与硬件的摩尔定律下,为了安全而做这点性能牺牲还是值得的。

延伸 · 阅读

精彩推荐
  • Nginxnginx ssl免密码重启教程详解

    nginx ssl免密码重启教程详解

    这篇文章给大家介绍了nginx 如何启动以及nginx ssl 免密码重启 的方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧 ...

    mrr4272019-11-19
  • Nginx通过Nginx规则重写URL去掉index.php不显示index.php

    通过Nginx规则重写URL去掉index.php不显示index.php

    Nginx不仅占用内存少,并发能力强,而且拓展功能丰富,可以通过安装模板来强化功能,也能通过规则优化,优化服务器并发处理能力,是建站的不二之选...

    Genius日记5872020-10-16
  • NginxNginx location 和 proxy_pass路径配置问题小结

    Nginx location 和 proxy_pass路径配置问题小结

    本文是基于 location 的匹配末尾是否配置 / 和 proxy_pass 末尾是否配置 / ,进行测试,完全还原了整个测试过程,本文给大家介绍Nginx location 基本配置及相关配...

    自由早晚乱余生18742021-09-24
  • Nginx利用nginx和腾讯云免费证书制作https的方法

    利用nginx和腾讯云免费证书制作https的方法

    这篇文章主要介绍了利用nginx和腾讯云免费证书制作https的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    dalaoyang5992019-12-30
  • Nginxnginx rewrite 伪静态配置参数和使用例子

    nginx rewrite 伪静态配置参数和使用例子

    nginx下伪静态配置参数详细说明,使用nginx的朋友,nginx rewrite 伪静态配置参数和使用例子 附正则使用说明 ...

    服务器之家3102019-10-08
  • NginxNginx动静分离实现案例代码解析

    Nginx动静分离实现案例代码解析

    这篇文章主要介绍了Nginx动静分离实现案例代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    盗哥泡茶去了3382020-09-27
  • NginxNginx Rewrite使用场景及代码案例详解

    Nginx Rewrite使用场景及代码案例详解

    这篇文章主要介绍了Nginx Rewrite使用场景及代码案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可...

    盗哥泡茶去了11862020-09-27
  • Nginx如何优化Nginx的处理性能

    如何优化Nginx的处理性能

    Nginx是一个很强大的高性能Web和反向代理服务,它具有很多非常优越的特性,在连接高并发的情况下,Nginx是Apache服务不错的替代品。其特点是占有内存少,...

    Dockone.io5142020-12-11