搭建https

本文介绍了HTTPS协议的原理,对比了HTTP与HTTPS的区别,并详细阐述了如何在Apache和Nginx服务器上配置HTTPS,包括申请免费SSL证书的步骤。同时,文章提到了正向代理与反向代理的概念,以及自动续期证书的工具letsencrypt-win-simple。

一,了解https协议

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。

HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS(全称: Hypertext Transfer Protocol Secure,超文本传输安全协议),

是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议。它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

Http与https的区别如下:        

              HTTP                                    HTTPS

应用层:SMTP,Http                

 

应用层:SMTP,Http

SSL

TCP

TCP

IP

IP

 

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。在采用 SSL 后,HTTP 就拥有了 HTTPS 的加密、证书和完整性保护这些功能。SSL 是独立于 HTTP 的协议,所以不光是 HTTP 协议,其他运行在应用层的 SMTP和 Telnet 等协议均可配合 SSL 协议使用。可以说 SSL 是当今世界上应用最为广泛的网络安全术。

       多种WEB服务器中间件都支持https配置,比如:Tomcat, Nginx, IIS,Apache

本文介绍如何申请证书和在Apache和Nginx下配置。

       在介绍具体的配置之前先了解一下代理的概念,下以第二节内容将介绍正向代理与反向代理。

二,代理服务

       代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。

形象的说:它是网络信息的中转站。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

正向代理(forward proxy):为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。

正向代理,其实是“代理服务器”代理了“客户端”,去和“目标服务器”进行交互,最典型的例子就是翻墙上网。

 

反向代理(reverse proxy):是指以代理服务器来接受Internet上的连接请求,然后将请求转发给网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

反向代理,其实是"代理服务器"代理了"服务器",去和"客户端"进行交互

 

正向代理的用途

  • 突破访问限制 
  • 提高访问速度
  • 隐藏客户端真实IP

反向代理的用途

  • 隐藏服务器真实IP
  • 负载均衡
  • 提高访问速度
  • 提供安全保障

本文介绍的通过apache和nginx 配置https,其实也就是反向代理。

三,申请证书

SSL证书种类有以下三种

域名型证书(DVSSL):信任等级一般,只需验证网站的真实性便可颁发证书保护网站;

企业型证书(OVSSL):信任等级强,须要验证企业的身份,审核严格,安全性更高;

扩展型证书(EVSSL):信任等级最高,一般用于银行证券等金融机构,审核严格,安全性最高,同时可以激活绿色网址栏。

       证书一般需要购买,现在有很多提供证书购买的服务商,这里介绍免费的证书申请,过程简单方便,但有效期最长为一年。

1,https://freessl.org/ 这个网址可以申请免费的https证书,注意域名可以是顶级域名,二级域名,但不能带有端口号,不能带有上下文。免费的证书有三个品牌可选择,

虽然亚州诚信的品牌有效期为一年,但选择第三个品牌Let’s Encrypt,比较容易验证通过。如果验证不通过,可以按该网站的提示,等待一段时间后再提交验证。

拥有一个可用的域名,并且对域名的webroot具有读写权利。LetsEncrypt会在域名所在的服务下创建一个文件供letsencrypt服务器调用,判断你是否对该域名具有所有权。

输入你的域名,选择品牌,点击 创建免费的SSL证书:

 

2,提示:输入邮件,验证类型选择“文件验证”

 

3,文件验证:会生成一个txt文件,文件里有一串值,将文件放到你域名映射的服务目录中,然后会验证该域名是否属于你的。步骤如下:

1)创建目录:在服务的目录里创建.well-known目录(建议在根目录里创建),默认在win系统中不能创建带点的目录,由于.well-known目录无法直接新建,可以用cmd命令,md .well-known ,如下:

 

2)下载文件:将文件放到你服务器中指定的路径中(根目录),并在浏览器输入 “文件路径”,看是浏览器否能访问显示“记录值”,能访问说明文件路径正常。

