本文为CentOS环境 ,约定字体颜色为蓝色的路径会依照配置实际环境而改变
Apache在配置https之前要做好对应的模块检查,是否安装好openssl;是否在编译的时候包含ssl模块,若没有编译需要进行如下操作:
①可重新编译apache引入配置参数--enable-ssl
②不重新编译apache 则需要进入编译时的源码包 /apache-src/modules/ssl 这此路径下使用已经编译的apache/bin/apxs来新增模块
apxs -i -a -D HAVE_OPENSSL=1 -I/usr/include/openssl -L/usr/local/lib64/openssl -c *.c -lcrypto -lssl -ldl
(可以通过whereis openssl来获取openssl的include和lib路径 )
新增模块后需要配置httpd.conf和/extra/httpd-ssl.conf,本文中证书文件放置在conf/CA中,[链接]如何生成证书
httpd.conf:
#确认已经引入ssl模块
LoadModule ssl_module modules/mod_ssl.so
#添加监听443端口
Listen 443
#包含httpd-ssl.conf内容
<IfModule ssl_module>
#添加include
Include conf/extra/httpd-ssl.conf
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
#配置虚拟主机
<Virtual Host *:443>或者<Virtual Host _default_:443>
SSLEngine ON
#以下文件依照实际情况
SSLCertificateFile apache/conf/CA/ssl.crt
SSLCertificateKeyFile apache/conf/CA/ssl.key
#其他的与配置host相同
</VirtualHost>
httpd-ssl.conf与httpd.conf配置相同,为了严谨,将两个文件对应属性配置相同
#将<VirualHost _default_:443>设置于httpd.conf的相同
#注释掉cache项
#SSLSessionCache
#SSLSessionCacheTimeout
SSLCertificateFile apache/conf/CA/ssl.crt
SSLCertificateKeyFile apache/conf/CA/ssl.key
用httpd -t检查语法,以及apachectl restart
个人遇到的坑:
①httpd上原有的虚拟主机要设置好端口,将80转发给80的站点<VritualHost *:80>而不是使用<VritualHost>
②证书的选择,要使用正确且配对的server端crt和key