出于安全考虑,打算把站点的后台采用ssl加密,即使用https协议。经过配置之后,目前站点后台已经使用https了。下面是配置过程。

生成证书和密钥

生成证书和密钥命令:

openssl req -x509 -newkey rsa:2048 -keyout tlanyan.pp.ua.key -out tlanyan.pp.ua.crt -days 1000

这条命令使用openssl包生成证书和密钥。各项的含义如下:

req: 证书请求和生成工具

-x509: 该选项指示req命令是自行生成证书而非请求证书

-newkey rsa:2048: 该选项生成一个2048位的证书和相应的密钥

-keyout tlanyan.pp.ua.key: 将密钥文件输出到文件

-out tlanyan.pp.ua.crt: 将证书文件输出到文件

-days 1000: 证书有效期

注意填写的时候将公司或者颁发者可以写成站点域名,避免证书导入之后还不受信任的警告。将证书和密钥放在web服务器能访问的地方,为了安全,可以将密钥的权限设置为640.

配置nginx服务器

接下来是配置nginx服务器让其使用监听443端口,并使用密钥对请求数据解密。下面是配置内容:

# ssl config
listen 443 ssl;
ssl_certificate conf.d/ssl/tlanyan.pp.ua.crt;
ssl_certificate_key conf.d/ssl/tlanyan.pp.ua.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
keepalive_timeout 70;

然后重启nginx服务: service nginx restart

配置防火墙

如果开启了防火墙,需要将443端口放行。

配置wordpress

web服务器准备就绪后,接下来需要告诉wordpress后台的页面全部需要改为https协议。编辑wp-config.php,添加:

define('FORCE_SSL_ADMIN', true);

打开站点,发现后台的协议已经变成了https,这就验证了配置成功。

由于证书是自签发的,访问的时候可能会出现警告提示,直接忽略即可。

参考

  1. http://nginx.org/en/docs/http/configuring_https_servers.html
  2. http://stackoverflow.com/questions/10175812/how-to-build-a-self-signed-certificate-with-openssl