配置Apache支持HTTPS
一、首先编译apache支持ssl,要安装openssl,我用的是CentOs 8,已经默认安装好了openssl:
#! /bin/sh
#
# Created by configure
"./configure" \
"--prefix=/usr/local/apache2" \
"--with-included-apr" \
"--enable-so" \
"--enable-ssl" \
"--enable-socache-shmcb" \
"$@"
二、申请证书
我使用的是certbot申请的证书,其实他们的证书也是没有经过认证的,需要认证的证书就得花钱了,其实这么看来也可以自己生成证书:
certbot只是一个python脚本可以自动向其证书服务器申请证书和私钥,因为我的apache是编译安装的,certbot的脚本不能自动处理我的配置(这是他们论坛上一位大神说的),于是我只申请了证书:
certbot certonly --webroot -w /usr/local/apache2/htdocs/www红色部分写不写好像都行,因为我也只是申请了证书
curl -k -v 'https://127.0.0.1/www' #可以通过该命令验证证书是否安装成功,我就遭遇了apache服务器端证书配置错误,如果没有问题,输出会有一行写着验证成功了。此时发现了curl存在的必要性。
三、编辑Apache配置文件:
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
四、编辑httpd-ssl.conf
Listen 443
SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLProxyCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
SSLHonorCipherOrder on
SSLProtocol all -SSLv3
SSLProxyProtocol all -SSLv3
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:/usr/local/apache2/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
<VirtualHost _default_:443>
DocumentRoot "/mnt/www"#虚拟主机的根目录要配置正确,不然无法访问,会提示没有权限
ServerName www.5x44.cn:443
ServerAdmin skiron_liu@163.com
ErrorLog "/usr/local/apache2/logs/error_log"
TransferLog "/usr/local/apache2/logs/access_log"
SSLEngine on
SSLCertificateFile "/etc/letsencrypt/live/5x44.cn/fullchain.pem"#我使用的是certbot的证书。
SSLCertificateKeyFile "/etc/letsencrypt/live/5x44.cn/privkey.pem"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/apache2/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "/usr/local/apache2/logs/ssl_request_log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
五、大体上这就配置完了,不过最后我也没有使用https,因为wordpress是支持https的,但是主题不支持,我按网上说的修改了(修改主题的functions.php,根目录的wp_config.php,更新数据库等等操作),但是进入后台管理页面还是布局错乱,我只能再修改回http的方式。