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

这篇具有很好参考价值的文章主要介绍了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.pem
           Your key file has been saved at:
           /etc/letsencrypt/live/example.com/privkey.pem
           Your certificate will expire on 2024-06-16. To obtain a new or
           tweaked version of this certificate in the future, simply run
           certbot again. To non-interactively renew *all* of your
           certificates, 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颁发的。文章来源地址https://www.toymoban.com/news/detail-844091.html

到了这里,关于nginx配置ssl支持https的详细步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx配置SSL证书配置https访问网站 超详细(附加配置源码+图文配置教程)

    最近在阿里云上入手了一台云服务器,准备搭建一套java程序,在 Nginx 配置SSL证书时,配上之后前端可以正常以https的方式打开,但是访问不到后端,自己也是明明知道是 Niginx 配置的问题,但就不知道错哪了,当时心里的那种感觉真是无法表达呜呜呜… 经过排查发现 前端访

    2024年02月11日
    浏览(50)
  • nginx配置https后报错nginx: [emerg] https protocol requires SSL support in XXX.conf详细解决方法

    最近,在测试环境的nginx里增加了一个 https 配置: 然后,执行命令: 结果,nginx就报错了: 百度发现,是之前安装nginx时没有安装ssl模块,需要重新安装一个nginx。步骤如下: 1.下载好nginx安装包,例如 nginx-1.17.2.tar.gz 2.查看下目前nginx使用的配置是什么: 发现,确实没有ss

    2023年04月08日
    浏览(55)
  • 将SSL证书设置成HTTPS的详细步骤

    在互联网上建立一个安全且可信任的网站,HTTPS是一种常用的解决方案。HTTPS是HTTP的安全版本,通过使用SSL/TLS协议对传输的数据进行加密,确保数据传输的安全性。要实现HTTPS,你需要将SSL证书设置到你的网站上。以下是详细的步骤: 获取SSL证书:你需要获取SSL证书。你可以

    2024年02月09日
    浏览(45)
  • 配置https---Nginx认证ssl证书

    nginx作为前端的负载均衡服务器已经很熟悉了,项目需要使用https安全的时候就需要认证证书了 dockerweb管理工具 Portainer 如果对docker不那么熟悉可以使用docker 第三方管理端 然后访问本地9000端口,登录后可以管理容器镜像 有了该工具可以直接进入容器查看日志等操作 nginx环境安装

    2024年01月19日
    浏览(53)
  • LaravelS 项目配置ssl 支持https 访问

    ####laravalS 配置ssl 请求支持https nginx: [emerg] no “ssl_certificate” is defined for the “listen … ssl” directive in /www/server/panel/vhost/nginx/im.17epk.com.conf:14 配置 1、 listen 443 ssl http2; 2.、 #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; ssl_certificate /www/server/

    2024年02月15日
    浏览(42)
  • nginx配置ssl证书使用https访问

    一:申请证书,我使用的是阿里云免费证书 二:下载证书,解压到服务器上 两个文件:www.xx.com.pem和www.xx.com.key 三:打开配置文件/usr/local/nginx/conf/nginx.conf 放开端口443,替换ssl_certificate和ssl_certificate_key为自己证书路径    server {         listen       443 ssl;         server_na

    2024年01月20日
    浏览(60)
  • 在nginx中部署https服务,详细步骤

    目录 前言 一、https是什么? 二、部署步骤 1.下载SSL证书 2.上传文件 3.解压文件 4.在nginx.conf配置文件中,修改https服务 5.修改hosts文件 6.http跳转到https中 三、注意事项 Web服务器一般指网站服务器,可以处理浏览器等Web客户端的请求并返回相应响应,也可以放置网站文件,让全

    2024年02月13日
    浏览(54)
  • Nginx配置ssl证书实现https安全访问

    目录 一、Nginx的安装与配置 安装步骤 二、SSL证书获取 三、Nginx配置 前题条件,拥有服务器与可以解析到该服务器的自己的域名。 若已安装好了Nginx,则需查看自己的Nginx是否开启了SSL的模块功能:  显示如上,则代表ssl功能已开启,否则可能出现以下错误提示: nginx: [emer

    2024年02月15日
    浏览(39)
  • Nginx 配置SSL,开放https协议和443端口

    目录 一、准备工作 二、生成私钥(key) 三、生成证书签名请求/公钥(csr) 四、生成证书(crt) 五、给nginx配证书 六、访问测试 阅读本文前您需要学会如何安装Nginx, 如果您还不会安装Nginx请参考CentOS7安装Nginx,或者直接关注本栏目Nginx。         如果是在Windows下,请

    2024年02月04日
    浏览(39)
  • 配置SSL证书后,Nginx的HTTPS 不能正常

    申请ssl证书,配置nginx支持https与证书,可是访问https的nginx总是出现错误,也导致小程序发https请求失败,这是什么原因呢? 如果在配置SSL证书后,Nginx的HTTPS无法正常工作,可能有以下几个常见原因: 1、证书配置错误: 证书文件路径出现错误或不存在;文件格式错误;证书

    2024年02月03日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包