目 录CONTENT

文章目录

Nginx SSL配置

Jinty
2023-12-17 / 0 评论 / 0 点赞 / 18 阅读 / 4440 字

HTTP与HTTPS

image-eira.png

SSL/TSL

  • SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。

  • TLS(Transport Layer Security,传输层安全):用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 、TLS1.3四个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。

SSL证书

SSL Certificate一般去如阿里云、腾讯云等云服务提供商,或者去专门的服务商网站免费申请或者购买。

  • SSL 证书就是一份证明,证明某公钥确实是某网站的公钥。这里面需要用到 CA(证书的签发机构) 这个中间机构。

PS:项目开发过程中有接触过的可能就BJCA(北京数字认证股份有限公司),不知道有没有个人DV服务。

证书认证级别:

  • DV:域名认证,这种证书仅需要验证域名所有权。通过 DV 证书,使用者唯一可以确定的是这枚公钥是某个DNS域名的公钥。因为证书上只有域名这一项信息。免费证书都是 DV 证书。https://letsencrypt.org/zh-cn/

  • OV:组织认证,这种证书里面除了注明了域名之外还添加了公司名(Organization)等信息。

  • EV:扩展认证,CA 会对证书持有人进行更加全面的认证。

安装SSL证书

申请或购买成功后,下载得到的证书文件,主要一般是后缀为.crt.key.csr.pem文件。

.crt.key对应的文件上传到Linux服务器指定位置即可。

Nginx SSL模块

针对部署的Nginx没有安装SSL模块时(一般都是安装了的),需要单独进行安装。

Nginx SSL配置

在nginx配置文件的http下的server下配置SSL即可完成HTTPS的访问。

user www www;

worker_processes auto;

error_log /www/wwwlogs/nginx_error.log crit;

pid /www/server/nginx/logs/nginx.pid;

worker_rlimit_nofile 51200;

events {

	use epoll;
	
	worker_connections 51200;
	
	multi_accept on;

}

http {

	include mime.types;
	
	#include luawaf.conf;
	
	include proxy.conf;
	
	default_type application/octet-stream;
	
	server_names_hash_bucket_size 512;
	
	client_header_buffer_size 32k;
	
	large_client_header_buffers 4 32k;
	
	client_max_body_size 50m;
	
	sendfile on;
	
	tcp_nopush on;
	
	keepalive_timeout 60;
	
	tcp_nodelay on;
	
	fastcgi_connect_timeout 300;
	
	fastcgi_send_timeout 300;
	
	fastcgi_read_timeout 300;
	
	fastcgi_buffer_size 64k;
	
	fastcgi_buffers 4 64k;
	
	fastcgi_busy_buffers_size 128k;
	
	fastcgi_temp_file_write_size 256k;
	
	fastcgi_intercept_errors on;
	
	gzip on;
	
	gzip_min_length 1k;
	
	gzip_buffers 4 16k;
	
	gzip_http_version 1.1;
	
	gzip_comp_level 2;
	
	gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
	
	gzip_vary on;
	
	gzip_proxied expired no-cache no-store private auth;
	
	gzip_disable "MSIE [1-6]\.";
	
	limit_conn_zone $binary_remote_addr zone=perip:10m;
	
	limit_conn_zone $server_name zone=perserver:10m;
	
	server_tokens off;
	
	access_log on;

	server {
	
		#########################配置SSL#########################
		
		## 不同的nginx版本可能存在差异
		
		#SSL 访问端口号为 443
		
		listen 443 ssl;
		
		#填写绑定证书的域名
		
		server_name 你的域名1;
		
		#证书文件路径
		
		ssl_certificate 你的证书位置.crt;
		
		#私钥文件名称
		
		ssl_certificate_key 你的证书key位置.key;
		
		#缓存有效期
		
		ssl_session_timeout 5m;
		
		# 安全链接可选的加密协议
		
		ssl_protocols TLSv1.2 TLSv1.3;
		
		#加密算法
		
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
		
		#启用服务器端的首选算法
		
		ssl_prefer_server_ciphers on;
		
		#########################配置跨域#########################
		
		add_header Access-Control-Allow-Origin *;
		
		add_header Access-Control-Allow-Headers X-Requested-With;
		
		add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
		
		#########################配置资源路径#########################
		
		# 域名访问 反向代理
		
		location / {
		
			root /;
			
			index index.html index.htm;
			
			proxy_pass 服务地址;
		
		}
		
		access_log /www/wwwlogs/access.log;
	
	}
	
	# HTTP 自动跳转 HTTPS 的安全配置(可选)
	
	server {
	
		listen 80;
		
		#填写绑定证书的域名
		
		server_name 你的域名1;
		
		#把http的域名请求转成https
		
		return 301 https://$server_name$request_uri;
	
	}

	## 多个域名需要多个证书,安装上面修改证书、域名、服务地址配置即可(待验证)
	
	## ...

}

重载配置或重启nginx后生效,配置后确保防火墙放开了端口。

0

评论区