最近把博客弄得差不多了,接下来的事情就是对博客进行安全加固以及完善各种小功能,今天就在服务器上安装SSL证书。什么是SSL证书呢?
SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上,也称为SSL服务器证书。

本站blueheart66.cn用了下面的配置在SSL Labs测试中可以获得A的最佳评级。
Nginx的SSL配置优化安全等级为A级

演示配置环境

  • 宝塔Linux 面板 5.9免费版
  • Web服务器环境 Nginx1.12

具体配置文件

首先,你要了解宝塔面板的建立的站点Nginx 环境下的路径:
Nginx1.12安装路径:/www/server/nginx
所有站点配置文件存放路径:/www/server/panel/vhost/nginx/
站点配置文件:/www/server/panel/vhost/nginx /你的域名. conf(本教程需要修改此文件)

生成 dhparam.pem

一般网站使用的SSL证书都是RSA证书,这种证书基本都是2048位的**,但是证书**交换**必须要比证书**更长才能安全,而默认的只有1024位,所以我们需要手动生成一个更强的**。所以配置之前,如果没有DH-key就需要做下面的步骤:

  • 有screen则跳过,没则安装
yum -y install screen
  • 生成4096位的DH-Key(证书**交换**)
screen -S DH
openssl dhparam -out dhparam.pem 4096

Nginx的SSL配置优化安全等级为A级

可能需要比较长的时间,具体根据你的VPS服务器内存而定!我这里默认是使用的4K,如果配置比较低,也可以换成 2K,即把后面的参数 4096 换成 2048。

  • 如果在等待过程中,网路出现中断,可以执行下面命令重新连接安装窗口。
screen -r DH

熬过漫长的等待时间后,建议生成的dhparam.pem文件最好跟SSL证书放在一起方便管理。我放入的文件夹是:/www/server/panel/vhost/ssl/
Nginx的SSL配置优化安全等级为A级

配置如下

只包含了SSL的部分,未包含其他比较重要的配置,如缓存、跳转、防盗链和强制HTTPS等等。

server
{
    listen 80;
	listen 443 ssl http2;
	#使用HTTP/2,需要Nginx1.9.7以上版本
	ssl on;
    server_name blueheart66.cn www.blueheart66.cn;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/halo/target/dist/halo;
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
	
	add_header X-Frame-Options DENY;
	#禁止被嵌入框架
	
	add_header X-Content-Type-Options nosniff;
	#防止在IE9、Chrome和Safari中的MIME类型混淆攻击

	ssl_certificate      /www/server/panel/vhost/ssl/1_www.blueheart66.cn_bundle.crt;
	ssl_certificate_key  /www/server/panel/vhost/ssl/2_www.blueheart66.cn.key;  
	#SSL证书文件位置

	
	ssl_dhparam /www/server/panel/vhost/ssl/dhparam.pem;
	#DH-Key交换**文件位置
	
	#SSL优化配置

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
	#只允许TLS协议

	ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
	#加密套件,这里用了CloudFlares Internet facing SSL cipher configuration

	ssl_prefer_server_ciphers on;
	#由服务器协商最佳的加密算法

	ssl_session_cache builtin:1000 shared:SSL:10m;
	#Session Cache,将Session缓存到服务器,这可能会占用更多的服务器资源

	ssl_session_tickets on;
	#开启浏览器的Session Ticket缓存

	ssl_session_timeout 10m; 
	#SSL session过期时间
	
	add_header Strict-Transport-Security "max-age=6307200; includeSubdomains; preload";
	#开启HSTS,并设置有效期为“6307200秒”(6个月),包括子域名(根据情况可删掉),预加载到浏览器缓存(根据情况可删掉)
    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    #PROXY-START
    location / 
    {
        proxy_pass http://localhost:8090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
                
        #持久化连接相关配置
        #proxy_connect_timeout 30s;
        #proxy_read_timeout 86400s;
        #proxy_send_timeout 30s;
        #proxy_http_version 1.1;
        #proxy_set_header Upgrade $http_upgrade;
        #proxy_set_header Connection "upgrade";
        
        #add_header X-Cache $upstream_cache_status;
        
        #expires 12h;
    }   
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
	  
    access_log  /www/wwwlogs/blueheart66.cn.log;
    error_log  /www/wwwlogs/blueheart66.cn.error.log;
}

配置完后请重启Nginx!

  • CentOS 6.x:
service nginx restart
  • CentOS 7.x:
systemctl restart nginx

写在最后

其实文件配置还是很简单的,最主要找到配置文件的位置,复制文中代码修改文件路径即可。

相关文章:

  • 2021-06-08
  • 2022-01-24
  • 2022-12-23
  • 2022-12-23
  • 2022-02-02
  • 2022-02-01
猜你喜欢
  • 2021-07-25
  • 2021-05-30
  • 2021-10-30
  • 2021-11-27
  • 2021-07-13
  • 2022-12-23
  • 2021-12-07
相关资源
相似解决方案