没有不值得去解决的问题,也没有不值得去学习的技术!

CentOS 6.5 64位下配置Apache的虚拟主机的SSL支持的实现流程

图12:查看SSL证书信息

1、SSl证书安装环境简介:

操作系统: CentOS 6.5 64位

Apache2.2.15

沃通免费ssl证书

2、网络环境要求

http://api.ygt.cm 可以通过外网正常访问

3、获取SSl证书

成功在沃通申请证书后,会得到一个有密码的压缩包文件,输入证书密码后解压得到五个文件,如图0:
for Apache、for IIS、for Nginx、for Other Server、for Tomcat,
这个是证书的几种格式,Apache上需要用到for Apache格式的证书。如图1

图1:这个是证书的几种格式,Apache上需要用到for Apache格式的证书
图1:这个是证书的几种格式,Apache上需要用到for Apache格式的证书

4、解压证书文件

解压for Apache文件可以看到3个文件。包括公钥、私钥、证书链,如图2

图2:解压for Apache文件可以看到3个文件。包括公钥、私钥、证书链
图2:解压for Apache文件可以看到3个文件。包括公钥、私钥、证书链

5、找到apache安装目录下conf.d目录中的ssl.conf文件,若没有,则apache没有编译SSL模块,需要重新安装mos_ssl。

6、运行:yum install mod_sll,如图3

图3:运行:yum install mod_sll
图3:运行:yum install mod_sll

7、通过FTP上传3个文件至api.ygt.cm目录下,如图4.0

图4.0:通过FTP上传3个文件至api.ygt.cm目录下
图4.0:通过FTP上传3个文件至api.ygt.cm目录下

7.1、复制3个文件至/etc/httpd/的相应目录下,如图5

图5:复制3个文件至/etc/httpd/的相应目录下
图5:复制3个文件至/etc/httpd/的相应目录下

7.2、打开apache安装目录下conf.d目录中的ssl.conf文件

在配置文件中查找以下配置语句:

修改加密协议如下,如图4

SSLProtocol all -SSLv2 -SSLv3

图4:SSLProtocol all -SSLv2 -SSLv3
图4:SSLProtocol all -SSLv2 -SSLv3

7.3、将服务器证书公钥配置到该路径下,如图6

SSLCertificateFile /etc/httpd/conf/ssl.crt/api.ygt.cm.crt 证书公钥

图6:证书公钥
图6:证书公钥

7.4、将服务器证书私钥配置到该路径下

SSLCertificateKeyFile /etc/httpd/conf/ssl.key/api.ygt.cm.key 证书私钥

7.5、将服务器证书链配置到该路径下

SSLCertificateChainFile /etc/httpd/conf/ssl.crt/api.ygt.cm.root_bundle.crt 证书链

7.6、编辑/ect/httpd/conf.d/ssl.conf,在虚拟主机中,如图7

先是注释掉之间的所有配置

# <VirtualHost _default_:443>
# </VirtualHost>

图7:注释掉VirtualHost之间的所有配置
图7:注释掉VirtualHost之间的所有配置

7.7、配置虚拟主机,基于原来的默认虚拟主机配置进行相应设置,如图7.1

图7.1:配置虚拟主机,基于原来的默认虚拟主机配置进行相应设置
图7.1:配置虚拟主机,基于原来的默认虚拟主机配置进行相应设置

8、service httpd restart,重启Apache服务器

9、重启报错:

Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain name, using 10.171.221.184 for ServerName
如图8

图8:重启报错:Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name
图8:重启报错:Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain name

10、编辑httpd.conf文件,如图9

查找#ServerName www.example.com:80 修改为:ServerName www.ygt.cm:80

图9:查找#ServerName www.example.com:80 修改为:ServerName www.ygt.cm:80
图9:查找#ServerName www.example.com:80 修改为:ServerName www.ygt.cm:80

11、重启重启Apache服务器,Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain name, using 10.171.221.184 for ServerName 错误消失;
如图9.1

图9.1:using 10.171.221.184 for ServerName 错误消失
图9.1:using 10.171.221.184 for ServerName 错误消失

12、还有此项错误:

[Mon Aug 31 15:15:25 2015] [warn] VirtualHost 121.40.99.104:443 overlaps with VirtualHost 121.40.99.104:443, the first has precedence, perhaps you need a NameVirtualHost directive

如图10

图10:the first has precedence, perhaps you need a NameVirtualHost directive
图10:the first has precedence, perhaps you need a NameVirtualHost directive

13、编辑/etc/httpd/httpd.conf

NameVirtualHost 服务器公网IP:80

图10.1:NameVirtualHost 服务器公网IP:80
图10.1:NameVirtualHost 服务器公网IP:80

14、重启Apache,未报错,如图11

图11:重启Apache,未报错
图11:重启Apache,未报错

15、查看网页,发现接口网址已经支持https,如图12、12.1

图12:查看SSL证书信息
图12:查看SSL证书信息
图12.1:证书查看器,SSL客户端证书
图12.1:证书查看器,SSL客户端证书

关于作者 · 持续学习与技术实践

我是一名拥有 15 年以上开发经验的技术从业者,自 2013 年起持续运营个人技术博客,记录工作与个人项目中遇到的真实问题,以及解决问题过程中的探索、实践和思考。

除了技术写作,我也在持续开发和维护自己的独立项目,探索新技术和新工具在实际场景中的应用。我始终相信,没有不值得去解决的问题,也没有不值得去学习的技术。

如果这篇文章对你有所帮助,欢迎浏览博客中的其他文章,也欢迎交流技术经验与想法。

关于我  ·  GitHub  ·  邮件联系