因为 wp-config.php 默认就是在根目录的,很多人就直接会对准这个目标已经攻击,因此我们还可以让 wp-config.php 文件搬个家~
清空 wp-config,php 的内容,加入:
<?php if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); require_once(ABSPATH . 'path/to/wp-config.php');
因为 wp-config.php 默认就是在根目录的,很多人就直接会对准这个目标已经攻击,因此我们还可以让 wp-config.php 文件搬个家~
清空 wp-config,php 的内容,加入:
<?php if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); require_once(ABSPATH . 'path/to/wp-config.php');
Apache在生成证书后也需要修改一下apache的配置文件 /usr/local/apache/conf/httpd.conf ,查找httpd-ssl将前面的#去掉。
然后再执行:
Apache 2.2如下:
cat >/usr/local/apache/conf/extra/httpd-ssl.conf<<EOF Listen 443 AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SSLCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5 SSLProxyCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5 SSLHonorCipherOrder on SSLProtocol all -SSLv2 -SSLv3 SSLProxyProtocol all -SSLv2 -SSLv3 SSLPassPhraseDialog builtin SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 SSLMutex "file:/usr/local/apache/logs/ssl_mutex" SSLStrictSNIVHostCheck on NameVirtualHost *:443 EOF
Apache 2.4如下:
cat >/usr/local/apache/conf/extra/httpd-ssl.conf<<EOF Listen 443 AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl SSLCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5 SSLProxyCipherSuite EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5 SSLHonorCipherOrder on SSLProtocol all -SSLv2 -SSLv3 SSLProxyProtocol all -SSLv2 -SSLv3 SSLPassPhraseDialog builtin SSLSessionCache "shmcb:/usr/local/apache/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 Mutex sysvsem default SSLStrictSNIVHostCheck on EOF
并在对应apache虚拟主机配置文件的最后下面添加上SSL部分的配置文件:
<VirtualHost *:443> DocumentRoot /home/wwwroot/www.xiaokyun.com #网站目录 ServerName www.xiaokyun.com:443 #域名 ServerAdmin admin@xiaokyun.com #邮箱 ErrorLog "/home/wwwlogs/www.xiaokyun.com-error_log" #错误日志 CustomLog "/home/wwwlogs/www.xiaokyun.com-access_log" common #访问日志 SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.xiaokyun.com/fullchain.pem #改一下里面的域名就行 SSLCertificateKeyFile /etc/letsencrypt/live/www.xiaokyun.com/privkey.pem #改一下里面的域名就行 <Directory "/home/wwwroot/www.xiaokyun.com"> #网站目录 SetOutputFilter DEFLATE Options FollowSymLinks AllowOverride All Order allow,deny Allow from all DirectoryIndex index.html index.php </Directory> </VirtualHost>
需将上述配置根据自己的实际情况修改后,添加到虚拟主机配置文件最后面。注意要重启apache使其实现。
执行:
/etc/init.d/httpd restart
重启Apache使其生效。
完整配置如下:
server
{
listen 443 ssl; //如果需要spdy也可以加上,lnmp1.2及其后版本都默认支持spdy,lnmp1.3 nginx 1.9.5以上版本默认支持http2
server_name www.xiaokyun.com; //这里是你的域名
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/www.xiaokyun.com; //网站目录
ssl_certificate /etc/letsencrypt/live/www.xiaokyun.com/fullchain.pem; //前面生成的证书,改一下里面的域名就行,不建议更换路径
ssl_certificate_key /etc/letsencrypt/live/www.xiaokyun.com/privkey.pem; //前面生成的密钥,改一下里面的域名就行,不建议更换路径
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;include wordpress.conf; //这个是伪静态根据自己的需求改成其他或删除
#error_page 404 /404.html;
location ~ [^/].php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf; //lnmp 1.0及之前版本替换为include fcgi.conf;
#include pathinfo.conf;
}location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}location ~ .*.(js|css)?$
{
expires 12h;
}access_log off;
}
需将上述配置根据自己的实际情况修改后,添加到虚拟主机配置文件最后面。
添加完需要执行:
/etc/init.d/nginx reload
重新载入配置使其生效。
如果需要HSTS,可以加上
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
To Force SSL Logins
The constant FORCE_SSL_LOGIN can be set to true to force all logins to happen over SSL. This (and all other such definitions) must be placed before
/* That’s all, stop editing! Happy blogging. */
…
require_once(ABSPATH . ‘wp-settings.php’);
in the file, otherwise they will not take effect.
Example
define(‘FORCE_SSL_LOGIN’, true);
To Force SSL Logins and SSL Admin Access
The constant FORCE_SSL_ADMIN can be set to true to force all logins and all admin sessions to happen over SSL.
Example
define(‘FORCE_SSL_ADMIN’, true);