网站安装SSL证书及HTTPS协议配置

注意

文章内所有配置仅适用于安装Apache2.4的Centos7服务器

一:环境

系统:

阿里云轻量云服务器,搭载CentOs7系统,内核版本:

Linux version 3.10.0-514.26.2.el7.x86_64

网站环境:

Apache/2.4.6

PHP 7.1.29

MariaDB-5.5.60

网站配置:

程序:Wordpress 5.2

地址:https://www.oneme.top/

二:https的简介

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

HTTPS和HTTP的区别

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

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

HTTPS和HTTP的区别主要为以下四点:

一、https协议需要到ca申请证书,一般免费证书很少,需要交费。

二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

四、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

三:SSL简介

SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

工作流程

SSL记录协议(Record Protocol)为SSL连提供两种服务。 [2]

(1)保密性:利用握手协议所定义的共享密钥对SSL净荷(Payload)加密。

(2)完整性:利用握手协议所定义的共享的MAC密钥来生成报文的鉴别码(MAC)。

SSL的工作过程如下。

(1)发送方的工作过程为:

从上层接受要发送的数据(包括各种消息和数据);

对信息进行分段,分成若干纪录;

使用指定的压缩算法进行数据压缩(可选);

使用指定的MAC算法生成MAC;

使用指定的加密算法进行数据加密;

添加SSL记录协议的头,发送数据。

(2)接收方的工作过程为:

接收数据,从SSL记录协议的头中获取相关信息;

使用指定的解密算法解密数据;

使用指定的MAC算法校验MAC;

使用压缩算法对数据解压缩(在需要进行);

将记录进行数据重组;

将数据发送给高层。

SSL记录协议处理的最后一个步骤是附加一个SSL记录协议的头,以便构成一个SSL记录。SSL记录协议头中包含了SSL记录协议的若干控制信息。

四:申请SSL证书

  1. 首先我们需要申请SSL证书,我这里申请的是阿里云的免费SSL证书Symantec。
  2. 申请下来后,我们会获得三个文件,这里以我的网站为演示网站,分别为:

2271095_www.oneme.top.key

2271095_www.oneme.top_chain.crt

2271095_www.oneme.top_public.crt

五:上传并安装SSL证书

  1. 首先确实你的服务器是否安装有Apache的SSL模块,可以使用命令:httpd –M 来查看Apache所加载的模块
  2. 如果没有我们需要安装ssl模块,使用命令yum -y install mod_ssl 来安装ssl模块
  3. 安装完之后/etc/httpd/conf.d目录下会出现一个conf文件,接下来我们需要将下载的三个证书文件上传至/etc/httpd/conf.d文件夹下
  4. 使用vim /etc/httpd/conf.d/ssl.conf 来编辑该文件,将文件中的

SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt

替换为

SSLCertificateFile /etc/httpd/conf.d/2271095_www.oneme.top_public.crt

SSLCertificateKeyFile /etc/httpd/conf.d/2271095_www.oneme.top.key

SSLCertificateChainFile /etc/httpd/conf.d/2271095_www.oneme.top_chain.crt

保存并退出

  1. 重启apache服务 命令:service httpd restart
  2. 打开浏览器查看(证书有效)

六:网站重定向https

配置完SSL证书后我们访问网站会发现,使用http://www.oneme.top或者https://www.oneme.top都能访问网站,但是我们只想使用https来访问网站,因此需要将对http://www.oneme.top 的请求访问全部重定向至https://www.oneme.top 步骤如下 :

  1. 修改apache的配置文件:命令vim /etc/httpd/conf/httpd.conf
  2. 将其中的AllowOverride None 修改为AllowOverride All并添加一行LoadModule rewrite_module modules/mod_rewrite.so
  3. 保存退出 执行命令 httpd –M查看是否加载rewrite_module如果加载了就是正确的
  4. 接着我们执行命令 vim /var/www/html/.htaccess 输入如下内容:

<IfModule mod_rewrite.c>

Options +FollowSymlinks -Multiviews

RewriteEngine On

RewriteCond %{SERVER_PORT} 80

RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

</IfModule>

  1. 保存退出并重启apache服务 service httpd restart
  2. 测试结果正常http全部重定向为https
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值