https和nginxe配置反向代理

来源:互联网 发布:c 编程 文件被截断 编辑:程序博客网 时间:2024/05/20 02:54


转载来自  : https://www.embbnux.com/2015/12/29/letsencrypt_with_nginx_config_for_wordpress/
Let’s Encrypt网站启用https以及nginx配置安全优化


最近Let’s Encrypt公测了,所有网站都可以利用Let’s Encrypt给自己的发放https证书。今天本博客也正式启用https.这里记录一下Let’s Encrypt的使用和注意事项,以及nginx相关配置和优化。


一、利用Let’s Encrypt获取https证书


其实之前本站就获得了Let’s Encrypt内测资格,只是在使用Let’s Encrypt时发现了dns错误,因为生成证书时Let’s Encrypt,需要访问该ip指向的主机进行验证,但是发现我的域名在国外解析有问题,每次认证都会发现urn:acme:error:connection,提示Error: The server could not connect to the client。后来发现Let’s Encrypt使用的是谷歌的8.8.8.8解析,测试nslookup www.embbnux.com 8.8.8.8发现有问题,于是把域名解析移到dnspod, 一开始也不行,后来执行了nslookup www.embbnux.com 8.8.8.8,发现就好了8.8.8.8收录了我的域名解析。


使用Let’s Encrypt:


首先要把nginx关掉,因为Let’s Encrypt客户端运行时会占用80端口用来验证域名所有权。




1 git clone https://github.com/letsencrypt/letsencrypt
2 cd letsencrypt
3 ./letsencrypt-auto certonly -d embbnux.com -d www.embbnux.com
最好同时申请embbnux.com 和 www.embbnux.com这样两个域名,会自动使用同一个证书进行认证,一切没问题后会在/etc/letsencrypt/live/www.embbnux.com下生成证书


二、配置nginx


nginx配置主要有打开443端口,配置ssl证书,以及重定向原来的http到https




server {
  listen 80;
  server_name www.embbnux.com;
  #rewrite ^(.*)$ https://$host$1 permanent;
  return 301 https://$server_name$request_uri;
}
 
server{
  server_name www.embbnux.com;
  listen 443;
  ssl on;
  ssl_certificate /etc/letsencrypt/live/embbnux.com/fullchain.pem;

  ssl_certificate_key /etc/letsencrypt/live/embbnux.com/privkey.pem;

   #此处配置了反向代理

  location / {
        proxy_pass http://127.0.0.1:9000;
    }
}
如果使用的是wordpress还需要到配置常规里面把wordpress地址和站点地址改为https://www.embbnux.com


然后重启nginx:


1
sudo service nginx restart
然后打开浏览器访问www.embbnux.com会发现自动重定向到https


三、ssl配置优化


可以使用https后可以到www.ssllabs.com评测一下网站


https://www.ssllabs.com/ssltest/analyze.html?d=embbnux.com


测试完后发现被评为C,得再优化一下,参考这里 :


首先关掉ssl v2和ssl v3支持,这两个有安全问题:


1
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
配置dhparams长度




cd /opt
mkdir dhparam
cd dhparam
mkdir keys
cd keys
openssl dhparam -out dhparams.pem 2048
cd ../
sudo chmod 700 keys
新的nginx配置:




server{
  listen 443 ssl;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
 
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  ssl_dhparam /opt/dhparam/keys/dhparams.pem;
  ssl_certificate /etc/letsencrypt/live/www.embbnux.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/www.embbnux.com/privkey.pem;

  server_name www.embbnux.com;

 #此处配置了反向代理

  location / {
        proxy_pass http://127.0.0.1:9000;
    }
}
这样再评测就发现已经是A等级了。
1 0
原创粉丝点击