nginx配置ssl支持https的详细步骤

nginx配置ssl支持https的详细步骤

文章概要:在建站的时候我们通常要让网站通过https进行访问,不然使用http过程中,所有信息都是未加密的,并且用户访问的时候浏览器会屏蔽我们的网站。本文介绍如何通过nginx配置ssl以支持通过https协议访问网站。

本文内容来自:谷流仓AI - ai.guliucang.com

一、修改nginx配置文件

  1. 打开nginx.conf配置文件,修改需要添加支持ssl的server块,比如
http {server {listen       443 ssl; # https默认为443端口,当然也可以用任何端口。后面ssl用于告诉Nginx在指定的端口上启用SSL/TLS加密server_name  example.com; # 你网站的域名# 下面输入证书和私钥的地址(详细解释看下文的注释1)ssl_certificate      certs/my_cert.crt; # 证书(查看注释2)ssl_certificate_key  certs/my_cert.key; # 证书对应的私钥文件(查看注释3)ssl_session_cache    shared:SSL:1m; # 可选配置,设置了 SSL 会话缓存的类型和大小。(具体查看注释5)ssl_session_timeout  5m; # 可选配置,设置了 SSL 会话缓存的超时时间为 5 分钟。ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 可选配置, 指定了 SSL/TLS 握手过程中允许使用的加密算法的优先级顺序。(具体查看注释7)ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; # 可选配置,指定了允许使用的 SSL/TLS 协议版本。(具体查看注释8)ssl_prefer_server_ciphers  on; # 可选配置(具体查看注释9)}}
  1. 修改保存了上面的配置文件之后,使用nginx -t验证一下配置文件是否正确配置。
  2. 提示syntax ok之后,就可以用nginx -s reload重载配置,使配置立即生效。

二、验证

通过https访问上面配置好的网站,可以在浏览器地址栏左侧的锁图标点开看看是否显示证书是安全的了。

三、(可选)HTTP重定向到HTTPS

如果希望将所有HTTP请求重定向到HTTPS,可以添加以下配置:

server {listen 80;server_name example.com;return 301 https://$server_name$request_uri;
}

保存修改之后,nginx -s reload重载配置文件即可。

相关注释

  1. ssl证书

    • 有免费的有也收费的,没钱的用免费的就行了, 比如Let’s Encrypt。
    • 如何下载证书?
      • 可以去阿里云的数字证书页面获取,可以申请20个免费的DigitCert证书
      • Let’s Encrypt的可以安装certbot自动化下载证书还可以自动续期
    • Let’s Encrypt如何通过certbot下载证书?
      1. centos中通过yum安装certbot:yum install certbot -y

      2. 签发下载泛域名证书*.example.com(这样所有子域名也可以用): certbot certonly -d "*.example.com" -d example.com --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory, 其中--preferred-challenges dns-01表示通过dns的方式验证自己对网站的所有权。比如我的域名解析服务是阿里云提供的,按照certbot的要求,去阿里云的云解析界面添加一个指定的TXT类域名解析就行了。

      3. 签发成功后给出如下提示

        		 Congratulations! Your certificate and chain have been saved at:/etc/letsencrypt/live/example.com/fullchain.pemYour key file has been saved at:/etc/letsencrypt/live/example.com/privkey.pemYour certificate will expire on 2024-06-16. To obtain a new ortweaked version of this certificate in the future, simply runcertbot again. To non-interactively renew *all* of yourcertificates, run "certbot renew"
        
      4. 之后快要过期之前通过certbot renew即可签发新的证书。

    • 证书有效期?
      • 免费的证书目前一般只有3个月有效期,到期之前需要重新签发新的证书
    • 证书还没过期,直接新申请一个证书,旧的证书会立即失效吗?
      • 不会。旧证书的过期时间是固定的,不会因为申请了新证书而提前失效。除非你直接把旧的证书从服务器上删掉了。
      • 可以在在过期前提前申请好一个新的证书,新的证书不会影响旧的证书。然后过期前把新的证书放到服务器替换掉旧的证书,并nginx -s reload重载配置就行了。
  2. 关于ssl_certificate

    • 证书文件包含服务器的公钥、服务器信息以及证书颁发机构(CA)的数字签名。
    • 证书文件用于向客户端证明服务器的身份,并提供服务器的公钥。
    • 可以是.pem格式的文件,也可以是.crt格式的文件(详情查看注释4)
  3. 关于ssl_certificate_key

    • 私钥文件包含与证书文件中公钥相对应的私钥。
    • 私钥用于对数据进行解密和签名操作,必须严格保密。
    • 可以是.pem格式的文件,也可以是.key格式的文件
  4. pem文件和crt文件有啥区别,都能用吗?

    • SSL证书的PEM和CRT格式都是用于存储SSL/TLS证书的文件格式,它们之间有一些区别,但在大多数情况下可以互换使用。
    • PEM(Privacy Enhanced Mail)格式是一种基于Base64编码的文件格式,以 -----BEGIN CERTIFICATE----- 开头,以 -----END CERTIFICATE----- 结尾。PEM文件可以包含证书、私钥或者公钥。PEM格式的文件可以用于存储SSL/TLS证书、私钥和公钥。
    • CRT(Certificate)格式与PEM格式类似,也是基于Base64编码,但通常只包含证书本身,不包含私钥。CRT格式的文件通常只用于存储SSL/TLS证书。
    • 如果你有一个包含证书和私钥的PEM文件,可以直接在Nginx配置中使用该文件。以Let’s Encrypt签发的证书为例,ssl_certificate填/path/to/fullchain.pem和ssl_certificate_key填对应私钥地址/path/to/privkey.pem
    • 如果你有单独的CRT证书文件和私钥文件,需要在Nginx配置中分别指定证书文件和私钥文件的路径。
  5. ssl_session_cache

    • 这个配置设置了 SSL 会话缓存的类型和大小。
    • shared 表示在所有工作进程之间共享缓存。
    • SSL 是缓存的名称。
    • 1m 表示缓存的最大大小为 1 兆字节。
    • 启用 SSL 会话缓存可以提高性能,因为它允许客户端在后续连接中重用之前协商的会话参数,避免了重新进行完整的 SSL/TLS 握手过程。
  6. ssl_session_timeout

    • 这个配置设置了 SSL 会话缓存的超时时间为 5 分钟。
  7. ssl_ciphers

    • 这个配置指定了 SSL/TLS 握手过程中允许使用的加密算法的优先级顺序。
    • 它使用了一个加密算法的列表,按照优先级从高到低排列。
    • 建议使用安全性较高的加密算法,并禁用一些不安全的算法(如 NULL、aNULL、MD5、ADH、RC4 等)。
  8. ssl_protocols

    • 指定了允许使用的 SSL/TLS 协议版本。
    • 建议只启用安全的协议版本,如 TLSv1.1、TLSv1.2 和 TLSv1.3,禁用不安全的 SSL v2 和 SSL v3。
  9. ssl_prefer_server_ciphers

    • 这个配置指定了在 SSL/TLS 握手过程中,优先使用服务器端指定的加密算法,而不是客户端提供的加密算法。
    • 这样可以确保使用更安全的加密算法。
  10. 同一个域名不同端口,可以用同一个SSL证书吗?

    • 可以。SSL证书是基于域名颁发的,而不是基于端口号。
    • 例如,假设你有一个域名为example.com的网站,并且你在nginx.conf中配置了多个服务器块,分别监听不同的端口:
server {listen 443 ssl;server_name example.com;ssl_certificate /path/to/certificate.crt;ssl_certificate_key /path/to/private.key;...
}server {listen 8443 ssl;server_name example.com;ssl_certificate /path/to/certificate.crt;ssl_certificate_key /path/to/private.key;...
}

在上面的示例中,两个服务器块都使用相同的SSL证书(certificate.crt)和私钥(private.key),尽管它们监听不同的端口(443和8443)。

当客户端通过不同的端口访问你的网站时,例如https://example.com或https://example.com:8443,Nginx将使用相同的SSL证书来建立安全连接,因为证书是基于域名example.com颁发的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/766252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS的特殊技巧

1.精灵图 使用精灵图核心总结: 1. 精灵图主要针对于小的背景图片使用。 2. 主要借助于背景位置来实现--- background-position 。 3. 一般情况下精灵图都是负值。(千万注意网页中的坐标: x轴右边走是正值,左边走是负值&#xf…

Spring设计模式-实战篇之策略模式 + 工厂模式

案例:使用策略模式和工厂模式优化大量的if-else 原先代码如下,有衣服、零食、蔬菜三种类型的商品,并且每一类满减折扣不一样,如果使用if-else,代码会显得非常冗长,并且大量的if-else很容易眼花导致维护代码…

Mybatis DAO开发

使用Mybatis开发Dao,通常有两个方法,即 原始Dao开发方法Mapper代理开发方法 原始DAO开发方式 原始Dao开发方法需要程序员编写Dao接口和Dao实现类,无非就是在Dao实现类里面调用映射文件里面定义的sql而已。 工具类 package org.example.u…

海康威视-AIOT的业务转型

海康威视的转型和定位为智能物联网(AIoT)解决方案和大数据服务的提供商。 公司不仅仅聚焦于其核心的视频监控业务,而且正在积极拓展到新的技术领域和市场。通过专注于物联感知、人工智能、大数据等技术的创新,对未来技术发展方向的…

ptx指令,抽象指令与架构

(没用的问题:ptx如何抽象sass,它创造ir的方式和结果与mlir 创造ir有什么区别吗?) PTX操作数类型: 寄存器操作数:在PTX中,寄存器用于存储临时数据,并在指令之间传递值。寄…

生产计划数据模型,实现能源企业数字化高效管理

随着市场经济的快速发展,能源企业在经济发展中的地位也随之提高。但由于能源企业在生产计划经济管理上存在指标不平衡、市场观念落后和环保意识欠缺等问题,导致企业的经济效益降低。目前,提高企业的生产计划管理是改善能源企业现状最有利的途…

计算机网络:物理层下的传输媒体概览

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

MySQL---视图

目录 一、介绍 二、语法 三、视图的更新 四、视图作用 一、介绍 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲&#…

Git常用指令总结

Git常用指令总结 下载git,这个不需要交的!!! 1、初始化自己的git仓库 git config --global user.name “Your name” 配置自己的用户名 git config --global user.email “mailexample.com” 配置邮箱 git config --global c…

blender记一下法线烘焙

这里主要记一下使用cage的方式 原理 看起来是从cage发射射线,打中高模了就把对应uv那个地方的rgb改成打中的点的normal的rgb 正事 那么首先需要一个高模 主要是几何要丰富 无所谓UV 然后一个低模,既然上面提到UV,那低模就要展UV, 展完之后…

Ambari——编译——解决解决windows和linux下phantomjs链接超时问题

您的支持是我继续创作与分享的动力源泉!!! 您的支持是我继续创作与分享的动力源泉!!! 您的支持是我继续创作与分享的动力源泉!!! 错误日志: [INFO] Copying extracted folder C:\Users\LENOVO\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip-extract-1786692…

『K8S 入门』三:资源调度

『K8S 入门』三:资源调度 一、Label 和 Selector 可以通过 Selector 基于 Label 匹配需要的资源 Label 标签 配置文件中(metadata.labels)配置 metadata: # Pod相关的元数据,用于描述Pod的数据name: nginx-demo #Pod的名称lab…

后端Jwt实现Token编码、解码以及axios的request请求头的Token传输方式

目录 一、什么是JWT: 二、Jwt的使用: 第一步:引入依赖: 第二步:配置拦截器:JwtInterceptor.java: 其中异常文件ServiceException配置如下: 全局异常文件GlobalException.java文…

利用Base64加密算法将数据加密解密

1. Base64加密算法 Base64准确来说并不像是一种加密算法,而更像是一种编码标准。 我们知道现在最为流行的编码标准就是ASCLL,它用八个二进制位(一个char的大小)表示了127个字符,任何二进制序列都可以用这127个字符表…

hbuilderX打包vue项目白屏问题以及element-ui的icon图标无法正常显示问题

附录一:hbuilderX打包vue项目白屏问题 将项目目录下的config文件夹里的index.js文件中,将build对象下的assetsPublicPath中的“/”,改为“./”后,再打包生成的 dist 文件 build: { // assetsPublicPath: /,//修改前 assetsPublicPa…

逻辑 | 逻辑先修营

学习到更新日期逻辑先修营-3常见逻辑连词及逻辑表达2024-3-23 1.形式逻辑基础1 2.形式逻辑基础2 3.常见逻辑连词及逻辑表述 4.OR相关考点 5.AND相关考点 6.逻辑箭头基本考点1 7.逻辑箭头基本考点2 8.代入逻辑推理事实真1 9.代入逻辑推理事实真2 10.形式逻辑四大基本考点…

C语言-指针问题-排序问题

题目描述 输入 10 个整数&#xff0c;将他们从小到大排序后输出&#xff0c;并给出每个元素在原来序列中的位置. 将程序需要的代码补全&#xff0c;只提交 begin 到 end 部分的代码。 #include <stdio.h> #define N 10int main() {int a[N], b[N], cnt 1, i, j, tmp;…

【Entity Framework】 EF中DbContext类详解

【Entity Framework】 EF中DbContext类详解 一、概述 DbContext类是实体框架的重要组成部分。它是应用域或实例类与数据库交互的桥梁。 从上图可以看出DbContext是负责与数据交互作为对象的主要类。DbContext负责以下活动&#xff1a; EntitySet&#xff1a;DbContext包含…

Web前端—事件循环

事件循环 事件循环浏览器的进程模型何为进程&#xff1f;何为线程&#xff1f;浏览器有哪些进程和线程&#xff1f; 渲染主线程是如何工作的&#xff1f;若干解释何为异步&#xff1f;面试题&#xff1a;如何理解JS的异步&#xff1f;JS会阻碍渲染任务有优先级吗&#xff1f;面…

宜搭低代码高级认证实操题2 faas连接器加密解密

密钥维护页-保证有一条数据 敏感信息提交页 存档页&#xff0c;只是用来存数据的审批的时候不用这个表提交数据不然会出两条 授权查看页 FaaS连接器先下载好他的示例代码然后按照要求配置好参数直接拷贝进去就行 然后需要在云开发环境里面先new一个terminal然后跑一下./builde…