nginx(3)、nginx https配置

转自 http://blog.csdn.net/linux_player_c/article/details/49760443

nginx下的https配置

https是什么?

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安 全全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使 用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。

https与http的区别

https协议需要到ca申请证书,一般免费证书很少,需要交费。 http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议 http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。

http的连接很简单,是无状态的 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全 HTTPS解决的问题:

1 . 信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server 的时候,客户度才信任次主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server.

2 . 通讯过程中的数据的泄密和被窜改

一般意义上的https, 就是 server 有一个证书.

a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样.

b) 服务端和客户端之间的所有通讯,都是加密的. i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程. ii. 加下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也就没有什么意义了.

少许对客户端有要求的情况下,会要求客户端也必须有一个证书.

a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份.

b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体.像我用的交通银行的网上银行就是采取的这种方式。 HTTPS 一定是繁琐的. a) 本来简单的http协议,一个get一个response. 由于https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返. i. 任何应用中,过多的round trip 肯定影响性能. b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密. i. 尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求.

ssl证书

安全套接字层(SSL) 技术通过加密信息和提供鉴权,保护您的网站安全。

SSL证书 SSL证书 
一份 SSL 证书包括一个公共密钥和一个私用密钥。公共密钥用于加密信息,私用密钥用于解译加密的信息。浏览器指向一个安全域时,SSL 同步确认服务器和客户端,并创建一种加密方式和一个唯一的会话密钥。它们可以启动一个保证消息的隐私性和完整性的安全会话。

SSL的工作原理[2] 中包含如下三个协议: 
握手协议(Handshake protocol) 
记录协议(Record protocol) 
警报协议(Alert protocol)

1、握手协议 
握手协议是客户机和服务器用SSL连接通信时使用的第一个子协议,握手协议包括客户机与服务器之间的一系列消息。SSL中最复杂的协议就是握手协议。该协议允许服务器和客户机相互验证,协商加密和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。握手协议是在应用程序的数据传输之前使用的。

2、记录协议 
记录协议在客户机和服务器握手成功后使用,即客户机和服务器鉴别对方和确定安全信息交换使用的算法后,进入SSL记录协议,记录协议向SSL连接提供两个服务: 
(1)保密性:使用握手协议定义的秘密密钥实现 
(2)完整性:握手协议定义了MAC,用于保证消息完整性

3、警报协议 
客户机和服务器发现错误时,向对方发送一个警报消息。如果是致命错误,则算法立即关闭SSL连接,双方还会先删除相关的会话号,秘密和密钥。每个警报消息共2个字节,第1个字节表示错误类型,如果是警报,则值为1,如果是致命错误,则值为2;第2个字节制定实际错误类型。

nginx环境下搭建https配置

我们清楚https是采用加密的方式进行web访问,在nginx配置中也可以通过对配置文件的修改达到nginx的加密访问。具体的操作过程如下所示:

1.修改配置文件; 
2.使用openssl生成加密文件(数字证书) 
3.重新加载nginx配置文件后进行浏览器访问

修改nginx的配置文件:

(1)进入nginx配置文件目录,修改主配置文件nginx.conf:

[root@server5 conf]# pwd 
/usr/local/lnmp/nginx/conf 
[root@server5 conf]# vim nginx.conf

这里写图片描述

这里有几点需要注意,https的默认端口是443,而不是http服务器的80端口,接下来需要生成ssl数字证书。

生成ssl数字证书

进入/etc/pki/tls/certs目录,使用make命令生成证书: 
这里写图片描述

填写证书信息后就会得到数字证书文件nginx.pem: 
这里写图片描述

重新加载nginx配置文件并访问

将nginx.pem文件拷贝到nginx的配置文件所在目录:

[root@server5 certs]# cp nginx.pem /usr/local/lnmp/nginx/conf/

将nginx命令加载到全局变量中: 
[root@server5 conf]# ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/bin/

检测并重新加载nginx配置文件: 
这里写图片描述

打开浏览器访问nginx的https协议地址,https://192.168.3.245 
这里写图片描述

点击“add exception”: 
这里写图片描述

点击confirm确认该认证,可以看到https://192.168.3.245的页面内容 
这里写图片描述

小结: 
上述内容就是我们nginx的https配置,希望大家能够掌握。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值