nginx搭建https服务器

简介: nginx搭建https服务器

搭建https服务器一般需要向ca机构申请证书,内网测试的话可以自签证书,访问的时候忽略浏览器警告即可。

自签证书

  1. 创建独立站点使用有密码的网站证书私钥文件的自签证书:
openssl genrsa -aes256 -passout pass:111111 -out /usr/local/nginx/ssl/hexo_test_com.key 2048
openssl req -new -x509 -nodes -out /usr/local/nginx/ssl/hexo_dicfin_com.pem -passin pass:111111 -key /usr/local/nginx/ssl/hexo_test_com.key -days 3650
# 根据提示依次填写:CN、Anhui、Hefei、test、devops、test.com、test@test.com
  1. 保存私钥密码:echo "111111" >> /usr/local/nginx/ssl/hexo_test_com.pass
  2. 创建自签客户端证书
openssl req -new -x509 -nodes -out /usr/local/nginx/ssl/client.pem -keyout /usr/local/nginx/ssl/client.key -days 3650
# 根据提示依次填写:CN、Anhui、Hefei、test、devops、test.com、test@test.com
  1. 转换客户端证书为可被浏览器导入的pkcs12格式
openssl pkcs12 -export -clcerts -in /usr/local/nginx/ssl/client.pem -inkey /usr/local/nginx/ssl/client.key -out /usr/local/nginx/ssl/client.p12
# 提示输密码,可填写“111111”

阿里云申请证书

自行查看阿里云控制台的操作手册。

配置https站点

server {
    listen 443 ssl;
    server_name hexo.test.com
    tcp_nodelay on;
    gzip_static always;
    gunzip on;
    gunzip_buffers 16 8k;
    gzip_proxied expired no-cache no-store private auth;
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 3;
    gzip_types text/plain application/x-javascript
                          text/css application/xml text/javascript
                          application/x-httpd-php image/jpeg
                          image/gif image/png;
    gzip_vary on;
    charset utf-8;
    root /home/nodejs/public/;
    index index.html;
    ssl_certificate ../ssl/hexo_test_com.pem;
    ssl_certificate_key ../ssl/hexo_test_com.key;
    ssl_password_file ../ssl/hexo_test_com.pass;
}

配置密钥交换算法

使用自签证书存在一个问题,如果私钥文件泄露可能会导致中间人攻击,所以需要配置密钥交换算法,保证通信双方可以安全地交换密钥,即便密钥泄露,第三方也无法推算出会话密钥。

  1. 生成DH参数文件:openssl dhparam -out /usr/local/nginx/ssl/dhparam.pem 2048
  2. 编辑配置文件:
ssl_certificate ../ssl/hexo_test_com.pem;
ssl_certificate_key ../ssl/hexo_test_com.key;
ssl_password_file ../ssl/hexo_test_com.pass;
ssl_dhparam ../ssl/dhparam.pem;
ssl_ecdh_curve auto;

https会话缓存

建立https连接会占用一定资源,为加快HTTPS建立连接的速度,TLS协议使用了会话缓存机制。

会话缓存机制可以使已经断开连接的HTTPS会话重用之前的协商会话继续HTTPS数据传输。

会话缓存机制有两种实现方式:会话编号会话凭证。下面以会话凭证的方式作为示例。

  1. 生成会话凭证密钥文件:openssl rand 80 > /usr/local/nginx/ssl/session_ticket.key
  2. 编辑配置文件:
# 会话缓存存储大小为10MB
ssl_session_cache shared:SSL:10m;
# 以会话凭证机制实现会话缓存
ssl_session_tickets off;
# 会话缓存超时时间为10分钟
ssl_session_timeout 10m;
# 会话缓存密钥文件
ssl_session_ticket_key ../ssl/session_ticket.key;

配置示例

