Apache服务器配置SSL证书步骤及问题记录
目录
1、证书申请2、证书下载2-1 开启443端口(HTTPS服务的默认端口)2-2 检查服务器上是否安装mod_ssl.so模块3、部署证书3-1 上传文件3-2 修改httpd.conf配置文件3-3 修改httpd-ssl.conf配置文件3-4 修改httpd.conf文件3-5 验证部署结果
网站上线之后,考虑到日常使用服务并不涉及HTTPS需求,加上自己对于部署SSL证书的流程一点都不了解,就搁置了。
前两天在学习新的案例时,要求涉及域名的访问必须是HTTPS,无奈又回头来补习这一块。
1、证书申请
阿里云服务器有免费的证书可以申请(1年有效期),具体位置:
左上角产品与服务中找到SSL证书(应用安全),找不到的可以在搜索栏进行搜索查找。
跳转新页面之后,点击左侧SSL证书,选择免费证书,然后点击立即购买,在购买页面选择DV单域名证书【免费试用】,购买数量默认20(超过20个需要收费)。因为证书买的比较早,其他需要注意的信息可以自行在网上搜索。
2、证书下载
购买成功之后,可以在当前的“免费证书”类目下看到“创建证书0/20”,表示当前有20个可用证书额度,点击创建证书即可在下方生成一条待申请的信息。
点击证书申请,在页面中填入“证书绑定域名”、“域名验证方式”(写入域名之后,如果域名在阿里云域名服务控制台的域名列表中,则此处自动匹配自动DNS验证方式,无需手动配置。由阿里云自动完成域名验证)、“联系人”、“所在地”、“秘钥算法”(默认,不用改)、“CSR生成方式”(默认系统生成,不用改),点击下一步,确认提交信息无误之后,点击“验证”即可完成证书申请,几分钟之后证书状态会变为“已签发”。
在已签发证书操作栏中,点击下载,根据自己的服务器类型下载对应的证书(因为我的服务器类型是Apache,后续均以此为例进行说明,其他类型的SSL证书部署流程可以参考阿里云官方文档:数字证书管理服务)。
到这里,已经做好了在Apache服务器上安装SSL证书前期准备的第一部分。根据操作文档提示,还有另外两步需要进行确认:
① Apache服务器上已经开启了443端口(HTTPS服务的默认端口)
② Apache服务器上已安装了mod_ssl.so模块(启用SSL功能)
2-1 开启443端口(HTTPS服务的默认端口)
在左上角功能栏找到“云服务器ECS”
在云服务器ECS中找到需要对齐进行操作的那一台服务器,点击该服务器实例进入实例详情页
在实例详情页点击“配置安全组规则”,跳转页面中点击“配置规则”
配置规则页面,在“入方向”栏目下,点击“手动添加”,在新的规则中,仅需要对“端口范围”(选择HTTPS(443)),“授权对象”(选择:0.0.0.0/0)两项进行选择提交即可。
如果有宝塔面板,此时还需要在宝塔面板中对443端口进行放行。至此,即完成了服务器上443端口的开启。
2-2 检查服务器上是否安装mod_ssl.so模块
检查方法:查看是否在 modules (/apache/modules/)下存在mod_ssl.so
如果不存在,需要进行安装,安装方法,在终端窗口执行命令:
yum -y install mod_ssl
安装成功之后会显示:
3、部署证书
前两部分已经完成了证书部署的所有准备工作,接下来开始部署SSL证书。
3-1 上传文件
在Apache安装目录中新建cert目录,并将之前下载的证书文件解压,把解压得到的Apache证书、证书链文件和密钥文件上传到cert目录中。(如果有多个域名需要进行SSL证书部署,则需要对应的在Apache安装目录下创建多个cert目录,可以命名为cert1、cert2·····)
3-2 修改httpd.conf配置文件
在Apache安装目录Apache/conf/下(Apache/conf/为Apache的默认安装目录,如果修改过该路径,需要在修改后的路径下查找httpd.conf文件。)找到并双击打开httpd.conf文件,在代码中找到以下参数,然后去掉参数前面的“#”。修改之后,点击保存,关掉编辑器。
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
3-3 修改httpd-ssl.conf配置文件
在Apache/conf/extra/目录下,找到并双击打开httpd-ssl.conf文件,按照以下格式进行配置。
对于像我这样的新手,在这里被各种问题困扰了很久,反复修改试错和很多次才绕出来,这里详细说明一下:
①示例中代码在编辑器中并不是同样排布的,需要自行搜索定位,外层(第一行和最后一行)
<VirtualHost *:443>
</VirtualHost>
在编辑器中是
<VirtualHost _default_:443>
</VirtualHost>
为了防止出现未知的问题,按照格式中要求更改即可。
② ServerName 修改为申请证书时绑定的域名
举例,假如申请证书时绑定的域名是www.abcdefg.com,那么这一行代码需要改为:
ServerName www.abcdefg.com
③ (重点)
DocumentRoot /data/www/hbappserver/public
DocumentRoot是你需要配置的项目的根目录,比如我的项目是一个网站,用户访问https://www.abcdefg.com的时候是需要能正常打开该网站的,那么就需要将这个网站的路径填在这里,那么我这里填的就是
DocumentRoot "/www/wwwroot/www.abcdefg.com”
这一点很重要,当时被这个问题困扰了特别久。
④
SSLEngine on
找到对应代码,照抄
⑤
SSLProtocol all -SSLv2 -SSLv3 # 添加SSL协议支持协议,去掉不安全的协议
找到对应代码,照抄
⑥
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
找到对应代码,照抄
⑦ SSLHonorCipherOrder on
找到对应代码,照抄
⑧ (注意)
SSLCertificateFile cert/domain_name1_public.crt
找到SSLCertificateFile对应的代码行,如果前面有#,需将#去掉,然后将上面示例中domain_name1_public.crt替换成您证书文件名,这里文件名中有public,那么替换的文件名也一定是解压出来的那个带有public的文件名(注意文件后缀.crt不能省略)。
⑨ (注意)
SSLCertificateKeyFile cert/domain_name1.key
找到SSLCertificateKeyFile对应的代码行,如果前面有#,需将#去掉,然后将上面示例中domain_name1.key替换成您证书文件名(注意文件后缀.key不能省略)。
⑩ (注意)
SSLCertificateChainFile cert/domain_name1_chain.crt
找到SSLCertificateChainFile对应的代码行,如果前面有#,需将#去掉,然后将上面示例中domain_name1_chain.crt替换成您证书文件名,这里文件名中有chain,那么替换的文件名也一定是解压出来的那个带有chain的文件名(注意文件后缀.crt不能省略)。
按照部署文档中的格式,改完上述代码还不够,需要找到代码
#ServerName www.example.com:443,
将前面#去掉,把代码里面的域名改为你申请证书时的域名。如:
ServerName www.abcdefg.com:443
然后,找到如下代码(将/www/server/apache/cgi-bin改为刚刚DocumentRoot 后面填写的路径"/www/wwwroot/www.abcdefg.com”)。
<Directory "/www/server/apache/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
改为
<Directory "/www/wwwroot/www.abcdefg.com">
SSLOptions +StdEnvVars
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
最后,点击保存,并关闭编辑器。(如果有多个项目需要部署,只需在<VirtualHost _default_:443></VirtualHost>
之外,再根据新项目的实际情况新增一组<VirtualHost _default_:443></VirtualHost>
即可,特别需要注意新增组里面的证书秘钥路径、项目域名、项目根目录路径不能出错。)
3-4 修改httpd.conf文件
设置HTTP请求自动跳转HTTPS(可选配置),对于有强制自动跳转HTTPS需求的情况,只需将下面代码复制粘贴在站点配置中即可。
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
3-5 验证部署结果
完成上述操作之后,重启Apache服务器使SSL配置生效,访问https://你申请证书的域名(如:https://www.abcdefg.com)验证该证书是否安装成功。(如果网页地址栏出现小锁标志,表示证书已经安装成功。)
如果没有生效,安装上述步骤逐一检查,是否有配置错误的情况,比如:
- 443端口在宝塔中没有放行
- httpd.conf路径被更改
- DocumentRoot对应的项目路径不正确
- Directory里面项目路径未更换或者填写错误
- 证书和秘钥这三个文件路径不正确
- 等等
还有一种情况(困扰我很久的问题),如果网站是PHP写的,访问https://域名之后,页面会直接下载php文件,而没有按照预期展示网页内容,出现解析失败的情形,这时则需要打开网站根目录,删除index.html文件,然后在网站的配置文件中加入如下代码:
#PHP
<FilesMatch \.php$>
SetHandler "proxy:unix:/tmp/php-cgi-73.sock|fcgi://localhost"
</FilesMatch>
提交之后,重启Apache服务器使SSL配置生效,访问https://域名,再次验证该证书是否安装成功。
以上。
Apache服务器配置SSL证书步骤及问题记录相关推荐
- Apache服务器配置SSL证书踩坑
按照阿里云帮助文档给Apache服务器配置SSL证书时,遇到了一些问题,特意记录下. 配置过程: ①在阿里云给域名签发了SSL证书后,需要将其下载到本地. 解压证书文件夹可以得到三个文件,将其拷贝到A ...
- 关于Apache服务器配置SSL证书的那些事(保姆级教程)
很多人在买好服务器,买好域名后,总是揪心于网页上没有那个小锁头.对于强迫症的人来说总是好难受(比如我自己),在难受之余我就来教教你怎么在你的域名上加把锁,怎么给你的Apache安装你的证书. (博主 ...
- php curl 不验证ssl,PHP Curl https跳过ssl证书认证报错记录及解决
PHP Curl https跳过ssl证书认证报错记录及解决 function get($url = '', $cookie = '') { $ch = curl_init(); curl_setop ...
- 服务器部署ssl证书,Apache服务器SSL证书部署
Apache服务器SSL证书部署 发布时间:2018-01-11 18:03:54 摘要 Apache为一款非常常见的web服务器,此文针对在apache上部署和使用SSL证书进行了详细描述. 关键词 ...
- 宝塔linux apache怎么部署证书,Linux+Apache部署SSL证书方法步骤
一.安装SSL准备 1.安装Openssl 要使Apache支持SSL,需要首先安装Openssl支持.Openssl下载地址http://www.openssl.org/source/ tar -z ...
- 阿里云服务器配置SSL证书成功开启Https(记录趟过的各种坑)
环境: 阿里云云服务器 Windows Server 2008 标准版 SP2 中文版(趁1212优惠买的一年的水货配置) 阿里云购买的域名(已备案.已解析) 服务器:phpstudy:php5 ...
- Apache 服务器 SSL 证书到期-续期处理步骤
不管是免费的还是付费的证书都是有有效期的,只不过日期长短不一样.SSL证书到期必须进行更新,否则https访问会失败.一般证书到期前,相关云平台服务商会通知你的.我用的是腾讯云,微信和邮箱都会收到到期 ...
- openssl 生成证书_CentOS7 httpd(Apache)SSL 证书部署
在之前我的文章中我已经搭建了nextcloud服务器,现在我们需要通过域名及https访问怎么办 1. 进行了简单的httpd设置后,就可以为网站添加SSL证书功能了. 2. 首先得获取证书,有了证书 ...
- Centos生成SSL证书步骤详解
参考文章:Centos生成SSL证书的步骤_weixin_34301132的博客-CSDN博客 centos7 生成ssl证书,搭建https地址_洋葱 ☠的博客-CSDN博客_centos ssl证 ...
最新文章
- 2.1.1 进位计数制
- wordpress 介绍
- 读书笔记--云边有个小卖部
- 跳槽,成为程序员晋升与成长的唯一手段?
- 指针知识(四):指针数学计算
- [论文笔记]FusionNet: Fusing via Fully-Aware Attention with Application to Machine Comprehension
- 从XmlDocument到XDocument的转换
- 计算机用三角函数时如何用弧度制,5.1.2弧度制教学设计
- 书评《鸟哥的Linux私房菜 基础学习篇》第四版
- (转)protein 数据库
- android flashlight权限,大多数Android flashlight应用程序需要的权限数量非常多
- JQuery超链接鼠标提示效果
- TMS320C6748的StarterSware软件包
- 云帮平台的设计架构详解
- 网络安全意识 | 以人为本,安全意识工作大有可为
- AVI文件数据流操作
- 服务器基线加固脚本_一种基于WebLogic的安全基线加固方法与流程
- 计算机一级考试模拟题2003word,2015计算机一级MsOffice练习:Word2003
- 开机启动linux,显示stop lightdm display manager,桌面显示不出来
- linux内存管理(上)
热门文章
- PDM和CAD集成应该谁去做?
- iOS设备前十名排名已出, 全都是旧款机型, 为何新款却榜上无名
- Minecraft 1.12.2模组开发(二十) 导出模组
- IPX34手持式淋雨试验机的工作原理
- 禁用谷歌浏览器的双手指作向右滑动不后退网页
- 某市发改委网站被挂马 xzz.exe/Trojan-Downloader.Win32.Delf.aof
- 7成iPad教育软件免费:幼儿类软件占半壁江山
- 2.Git的工作区、暂存区和版本库(慕课网)
- python抢红包程序算法_python实现简单抢红包算法
- 基于LoRa低功耗无线通信技术的水表数据采集方法