首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零开始折腾博客(5):全站从http升级到https

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

作者头像
idealclover
发布2018-10-31 17:29:36
7840
发布2018-10-31 17:29:36
举报

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 国际许可协议进行许可,转载请注明出处。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HTTPS 介绍
  • 升级到HTTPS
    • 购买,下载和安装证书
      • 配置apache
        • 301重定向
        相关产品与服务
        SSL 证书
        腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档