专栏首页idealclover的填坑日常从零开始折腾博客(5):全站从http升级到https

从零开始折腾博客(5):全站从http升级到https

HTTPS 介绍

HTTPS=HTTP+SSL,简单讲是HTTP的安全版,即HTTP下加入SSL层。相比HTTP,HTTPS提供了内容加密,身份认证,数据完整性的功能,可以有效地规避采取明文传输的HTTP的窃听风险,篡改风险和冒充风险,使得我们的网站更加有逼格有安全性。

而且很重要的一点是,2015年新发布的,HTTP新协议HTTP/2必须基于 HTTPS 部署。HTTP/2相比HTTP/1.1协议,增加了支持多路复用,二进制分帧,首部压缩,服务端推送等新特性,能够大幅度提升WEB性能。而至于HTTP/2到底是什么,如何进行设置,也许以后会进行详细的介绍。

升级到HTTPS

在进行正式的升级之前,麻烦进行最重要的操作: 备份!备份!备份! 这是极其重要且必须的一步。即便你自认为技术深厚,对服务器熟悉也不要忽视升级前做好网站备份。

接下来我们正式开始进行

购买,下载和安装证书

升级到 HTTPS 协议的第一步,就是要获得一张证书。SSL证书有付费也有免费的,当然价格其实并不很高。 证书是一个二进制文件,里面包含经过认证的网站公钥和一些元数据,要从经销商购买。 当然,为了推广HTTPS协议,EFF成立了 Let's Encrypt,提供免费证书和安装工具,使得我们可以从 Let's Encrypt 获得网站域名的免费的证书。

Let's Encrypt的一键安装程序为centbot,网站 https://certbot.eff.org/ 以我的服务器环境CentOS6+Apache为例

首先下载centbot

# wget https://dl.eff.org/certbot-auto
# chmod a+x certbot-auto

之后进行安装,下面两行命令分别是自动安装和只安装证书。

# sudo ./certbot-auto --apache #自动安装
# sudo ./certbot-auto --apache certonly #只安装证书

由于自己进行自动安装会出现莫名其妙的bug,所以选择了下面的手动安装选项。

而在此期间也出现了一点bug

ImportError: No module named virtualenv

原因是没有安装virtualenv,解决方案自然是通过pip安装

pip install virtualenv

之后又出现了问题

Failed to find executable apachectl in PATH: /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

最开始以为是apache的问题,于是在yum上重新安装了apache,结果反而降了级出现各式各样的问题,真想手动给yum一个大大的微笑:) 其实问题只是因为自己的apache安装在了/etc/apache2目录下,centbot找不到apahe的安装路径,设置一下就好了。

# sudo ./certbot-auto --apache-server-root /usr/local/apache certonly

之后会进行邮箱,域名的配置。如果需要同时配置多个域名,域名间以空格或半角逗号相间隔就好。 最后配置成功会提示两个.pem文件的位置。

配置apache

理论上讲使用自动安装的同学是会自动配置Apache的,可以跳过这一步直接享用https试试看。 打开apache的配置文件httpd.conf,一般在apache的根目录下,或者可以直接搜索。

# vim /usr/etc/apache/conf/httpd.conf

找到如下代码

# LoadModule ssl_module modules/mod_ssl.so
# Include conf/extra/httpd-ssl.conf

去掉前面的注释 之后找到conf目录下etc目录下的httpd-ssl.conf,配置ssl设置

DocumentRoot "网站根目录"
ServerName 网站域名
ServerAdmin 网站管理员
SSLCertificateFile "网站认证文件路径"
SSLCertificateKeyFIle "网站认证key文件路径"

上面两个文件路径都在设置完成的提示中可以找到 设置完成之后重启apache,试着访问一下https://你的域名,看看是否能够成功

301重定向

将网站升级到HTTPS后,需要对原来http的页面做强制重定向到https,以提高网站的安全性。 相应方法就是配置前面说的etc目录下的httpd-vhosts.conf,添加如下代码

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

之后重启apache,试着访问http://你的域名,看看是否跳转。

希望大家都能有一个安全幸福的小网站啦~

参考资料

http://www.ruanyifeng.com/blog/2016/08/http.html http://www.ruanyifeng.com/blog/2016/08/migrate-from-http-to-https.html https://zhuanlan.zhihu.com/p/26857742 https://community.letsencrypt.org/t/problem-install-certbot-in-server/27100/4 http://blog.ttionya.com/article-825.html https://www.howtoing.com/apache-redirect-http-to-https

版权声明

本作品由idealclover采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可,转载请注明出处。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Hyperledger Fabric环境搭建

    安装Docker的方法有多种,使用apt-get安装的版本较低。一些教程上的安装方法不适合国内环境

    idealclover
  • XAMPP+PhpStorm+Xdebug调试本地网页

    因为要折腾自己的Wordpress博客,所以不得已入坑了世界上最好的语言qwq第一步就是所说的配置本地的调试环境啦~总不能一上来就在服务器上写吧orz

    idealclover
  • 记录一次简单的博客升级w

    从过年开始一直被闷在家里,少了出门和小伙伴耍的快落~每天在家里就是对着电脑忙各种事情(指摸鱼),于是总想着找点事情做做,正好看自己的小博客也不太顺眼了就想着升一...

    idealclover
  • nodejs的事件处理机制

    类似于javascript客户端代码中存在由元素触发的事件机制,在nodejs中,也有由对象触发的事件处理机制,比如http.Server对象,就可能会触发'接...

    前端_AWhile
  • 【PAT乙级】A + B和C

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    喜欢ctrl的cxk
  • Recon-ng被动信息收集框架入门

    在web渗透测试中,信息侦察与收集相当重要,每个经验丰富的黑客都有自己独特的信息收集妙招,信息搜集是渗透的第一步,也是至关重要的一步,信息的多少决定攻击的范围有...

    轩辕小子
  • Android手机可变电脑可解决日常办公玩游戏 免费应用

    空木白博客
  • 基础练习 分解质因数

      每行输出一个数的分解,形如k=a1*a2*a3...(a1<=a2<=a3...,k也是从小到大的)(具体可看样例)

    刘开心_1266679
  • Linux知识体系之磁盘与档案系统管理

    硬盘的物理组成:由许许多多的圆形硬盘盘所组成。宜居硬盘盘能够容纳的数据量,而有所谓的单碟或者多碟。

    用户3003813
  • Node核心模块篇:HTTP

    HTTP协议是世界上广泛使用的应用层通信协议,而通过Node的核心模块HTTP,我们可以方便快速的构建自己的HTTP服务器和客户端,并在两者之间进行通信传递数据...

    凌虚

扫码关注云+社区

领取腾讯云代金券