3)然后点击验证。

 

4,提示:如果文件能访问,但验证失败,可以过10分钟后再点击验证。直到验证通过。然后下载证书。证书是个压缩包,解压后得到full_chain.pem和private.key。

 

四,用Apache配置HTTPS

提示:这里用apache2.4版本。

打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,

找到 #LoadModule ssl_module modules/mod_ssl.so,将#号去掉

找到 #Include conf/extra/httpd-ssl.conf ,将#号去掉

找到 ServerName,值改成xxx.xxx.xxxcom(就是申请的域名)

找到 Define SRVROOT,值改成 apache路径

找到 Listen,值改成9988(这是apache的端口号,可以取一个已开放的任意端口)

以下是配置apache与项目服务的关联,假设项目服务放在10.1.40.178,服务访问端口为8080:

       ProxyPass / http://10.1.40.178:8080/

       ProxyHTMLURLMap http://10.1.40.178:8080/ /

       <Location />

         ProxyPassReverse  http://10.1.40.178:8080/

         ProxyHTMLURLMap /      /

         <Limitexcept POST GET>

              Require all denied

         </Limitexcept>

       </Location>

打开 apache 安装目录下 conf/extra 目录中的 httpd-ssl.conf 文件

找到 SSLProtocol all ,改成 SSLProtocol all -SSLv2 -SSLv3

找到 SSLCipherSuite,值改成

AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL

在conf目录中新建目录ssl,将证书文件full_chain.pem和private.key放进来。

找到SSLCertificateKeyFile,值改成 conf/ssl/private.key

找到SSLCertificateChainFile,值改成 conf/ssl/full_chain.pem

找到 SSLCertificateFile,值改成 conf/ssl/full_chain.pem

重启apache,即可访问:

如果重启apache报错,SSLSessionCache shmcb 或 SSLSessionCache         dbm,

在SSLSessionCache和SSLSessionCache 两行前加#号。

 

五,用Nginx配置HTTPS

       1,打开nginx 目录下的conf目录,编辑nginx.conf文件,加入server段:

       server {

              #nginx监听端口,即对外访问端口(修改此配置)

              listen                   443 ssl;

              #申请证书后放到conf/ssl目录中

              ssl_certificate     ssl/full_chain.pem;

              ssl_certificate_key ssl/private.key;

              server_name      ~.*;

              access_log   logs/access.log  main;                 

              location / {

              #即原服务的访问地址,假设原服务的地址是10.1.40.178:8080

              proxy_pass   http:// 10.1.40.178:8080;

              }

2,conf目录中新建目录ssl,将证书文件full_chain.pem和private.key放进来

3,执行nginx目录下的nginx.exe 即可。

提示:所在服务器必须开放443端口。

 

六,自动申请及续期工具

由于免费的证书有期限限制,到期需要手工续期比较麻烦,可以用自动续期工具letsencrypt-win-simple。下载地址:

http://files.cnblogs.com/files/teamblog/letsencrypt-win-simple.V1.9.1.zip

操作步骤如下:

1,运行letsencrypt.exe

2,首次使用需要填写邮箱,用于证书过期的邮件提醒。

3,选m申请证书。

4,接着填入需要申请证书的域名。

5,最后填入服务所在的路径。

6,添加windows自动更新计划

Letsencrypt会在该目录下生成验证文件并通过域名访问该文件。成功便发放证书。最后会询问你是否加入到windows计划任务中,选y。就能完成自动更新证书。

注意:如果要自动续期更新证书,letsencrypt证书申请工具不要移动。因为自动更新计划中更新证书需要用到该文件的letsencrypt.exe。证书默认放在

C:\Users\Administrator\AppData\Roaming\letsencrypt-win-simple\httpsacme-v01.api.letsencryp t.org。所以可以将apache或nginx配置中的证书路径指定这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值