配置apache 使用https
注:怕其他人由于路径的原因出问题,首先声明一下,本人apache的安装目录为 : /usr/local/httpd2.4.25,如果不是,请参考进行配置
注: 对于如下 ssl.conf的配置文件,如果其他人进行配置的话,不必完全一致的拷贝此配置文件,因为有部分代码是从默认的 "httpd-ssl.conf" 配置文件中拿过来的,如果其他人安装的apache编译版本(ssl模块已添加)跟这个版本一样,则可以完全拷贝
一. 针对全局网站使用https(配置所有网站web使用https访问)
# vim /usr/local/httpd2.4.25/conf/httpd.conf ServerName www.example.com:80 Redirect permanent / https://www.example.com #service httpd restart
二. 针对单个网站站点使用https
1. 配置单网站重定向
# vim /usr/local/httpd2.4.25/conf/httpd.conf (单个网站,也可以是其他命名方式的配置文件)
<VirtualHost *:80>
ServerName pxsnxg.pxjy.com
Redirect permanent / https://pxsnxg.pxjy.com/
</VirtualHost>
2. 配置ssl配置文件以及主配置文件加载ssl模块(前提是编译时把ssl模块编译进去,方能支持,否则会报错)
开启主配置文件,进行加载ssl模块
#vim /usr/local/httpd2.4.25/conf/httpd.conf
Include conf/extra/ssl.conf
LoadModule ssl_module modules/mod_ssl.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
配置单个网站相关ssl的配置文件
注: 对于如下 ssl.conf的配置文件,如果其他人进行配置的话,不必完全一致的拷贝此配置文件,因为有部分代码是从默认的 "httpd-ssl.conf" 配置文件中拿过来的,如果其他人安装的apache编译版本(ssl模块已添加)跟这个版本一样,则可以完全拷贝
#vim /usr/local/httpd2.4.25/conf/extra/ssl.conf (这里的ssl.conf配置文件,也可以是其他命名方式的配置文件)
Listen 443 SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4 SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4 SSLHonorCipherOrder on SSLProtocol all -SSLv3 SSLProxyProtocol all -SSLv3 SSLPassPhraseDialog builtin SSLSessionCache "shmcb:/usr/local/httpd2.4.25/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 <VirtualHost _default_:443> DocumentRoot "/apptest/web/test" ## 根据自己网站目录,随机配置 ServerName pxsnxg.pxjy.com ## 网站域名 ServerAdmin you@example.com ErrorLog "/apptest/logs/project_error.log" ## 网站日志路径 TransferLog "/apptest/logs/project_access.log" ## 网站日志路径
##如下<Directory>控制区域,主要是针对https访问时进行控制用的,否则rewrite重定向规则是不生效的,除了开启rewrite模块,还需要将”AllowOverride None“改为“AllowOverride all”
<Directory "/apptest/web/test"> ## 此配置如果没有会影响网站访问
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
SSLEngine on
SSLCertificateFile "/usr/local/httpd2.4.25/conf/ssl/pxsnxg.pxjy.com.cer" ##如下三行是购买证书的三个证书相关文件,相关ssl目录是手动创建,证书需要准备
SSLCertificateKeyFile "/usr/local/httpd2.4.25/conf/ssl/pxsnxg.pxjy.com.key"
SSLCertificateChainFile "/usr/local/httpd2.4.25/conf/ssl/pxsnxg.pxjy.com_ca.crt"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/httpd2.4.25/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "/usr/local/httpd2.4.25/logs/ssl_request_log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
三. 配置Apache 同时支持 80 和 443 端口 访问网站
1. 在https-vhosts.conf 里添加80端口虚拟主机的配置
<VirtualHost *:80> ServerAdmin webmaster@dummy-host2.example.com DocumentRoot "/apptest/web/test" ServerName pxsnx.pxjy.com ErrorLog "/apptest/logs/pxsnxg_error.log" CustomLog "/apptest/logs/pxsnxg_access.log" combined DirectoryIndex index.php index.Html index.html php_admin_value open_basedir "/apptest/web/test:/tmp:." <Directory "/apptest/web/test"> Options FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
2. 配置httpd.conf 开启加载ssl.conf(可以是其他命令方式的关于ssl的配置文件),ssl的配置跟上面的雷同,这里省略(相当于是把80 和443的配置文件分开来部署)
四. 重新加载apache服务
# /usr/local/httpd2.4.25/bin/apache graceful