在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
阿里云颁发的免费 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
本文地址:https://www.helloaliyun.com/tutorial/1060.html