server {
        listen 80;
        server_name hexo.test.com;
        # 强制使用https
        rewrite ^(.*)$ https://$host$1? permanent;
    }
    server {
        listen 443 ssl;
        server_name hexo.test.com
        # nodelay置为on时,数据包立即发送,适用于延时敏感的场景。置为off时,数据在缓冲中达到一定的量才会发送。
        tcp_nodelay on;
        
        gzip_static always;
        gunzip on;
        gunzip_buffers 16 8k;
        gzip_proxied expired no-cache no-store private auth;
        gzip on;
        gzip_min_length 1k;
        gzip_comp_level 3;
        gzip_types text/plain application/x-javascript
                              text/css application/xml text/javascript
                              application/x-httpd-php image/jpeg
                              image/gif image/png;
        gzip_vary on;
        charset utf-8;
        root /home/nodejs/public/;
        index index.html;
        ssl_certificate ../ssl/hexo_test_com.pem;
        ssl_certificate_key ../ssl/hexo_test_com.key;
        ssl_password_file ../ssl/hexo_test_com.pass;
        
        ssl_dhparam ../ssl/dhparam.pem;
        ssl_ecdh_curve auto;
        
        ssl_session_cache shared:SSL:10m;
        ssl_session_tickets off;
        ssl_session_timeout 10m;
        ssl_session_ticket_key ../ssl/session_ticket.key;
        # 启用HSTS
        add_header Strict-Transport-Security "max-age=6307200; includeSubDomains; preload";
        # 禁止被嵌入框架
        add_header X-Frame-Options DENY;
        # XSS跨站防护
        add_header X-XSS-Protection "1; mode=block";
        # 防止在浏览器中的MIME类型混淆攻击
        add_header X-Content-Type-Options nosniff;
    }
相关文章
|
13天前
|
Web App开发 算法 应用服务中间件
nginx开启局域网https访问
【10月更文挑战第22天】为了调试WebRTC功能,需要在局域网内搭建HTTPS协议。具体步骤包括:在已部署Nginx和安装OpenSSL的环境中生成私钥、证书签名请求和自签名证书;将生成的文件放置到Nginx的证书目录并修改Nginx配置文件,最后重启Nginx服务。注意,自签名证书不受第三方机构认可,如需正式使用,需向CA申请签名。
|
21天前
|
搜索推荐 安全 网络安全
服务器支持HTTPS的时机和条件
【10月更文挑战第23天】服务器支持HTTPS的时机和条件
15 5
|
1月前
|
安全 应用服务中间件 Shell
nginx配置https的ssl证书和域名
nginx配置https的ssl证书和域名
|
1月前
|
Docker 容器
docker nginx-proxy 添加自定义https网站
docker nginx-proxy 添加自定义https网站
37 4
|
2月前
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
文章介绍了如何配置HAProxy以支持HTTPS协议和实现服务器的动态上下线。
141 8
HAProxy的高级配置选项-配置haproxy支持https协议及服务器动态上下线
|
3月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
3月前
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
82 3
|
3月前
|
负载均衡 应用服务中间件 Apache
Nginx与Apache的终极对决:揭秘Web服务器界的“速度与激情”!你不可不知的性能霸主如何颠覆传统,震撼互联网的根基!
【8月更文挑战第13天】互联网技术发展中,Web服务器至关重要,Nginx与Apache是最广泛使用的两种。Apache历史悠久,但Nginx以轻量级和高性能脱颖而出。Nginx采用事件驱动架构,高效处理大量并发连接,而Apache使用进程驱动,高并发下资源消耗大。以餐厅为例,Nginx像大堂经理同时处理多个顾客需求,远比Apache为每位顾客分配服务员更高效。性能测试显示Nginx处理能力远超Apache。此外,Nginx配置简洁灵活,尤其在负载均衡方面表现突出。尽管Apache适合动态内容处理,但在快速变化的互联网环境中,Nginx因其独特优势成为许多开发者和企业的首选。
65 7
|
3月前
|
应用服务中间件 Linux 网络安全
在Linux中,如何配置Apache或Nginx Web服务器?
在Linux中,如何配置Apache或Nginx Web服务器?
|
3月前
|
存储 负载均衡 应用服务中间件
FastDFS+Nginx:轻松搭建本地文件服务器
【8月更文挑战第19天】在现今互联网快速发展的时代,文件服务器作为支撑各种在线服务的重要基础设施,其稳定性和性能显得尤为关键。FastDFS作为一款开源的轻量级分布式文件系统,凭借其高效的文件管理功能,特别适合用于构建相册网站、视频网站等以文件为载体的在线服务。本文将详细介绍如何利用FastDFS和Nginx快速搭建一个本地文件服务器,为您的工作和学习提供技术支持。
292 0