如何使用『Nginx』配置后端『HTTPS』协议访问

前言

本篇博客主要讲解如何使用 Nginx 部署后端应用接口 SSL 证书,从而实现 HTTPS 协议访问接口(本文使用公网 IP 部署,读者可以自行替换为域名)

申请证书

须知

请在您的云服务平台申请 SSL 证书,一般来说证书期限为一年,到期限需要再次申请

博主这里使用的是阿里云云服务器,阿里云每年可以免费申请 20 个 DigiCert SSL 证书,但是 DigiCert 证书不支持绑定 IP,如果您输入 IP,则会弹出如下错误

Globalsign、GeoTrust、vTrus、CFCA品牌OV单域名证书支持绑定IP,建议您购买Globalsign品牌的证书

这里说明下使用公网 IP 申请证书的情况,我们知道一般来说 SSL 证书只是供域名安装,仅有部分 DV 和 OV 证书是支持 IP 部署的,接下来将要讲解可以使用 IP 部署的免费证书申请步骤

如果是部署【域名】的话可以在自己的云服务厂商下面申请并部署,一般都有免费的额度,对于个人来说足够,比较方便

申请步骤

访问:Free SSL Certificates and SSL Tools - ZeroSSL

然后选择 90 天的证书,一直确定即可,然后按照流程,DNS 验证或是 HTTP 文件验证即可,下面使用 HTTP 文件验证方式作为示例

选择 Download Auth File 并将 Auth File 存放在服务器的 /usr/share/nginx/html/.well-known/pki-validation 文件夹下,令服务器上的 nginx 提供对 Auth File 的HTTP访问的响应

bash 复制代码
        location /.well-known/pki-validation/ {
           root /usr/share/nginx/html/;
        }

没有必要一定是上面这个目录,只要保证 nginx 具有该目录的操作权限即可,否则会爆出 403 错误

然后按照官方给出的 Nginx 部署证书文档部署即可:Installing SSL Certificate on NGINX -- ZeroSSL

上传所有 SSL 证书文件之后,需要合并 certificate.crt 和 ca_bundle.crt 文件

bash 复制代码
cat certificate.crt ca_bundle.crt >> certificate_merge.crt

证书配置

现在服务器的 8080 端口已经运行了后端接口,下面我将要部署 SSL 证书到公网 IP 上

配置 nginx.conf

bash 复制代码
    server {
        listen       443 ssl http2 default_server;
        listen       [::]:443 ssl http2 default_server;
        server_name  _;

        ssl_certificate "/home/dev/certs/certificate_merge.crt";
        ssl_certificate_key "/home/dev/certs/private.key";

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_ciphers PROFILE=SYSTEM;
        ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
          proxy_pass  http://localhost:8080/;
          proxy_set_header           Host $host;
          proxy_set_header  X-Real-IP  $remote_addr;
          proxy_set_header           X-Forwarded-For       $proxy_add_x_forwarded_for;
          client_max_body_size  100m;
        }
    }
bash 复制代码
# 重启 Nginx
systemctl restart nginx.service

证书分类

域名型证书 (DV)

SSL证书是只验证网站域名所有权的简易型(Class 1级)SSL证书,可10分钟快速颁发,能起到加密传输的作用,但无法向用户证明网站的真实身份。

目前市面上的免费证书都是这个类型的,只是提供了对数据的加密,但是对提供证书的个人和机构的身份不做验证。

组织/企业型证书 (OV)

用于验证此域名由特定公司、组织、或者机构所拥有,同时申请的主体身份符合合法注册或者受权威机构承认的实体。

提供加密功能,对申请者做严格的身份审核验证,提供可信身份证明,和DV SSL的区别在于,OV SSL 提供了对个人或者机构的审核,能确认对方的身份,安全性更高。一般为收费证书

增强型证书 (EV)

Extended Validation (EV) 证书是目前最高信任级别的 SSL 证书。证书颁发机构对此的审核极其严苛。增强型证书具有最高级别可信度及安全性,显示带公司名称的绿色地址栏是它的显著特点之一,它可以让访问者更加确信以及更加放心的相信他们所进行交易的网站是真实合法的,从而提升在线交易量。

金融证券、银行、第三方支付、网上商城等,重点强调网站安全、企业可信形象的网站,涉及交易支付、客户隐私信息和账号密码的传输。这部分的验证要求最高,申请费用也是最贵的。

参考文章

无域名,为弹性公网IP申请SSL证书 - 简书 (jianshu.com)

【SSL】OV、DV和EV证书的区别-阿里云开发者社区 (aliyun.com)

如何下载并在服务器上安装SSL证书_数字证书管理服务-阿里云帮助中心 (aliyun.com)

推荐阅读

2022阿里云免费SSL证书申请全过程(图文详解)-阿里云开发者社区 (aliyun.com)

本文由博客一文多发平台 OpenWrite 发布!

相关推荐
闲晨几秒前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
测开小菜鸟2 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
P.H. Infinity2 小时前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天3 小时前
java的threadlocal为何内存泄漏
java
caridle3 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
^velpro^3 小时前
数据库连接池的创建
java·开发语言·数据库
苹果醋33 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花3 小时前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端3 小时前
第六章 7.0 LinkList
java·开发语言·网络
Wx-bishekaifayuan3 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava