当前位置:   article > 正文

Nginx从入门到入坟(十二)- Nginx添加SSL证书_nginx ssl_ciphers

nginx ssl_ciphers

原文地址:https://program-park.github.io/2022/06/14/nginx_13/

1. Nginx的安全控制

  关于 Web 服务器的安全是比较大的一个话题,里面所涉及的内容很多,Nginx 反向代理是如何来提升 Web 服务器的安全呢?这里就要说一下安全隔离的概念了。
  通过代理分开了客户端到应用程序服务器端的连接,实现了安全措施。在反向代理之前设置防火墙,仅留一个入口供代理服务器访问,这就是安全隔离。

1.1 如何使用SSL对流量进行加密

  通俗来说就是将我们常用的 http 请求转变成 https 请求,那么这两个之间的区别简单的来说两个都是 http 协议,只不过 https 是身披 SSL 外壳的 http。
  https 是一种通过计算机网络进行安全通信的传输协议。它经由 http 进行通信,利用 SSL/TLS 建立全通信,加密数据包,确保数据的安全性。

  • SSL(Secure Sockets Layer):安全套接层;
  • TLS(Transport Layer Security):传输层安全;

  上述这两个是为网络通信提供安全及数据完整性的一种安全协议,TLS 和 SSL 在传输层和应用层对网络连接进行加密。
  总结来说为什么要使用 https:

http协议是明文传输数据,存在安全问题,而https是加密传输,相当于http+ssl,并且可以防止流量劫持。

  Nginx 要想使用 SSL,需要满足一个条件即需要添加一个模块--with-http_ssl_module,而该模块在编译的过程中需要 OpenSSL 的支持。

1.2 Nginx添加SSL的支持

  完成--with-http_ssl_module模块的增量添加:

  1. 将原有/usr/local/nginx/sbin/nginx进行备份;
  2. 拷贝 Nginx 之前的配置信息;
  3. 在 Nginx 的安装源码进行配置指定对应模块./configure --with-http_ssl_module
  4. 通过make模板进行编译;
  5. objs下面的nginx移动到/usr/local/nginx/sbin下;
  6. 在源码目录下执行make upgrade进行升级,这个可以实现不停机添加新模块的功能。

1.3 Nginx的SSL相关指令

ssl:该指令用来在指定的服务器开启HTTPS,可以使用 listen 443 ssl,后面这种方式更通用些。

语法ssl on | off;
默认值ssl off;
位置http、server
server{
	listen 443 ssl;
}
  • 1
  • 2
  • 3

ssl_certificate:为当前这个虚拟主机指定一个带有PEM格式证书的证书。

语法ssl_certificate file;
默认值-
位置http、server

ssl_certificate_key:该指令用来指定PEM secret key文件的路径。

语法ssl_ceritificate_key file;
默认值-
位置http、server

ssl_session_cache:该指令用来配置用于SSL会话的缓存。

语法ssl_sesion_cache off|none|[builtin[:size]] [shared:name:size]
默认值ssl_session_cache none;
位置http、server
  • off:禁用会话缓存,客户端不得重复使用会话;
  • none:禁止使用会话缓存,客户端可以重复使用,但是并没有在缓存中存储会话参数;
  • builtin:内置 OpenSSL 缓存,仅在一个工作进程中使用;
  • shared:所有工作进程之间共享缓存,缓存的相关信息用 name 和 size 来指定;

ssl_session_timeout:开启SSL会话功能后,设置客户端能够反复使用储存在缓存中的会话参数时间。

语法ssl_session_timeout time;
默认值ssl_session_timeout 5m;
位置http、server

ssl_ciphers:指出允许的密码,密码指定为OpenSSL支持的格式。

语法ssl_ciphers ciphers;
默认值ssl_ciphers HIGH:!aNULL:!MD5;
位置http、server

ssl_prefer_server_ciphers:该指令指定是否服务器密码优先客户端密码。

语法ssl_perfer_server_ciphers on|off;
默认值ssl_perfer_server_ciphers off;
位置http、server

1.4 生成证书

  • 方式一:使用阿里云/腾讯云等第三方服务进行购买(阿里云购买链接);
  • 方式二:使用 openssl 生成证书;

  使用openssl version命令确定当前系统是否安装 openssl。
  按照下面的步骤进行生成:

mkdir /root/cert
cd /root/cert
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

1.5 开启SSL实例

server {
	# 服务器端口使用443,开启ssl
    listen       443 ssl;
    # 域名,多个以空格分开
    server_name  localhost;

	# ssl证书地址
    ssl_certificate      server.cert;
    ssl_certificate_key  server.key;  # key文件的路径

	# ssl验证相关配置
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m; # 缓存有效期

    ssl_ciphers  HIGH:!aNULL:!MD5; # 加密算法
    ssl_prefer_server_ciphers  on; # 使用服务器端的首选算法

    location / {
        root   html;
        index  index.html index.htm;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

  将 http 重定向 https:

server {
    listen       80;
    server_name  your-domain.com; # 你的域名
    rewrite ^(.*)$ https://your-domain.com$1; # 把http的域名请求转成https
}
  • 1
  • 2
  • 3
  • 4
  • 5

参考文献

  【1】https://www.bilibili.com/video/BV1ov41187bq?p=91&vd_source=e66fcf471e44c7ac45f918fd1f1e7a77
  【2】https://blog.csdn.net/weixin_44060108/article/details/121245182
  【3】https://blog.csdn.net/weixin_38615720/article/details/92827012?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-92827012-blog-123139998.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-92827012-blog-123139998.pc_relevant_antiscanv2&utm_relevant_index=2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/103625?site
推荐阅读
相关标签
  

闽ICP备14008679号