2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Nginx配置ssl证书(https证书)

Nginx配置ssl证书(https证书)

时间:2021-05-18 05:25:31

相关推荐

Nginx配置ssl证书(https证书)

https协议是由SSL+http协议构建的安全协议,支持加密传输和身份认证,

安全性比http要更好,因为数据的加密传输,更能保证数据的安全性和完整性。

安装nginx

1.启动容器:

拉取镜像

docker pull nanlist/nginx1.23.1:v1.0

新建目录并授权,/home/ssl-nginx/conf, /home/ssl-nginx/logs

执行启动命令:

docker run -d --privileged=true --name ssl-nginx -p 80:80 -p 443:443 -v /home/ssl-nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/ssl-nginx/logs:/var/log/nginx -d nanlist/nginx1.23.1:v1.0

2.查看日志:

docker logs --tail=1000 ssl-nginx

3.Nginx 的 SSL 模块安装

进入容器:

docker exec -it ssl-nginx bash

查看ssl模块默认是否已编译:

nginx -V (注意大写V)

编译参数configure arguments: 中是否有 –with-http_ssl_module 这个模块

配置

1、下载Nginx 服务证书

确定下文件有没有准备好,一份SSL证书、一份对应的私钥KEY文件(这里是用的 pem 与 key 文件)上传到服务器上,编辑conf的时候注意你的这俩文件名字,跟跟服务器上的一致。

ssl.pem;

ssl.key;

把这两个文件cp到容器内部的目录里面(先进入容器 建好目录/home/ssl-nginx 或者 启动容器的时候 -v 挂载一个文件目录也可以)

docker cp /home/ssl-nginx/conf/ssl.pem ssl-nginx:/etc/nginxdocker cp /home/ssl-nginx/conf/ssl.key ssl-nginx:/etc/nginxdocker exec -i ssl-nginx nginx -tdocker exec -i ssl-nginx nginx -s reload

2、配置nginx.conf

worker_processes 1;events {worker_connections 1024;}http {client_max_body_size 100m;include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {#监听的端口,nginx 1.15.0及以上版本,使用listen 443 ssl代替,1.15.0以下的使用listen 443listen 443 ssl;server_name localhost;charset utf-8;# ssl证书地址#指定pem文件所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。ssl_certificatessl.pem;#指定私钥文件key所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。ssl_certificate_key ssl.key;# ssl验证相关配置ssl_session_timeout 5m; #缓存有效期ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #加密算法ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #安全链接可选的加密协议ssl_prefer_server_ciphers on; #使用服务器端的首选算法location / {root /home/ruoyi-ui/dist;try_files $uri $uri/ /index.html;index index.html index.htm;}location /prod-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://10.56.1.75:8080/;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}#配置80端口重定向443端口server {listen 80;server_name localhost;#用地址重写规则rewrite ^(.*)$ https://${server_name}$1 permanent;}}

配置完成后:

nginx -t;测试配置文件是否正确,再使用命令:

docker exec -i ssl-nginx nginx -t

nginx -s reload; 加载nginx的配置文件并重启

docker exec -i ssl-nginx nginx -s reload

查看日志

docker logs --tail=1000 ssl-nginx

3、在浏览器中输入:https://域名地址,验证SSL是否配置成功

ps: 一个SSL证书只能对应一个端口吗 ?

443端口只是SSL证书的默认端口,SSL证书也是支持其他非443自定义端口的。

多个端口的nginx 在同一个ip地址里面是可以使用同一个ssl 证书的。

启动docker容器的时候 换一下 端口号,剩下的步骤都是一样的(无需修改conf里面的端口号)。

ps:服务器报警:启用了不安全的TLS1.0协议

最近在使用过程中,进行安全漏扫的时候报了这个警告。

TLS 1.0是于1996年发布的老版协议,使用的是弱加密算法和系统。比如SHA-1和MD5,这些算法和系统十分脆弱,存在重大安全漏洞,容易受到降级攻击的严重影响。

修复方法:

将conf文件中的ssl_protocols 改为 TLSv1.2 TLSv1.3

ssl_protocols TLSv1.2 TLSv1.3;

若配置文件里面没有ssl_protocols 则在开启了 ssl 的配置文件里面 添加上面那行代码

然后重启nginx。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。