手机版

在Apache环境下安装SSL证书,然后将http页面301重定向到https

2019-09-29 阅读 :
说明:本文所用服务器为阿里云ECS,系统Ubuntu16.04,Web服务器软件Apache2.4.18。

阿里云颁发的免费 DV SSL证书,下载证书For Apache的时候会有如下说明:

安装证书

文件说明:
证书文件214222927760867.pem,包含两段内容,请不要删除任何一段内容。
如果是证书系统创建的CSR,还包含:证书私钥文件214222927760867.key、证书公钥文件public.pem、证书链文件chain.pem。
( 1 ) 在Apache的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为214222927760867.key;

( 2 ) 打开 apache 安装目录下 conf 目录中的 httpd.conf 文件,找到以下内容并去掉“#”:

#LoadModule ssl_module modules/mod_ssl.so (如果找不到请确认是否编译过 openssl 插件)
#Include conf/extra/httpd-ssl.conf
( 3 ) 打开 apache 安装目录下 conf/extra/httpd-ssl.conf 文件 (也可能是conf.d/ssl.conf,与操作系统及安装方式有关), 在配置文件中查找以下配置语句:

# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3“`
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
#证书公钥配置
SSLCertificateFile cert/public.pem
#证书私钥配置
SSLCertificateKeyFile cert/214222927760867.key
#证书链配置,如果该属性开头有 ‘#’字符,请删除掉
SSLCertificateChainFile cert/chain.pem
( 4 ) 重启 Apache。

( 5 ) 通过 https 方式访问您的站点,测试站点证书的安装配置,如遇到证书不信任问题,请查看帮助视频。

现在开始照做:
以下编辑均使用FlashFXP软件打开相应文档操作,服务器通过控制台或Xshell 5进行连接控制。

1.打开Apache目录 /etc/apache2 并没有httpd.conf,只有apache2.conf,搜索里面也没有所谓的

#LoadModule ssl_module modules/mod_ssl.so (如果找不到请确认是否编译过 openssl 插件)“`
#Include conf/extra/httpd-ssl.conf
注释:找不到可能要安装openssl,用命令
sudo apt-get install openssl
安装即可

2.寻找整个Apache目录发现:
第一行可以在文件夹/etc/apache2/mods-available/中找到ssl.load
打开该文件后取消#LoadModule ssl_module modules/mod_ssl.so中的#即可启动。
3..第二行其实也就是/etc/apache2/mods-available/中的ssl.conf
打开文件后在其中通过搜索找到相应项目进行相应修改

添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3
修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on

4.启用相应设置,将以上配置文件设置软链到mods-enabled文件夹
1). 进入mods-available文件夹

cd /etc/apache2/mods-available/

2). 建立软链接(激活配置)

sudo ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled
sudo ln -s /etc/apache2/mods-available/socache_shmcb.load /etc/apache2/mods-enabled

5.重启apache服务,测试是否有错误

sudo /etc/init.d/apache2 restart

该部分配置到此结束。

下面配置网站相应ssl,激活https 访问:
阿里官方说明后半段中有如下语句

证书公钥配置
SSLCertificateFile cert/public.pem
证书私钥配置
SSLCertificateKeyFile cert/214222927760867.key
证书链配置,如果该属性开头有 ‘#’字符,请删除掉
SSLCertificateChainFile cert/chain.pem

1.打开/etc/apache2/sites-available/文件夹可以发现有一个·default-ssl.conf·的文件,里面正是以上配置内容所在。

2.在/etc/apache2/下新建文件夹,命名为cert,此时将下载的证书文件214222927760867.zip解压并上传到/etc/apache2/cert文件夹下。

3.复制该文件并重命名为000-default-ssl.conf(最好与相应网站的配置文件default.conf对应命名-ssl)
4.打开复制好的文件,这里是000-default-ssl.conf,找到对应语并修改为

SSLCertificateFile /etc/apache2/cert/public.pem
SSLCertificateKeyFile /etc/apache2/cert/214222927760867.key
SSLCertificateChainFile /etc/apache2/cert/chain.pem

5.建立软链接(激活配置)

sudo ln -s /etc/apache2/etc/apache2/sites-available/000-default-ssl.conf /etc/apache2/sites-enabled/

6.重启apache服务,测试是否有错误

sudo /etc/init.d/apache2 restart

至https已经启用,浏览器输入https://域名查看是否生效。

备注:在我不知道这个文件是干什么的情况下已经胡乱配置过如下内容,不知道有没有用.

<VirtualHost 域名:443>
servername 域名
ServerAdmin webmaster@localhost
DocumentRoot /var/www/网站目录

以及

SSLEngine on

好了,重点来了

使用301重新定向将http定向到https
1.启用Module rewrite
打开/etc/apache2/mods-available/中rewrite.load文件,启用rewrite:即取消以下内容前面的#即可

LoadModule rewrite_module/usr/lib/apache2/modules/mod_rewrite.so

2.建立软连接,激活rewrite.load

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/

3.在网站根目录下新建.htaccess文件,并写入以下内容

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}/$1 [R,L]

4.在Apache2.conf中找到如下片段,注意是/var/www/也就是站点目录,将AllowOverride None 改为All。
此步是说明:

AllowOverride是指确定允许存在于.htaccess文件中的指令类型,通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置。从安全性考虑,根目录的AllowOverride属性一般都配置成“None”不允许任何Override(优先级)—百度百科

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted```
 </Directory>

5.好吧,又是重启apache,到此重新打开网站域名后自动跳转至SSL安全链接https://域名。

6.至此,配置ssl及定向https已经完成

作者:Thomajesty
本文标题:在Apache环境下安装SSL证书,然后将http页面301重定向到https - 服务器教程_服务器技术_服务器知识_vps教程
本文地址:https://www.helloaliyun.com/tutorial/1060.html

相关文章

  • CentOS 7 常用命令(系统关机、重启以及登出)

    关机:(系统的关机、重启以及登出 ) # 关闭系统(1)[root@localhost ~]# shutdown -h now # 关闭系统(2)[root@localhost ~]# init 0 # 关闭系统(3)[root@localhost ~]# telinit 0 # 按预定时间关闭系统[root@localhost...

    2019-12-07 服务器教程
  • linux重启命令 reboot与shutdown -r now的区别与联系

    在linux命令中reboot是重新启动,shutdown -r now是立即停止然后重新启动,都说他们两个是一样的,其实是有一定的区别的。shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告...

    2019-12-07 服务器教程
  • CentOS 7 如何使用命令重启或关机

    安装GNOME的朋友们首先切换到字符界面。切换到字符界面的方法如下: 先登陆进入系统,进入图形化界面,然后按Ctrl+Alt+F6(笔记本的是Ctrl+Alt+shift+Fn),进入字符界面。关机命令:shutdown或poweroffshutdown:shutdown -h now...

    2019-12-07 服务器教程
  • CentOS 7 正确关机重启的命令方法

    linux主要用于服务器领域,而在服务器上执行一项服务是永无止境的,除非遇到特殊情况,否则不会关机。和Windows不同,在linux系统下,很多进程是在后台执行的。在屏幕背后,可能有很多人同时在工作。如果直接按下电源的按钮,其他...

    2019-12-07 服务器教程
  • CentOS下的yum upgrade和yum update区别,没事别乱用!

    说明:生产环境对软件版本和内核版本要求非常精确,别没事有事随便的进行yum update操作!!!!!!!!!yum update: 升级所有包同时也升级软件和系统内核yum upgrade:只升级所有包,不升级软件和系统内核...

    2019-12-07 服务器教程
你可能感兴趣
热门浏览