Linux服务器部署HTTPS

HTTPS的实现

    1、http想实现为https 就需要为配置ssl,及其使用的证书。这些在http里有专门的mod_ssl模块来支持。

        yum -y install mod_ssl  #安装mod_ssl模块

    安装该模块后,它会自动修改配置文件,增加LoadModule ssl_module modules/mod_ssl.so在httpd的子配置文件/etc/httpd/conf.d/ssl.conf里,同时也打开了443端口,同时指定了证书的存放路径。

    原因是安装的时候,安装包里会有脚本去生成私钥文件/etc/pki/tls/private/localhost.key,同时也生成证书文件/etc/pki/tls/certs/localhost.crt,而这个证书文件是自签名的,此时https网站已经可以访问,但是由于这个https服务器的证书有问题,颁发给的机构不对,不是对应的站点名称。所以需要要重新向CA申请,在获取CA颁发的证书后才能正确使用https站点。

    2、申请证书

    

首先需要实现HTTPS就必须要购买SSL证书,申请网址 https://cloud.lyzmz.com

      证书签发完成后,会得到证书包请根据网站环境选择下载

     

    3、修改配置文件:/etc/httpd/conf.d/ssl.conf  需要修改的就是下面这几项

      DocumentRoot  /var/www/html  #指明共享文件的根目录,这个目录会覆盖/etc/httpd/conf/http.conf里的设置

      ServerName  www.Webname.com  #指明这个Web网站服务器的名字

      SSLCertificateFile /etc/httpd/ssl/httpd.crt  #指明证书存放的位置

      SSLCertificateKey  /etc/httpd/ssl/httpd.key   #指明私钥文件的存放位置

      SSLCACertificateFile  /etc/httpd/ssl/cacert.pem  #指明根证书的存放位置

    4、重新加载配置

      service  httpd  reload  #重载配置文件

    5、测试是否配置成功

      测试命令:

      openssl s_client [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]

      例:openssl s_client -connect  HostIP:443  #如果出现证书文件内容,则说明https已经搭建成功

      这里的HostIP也可以写成你的服务器域名,前提是你的域名已经在DNS服务器上做过域名解析了。

    6、http重定向到https

    重定向就是将http 请求转发至https 的URL。一般用户在向Web服务器请求文件时不会专门记这个网站是否为加密网站。所以就需要在服务端自动的将用户的http请求转换为https请求。

    这里建议将http和https的主站点设置为同一个站点。因为跳转会将设置目录下的所有http请求进行跳转,如果https没有http站点的目录,比如http默认主站点是/var/www/html/,但是https下的主站点是/var/www/https,而且没有/var/www/https/web这个站点,当有请求去请求这个/var/www/https/web页面时,则跳转会显示网页不存在而导致网页打不开。

    重定向:

    (1)基于redirect进行跳转

      基于redirect的跳转需要服务器内配置跳转文件,并指明跳转的路径。

      redirect的语法格式:

       redirect [status] URL-path URL

        status 的两个状态:

         Permanent:Returns a permanent redirect status(301) indicating that the resource has moved permanently(永久跳转)

         Temp:Returns a temporary redirect status (302).This is the default(临时跳转)

     例:vim /etc/httpd/conf.d/redirect.conf

        redirect Permanent  /var/www/html  https://www.Webname.com  #添加一条跳转路径,指明跳转后的根目录

 

    (2)基于HSTS跳转

      目前主流都是采用HSTS(HTTP StrictTransport Security)技术进行跳转。服务器端配置支持HSTS后,会在给浏览器返回的HTTP首部中携带HSTS字段。浏览器获取到该信息后,会将所有HTTP访问请求在内部做重写307 跳转到HTTPS。而无需任何网络过程。当客户端第一次发http请求过来,服务器端响应https的结果给客户端,客户端会把这个响应缓存下来,下次客户端浏览器再次访问的时候,在浏览器端自动会将http转换为https,然后以https发请求给服务器。HSTS可以很大程度上解决SSL剥离攻击,因为只要浏览器曾经与服务器创建过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP。

    HSTS preload list

      HSTS preload list是Chrome浏览器中的HSTS预载入列表,在该列表中的网站,使用Chrome浏览器访问时,会自动转换为HTTPS。Firefox、Safari、Edge浏览器也会采用这个列表。这个是在浏览器内配置的,所以是要网站向各浏览器服务商申请,浏览器才会支持的。

    配置HSTS转发:

    vim  /etc/httpd/conf/httpd.conf

      Header always set Strict-Transport-Security "max-age=63072000"  #告诉浏览器下次需要用https进行访问,这个信息的失效时间为两年

      RewriteEngine   on  #打开重写引擎

      RewriteRule  ^(/.*)$   https://%{HTTP_HOST}$1 [redirect=301]  #定义重写规则

  最后,修改完成后不要忘了重新加载配置。


已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页