2017.11.06 | 网站相关 | 0 条评论


请注意,本文编写于 715 天前,最后修改于 170 天前,其中某些信息可能已经过时。

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

本文链接:https://idealclover.top/archives/320/

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

标签: 设置, yum, 服务器, apache, usr, 域名, 证书

0

没有评论 T^T