当前位置: 首页 > news >正文

个人项目简单https服务配置

1.SSL简介

SSL证书是一种数字证书,由受信任的证书颁发机构(CA)颁发,用于在互联网通信中建立加密链接。SSL代表“安全套接层”,是用于在互联网上创建加密链接的协议。SSL证书的主要目的是确保数据传输的安全性和隐私性,同时验证网站的所有权。

1.特点

  1. 加密:SSL证书使用公钥加密技术来加密数据,确保只有预期的接收者才能解密和读取信息。

  2. 身份验证:通过验证网站的域名和组织信息,SSL证书帮助用户确认他们正在与合法的网站进行交互。

  3. 数据完整性:SSL证书确保数据在传输过程中未被篡改。

  4. 信任:由受信任的CA颁发的证书,可以让用户对网站的真实性和安全性有信心。

  5. 浏览器兼容性:大多数现代浏览器都支持SSL,并且当用户访问使用SSL证书的网站时,浏览器会显示一个锁形图标,表示该网站是安全的。

2.类型

  • 域名验证(DV)证书:只验证域名的所有权。
  • 组织验证(OV)证书:除了验证域名外,还验证组织的合法性。
  • 扩展验证(EV)证书:提供最高级别的验证,包括对组织的详细验证,通常在浏览器地址栏中显示为绿色,并可能显示组织名称。
    注意:
  • 各大小程序运营商必须要求项目后端配置SSL证书,且后端请求域名必须为https请求,否则无法正常访问。
  • 微信等社交聊天界面中如果网站地址没有配置ssl和https,则会弹出页面不安全,默认无法跳转。

2.SSL证书的申请获取

ssl证书的获取途径有很多,例如各大云服务器厂商,CA机构都有提供ssl证书服务,或者通过第三方机构购买。网上也有许多免费的ssl证书服务,免费的ssl一般都会有使用期限,到期后需要重新申请。
这里列出几个比较常用的ssl证书申请途径

  1. 云厂商:阿里云、腾讯云等,这些云厂商一般都有ssl证书服务,申请比较方便。
  2. JoySSL,Let’s Encrypt等免费ssl证书服务,这些免费ssl证书服务一般都有申请入口,使用起来比较方便。

申请流程(这里以阿里云为例):

  1. 进入阿里云ssl证书服务,点击“SSL证书管理”。阿里云

  2. 选择需要申请的整数类型(这里个人测试证书可以免费试用三个月,如果是个人练习推荐使用)。
    在这里插入图片描述

  3. 点击购买证书。购买证书表单中需要选择购买的类型,自己服务器的域名,以及ssl证书的服务类型。

  • 这里的服务器域名需要填写自己的自己购买的域名(注意: 某些免费试用的域名是无法申请ssl证书的,这里建议直接买个)阿里云域名
  • 这里我们是要配置自己的网站服务,就需要选择“DV域名验证”。
    在这里插入图片描述
  1. 选择好之后点击“立即购买”按钮,然后选择“确认订单”,支付成功后即可申请ssl证书。
  2. 申请通过之后就可以在“ssl证书管理”中看到自己的证书。点击进去就会弹出证书的详情,点击“下载”按钮即可下载到本地。 以下介绍一下下载文件的类型:
    在这里插入图片描述
文件类型描述
PEM (.pem)这是一种文本文件格式,可以使用文本编辑器查看和编辑。它通常包含证书和私钥,适用于大多数服务器和应用程序,如Nginx和Apache。
KEY (.key)这是私钥文件,通常与PEM格式的证书一起使用。它必须保持安全和私密,不应该公开或分享。
CRT (.crt)这是一种二进制格式的文件,通常只包含证书。它常用于Apache服务器。
DER (.der)这是二进制文件格式,与CRT相同,但以DER格式保存。
PFX/P12 (.pfx/.p12)这是一种二进制格式的文件,同时包含证书和私钥,通常用于Microsoft和Java服务器,如IIS和Tomcat。
JKS (.jks)这是Java密钥存储文件,专用于Java平台的密钥库格式,常用于基于Java的Web服务器或应用程序。
CER (.cer)这通常是一个二进制文件,包含证书信息,但不含私钥。
CRL (.crl)证书吊销列表,用于列出被吊销的证书。
CSR (.csr)证书签名请求文件,用于生成证书。

适用场景和服务包括:

  • Web服务器:如Nginx、Apache、Tomcat等,通常使用PEM和CRT格式。
  • 应用程序:如Java应用,可能使用JKS格式。
  • 电子邮件和PKI:可能使用PFX/P12格式。
  • 操作系统和设备:如Windows、Linux等,可能使用不同的格式,如PEM、DER、CRT。

注意: 我们这里的项目前端是部署在Nginx上,后端使用的nodejs,因此我们需要下载nginx对应的文件和apache对应的文件。

3.后端配置是证书及HTTPS请求

1. 初始化

首先我们下来配置一下后端提供https服务。
我们后端是使用express框架,在express中配置https服务比较简单。如果没有express框架可以使用如下命令创建一个express项目:

npx express-generator # 创建一个express项目

然后我们安装一下依赖并同时安装一下https模块:

npm install
npm install https --save

2. 配置https服务

我们打开bin文件夹下的www文件,在这个文件中导入https模块,并通过fs模块将下载好的证书文件读取出来引入,然后将http服务替换为https创建服务并配置端口号,ssl证书配置文件。

const https = require('https');
const fs = require('fs');
const path = require('path');
// 引入证书文件
const certificate = fs.readFileSync(path.join(__dirname,'../ssl//jeek-space-blog.top_public.crt'), 'utf8');
const certificateChain = fs.readFileSync(path.join(__dirname,'../ssl/jeek-space-blog.top_chain.crt'), 'utf8');
const privateKey = fs.readFileSync(path.join(__dirname,'../ssl/jeek-space-blog.top.key'), 'utf8');// 配置https服务器选项
const credentials = { cert: certificate, ca: certificateChain, key: privateKey };// 床加你https服务
const  server = https.createServer(credentials,app);

配置好以后我们可以完成了express项目中的https服务的配置。

4.前端配置是证书及HTTPS请求

前端配置https服务更加简单,因为我的项目是部署在nginx上的,我们只需要在nginx的配置文件中配置一下ssl证书即可。

server {listen 443 ssl; // 使用ssl服务并配置端口号server_name your_domain.com; //配置域名ssl_certificate /path/to/your_certificate.pem; // _certificate.pem 文件路径ssl_certificate_key /path/to/your_private_key.key; // _private_key.key 文件路径ssl_trusted_certificate /path/to/your_intermediate_certificate.pem; // _intermediate_certificate.pem 文件路径ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;location / {root /usr/share/nginx/html;index index.html index.htm;}}
// 配置http服务重定向到https
server {listen 80;server_name your_domain.com;return 301 服务器域名;
}

配置完重载nginx配置文件即可完成https服务的配置。

相关文章:

个人项目简单https服务配置

1.SSL简介 SSL证书是一种数字证书,由受信任的证书颁发机构(CA)颁发,用于在互联网通信中建立加密链接。SSL代表“安全套接层”,是用于在互联网上创建加密链接的协议。SSL证书的主要目的是确保数据传输的安全性和隐私性…...

Rust 函数

Rust 函数 Rust 是一种系统编程语言,以其安全性、并发性和性能而闻名。函数是 Rust 编程语言中的基本构建块,用于封装可重用的代码块。本文将深入探讨 Rust 中的函数,包括其定义、特性、参数、返回值以及高级概念。 函数定义 在 Rust 中&a…...

微信小程序中的 `<block>` 元素:高效渲染与结构清晰的利器

微信小程序中的 <block> 元素&#xff1a;高效渲染与结构清晰的利器 在微信小程序的开发中&#xff0c;<block> 元素扮演着举足轻重的角色。尽管它不会在页面中渲染任何可见的节点&#xff0c;但作为一个逻辑上的容器&#xff0c;<block> 在条件渲染和循环渲…...

选读算法导论5.2 指示器随机变量

为了分析包括包括雇佣分析在内的许多算法&#xff0c;我们将使用指示器随机变量&#xff0c;它为概率和期望之间的转换提供了一个便利的方法&#xff0c;给定一个样本空间S和事件A&#xff0c;那么事件A对应的指示器随机变量&#xff1a; Xa 1 如果A发生    0 如果…...

大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

centos9 nginx 版本

centos9 安装 ssh -V OpenSSH_8.7p1, OpenSSL 3.2.2 4 Jun 2024 openssl version OpenSSL 3.2.2 4 Jun 2024 (Library: OpenSSL 3.2.2 4 Jun 2024) sudo yum install nginx Installing:nginx x86_64 2:1.20.1…...

https访问报错:net::ERR_CERT_DATE_INVALLD

目录 简介异常排查原因解决补充 简介 访问https资源出现报错 异常 排查 将地址拿到浏览器进行访问&#xff0c;可以很清晰的看到出现该问题的原因 原因 1、SSL证书已过期 2、服务器日期不准&#xff0c;不在证书有效期 解决 1、重新申请SSL证书&#xff0c;并配置 2、校正…...

cat用来查看文件内容、合并文件,或者将文件内容输出到终端

cat 是 Unix 和 Linux 系统中的一个命令&#xff0c;它的名称来源于 “concatenate”&#xff08;连接&#xff09;&#xff0c;主要用来查看文件内容、合并文件&#xff0c;或者将文件内容输出到终端。 常用用法 查看文件内容 cat filename输出 filename 的内容到终端中。 例…...

基于ssm大学生自主学习网站的设计与实现

文未可获取一份本项目的java源码和数据库参考。 1、毕业论文&#xff08;设计&#xff09;的背景及意义&#xff1a; &#xff08;1&#xff09;研究背景 目前&#xff0c;因特网是世界上最大的计算机互联网络&#xff0c;它通过网络设备将世界各地互相独立的不同规模的局域…...

C++基础补充(01)C++11基于范围的for循环

文章目录 1. 基本语法1.1 decalaration默认获取值引用&自动类型推导&#xff08;auto&#xff09; 1.2 container数组STL容器初始化列表自定义类型返回容器的函数 2. 其他示例2.1 遍历数组2.2 遍历vector&#xff0c;并修改元素2.3 使用常量引用遍历&#xff0c;防止容器中…...

qt6 使用QPSQL

检查可用的数据库驱动&#xff1a; // iteator all database driverQStringList drivers QSqlDatabase::drivers();QStringList::iterator it;for (it drivers.begin(); it ! drivers.end(); it){qDebug() << *it;} qt6 自带pg数据库驱动&#xff1a; pro文件加个说明&…...

【PostgreSQL】提高篇——公用表表达式(CTE)和窗口函数

在这篇文章中&#xff0c;我将详细介绍 PostgreSQL 中的公用表表达式&#xff08;CTE&#xff09;和窗口函数&#xff0c;帮助你理解如何使用它们进行复杂的数据分析。我将通过具体的示例来演示这些概念的实际应用&#xff0c;并在每个示例中提供详细的解释和注释。 1. 公用表…...

【min25筛】【CF2020F】Count Leaves

题目 定义 f ( n , 0 ) 1 f(n,0)1 f(n,0)1&#xff0c; f ( n , d ) ∑ k ∣ n f ( k , d − 1 ) f(n,d)\sum_{k|n}f(k,d-1) f(n,d)∑k∣n​f(k,d−1) 给出 n , k , d n,k,d n,k,d&#xff0c;你需要求出: ∑ i 1 n f ( i k , d ) m o d ( 1 0 9 7 ) \sum_{i1}^n f(i^k…...

【d57】【sql】1661. 每台机器的进程平均运行时间

思路 一方面考察自连接&#xff0c;另一方面考察group by 这里主要说明 group by 用法&#xff1a; 1.在 SQL 查询中&#xff0c;GROUP BY 子句用于将结果集中的行分组&#xff0c;目的通常就是 对每个组应用聚合函数&#xff08;如 SUM(), AVG(), MAX(), MIN(), COUNT() 等…...

ArcGIS共享数据的最佳方法(不丢可视化、标注等各类显示信息一样带)

今天我们介绍一下ArcGIS数据共享的几个小妙招 我们时常要把数据发给对方&#xff0c;特别是很多新手朋友要将shp发给对方时只是发送了shp后缀的文件&#xff0c;却把shp的必要组成文件dbf、shx等等给落下了。 还有很多朋友给图层做好了符号化标注&#xff0c;但是数据一发给别…...

小程序this.getOpenerEventChannel()当前页面与navigateTo页面之间数据通信

this.getOpenerEventChannel() 是微信小程序中获取页面打开它的页面事件通道的方法。但是&#xff0c;这个方法只在页面是被wx.navigateTo打开的情况下才能使用。如果页面是通过其他方式打开的&#xff0c;比如wx.redirectTo&#xff0c;那么就无法使用这个方法。 解决方案&…...

调用飞书接口导入供应商bug

1、业务背景 财务这边大部分系统都是供应商项目&#xff0c;由于供应商的研发人员没有飞书项目的权限&#xff0c;涉及到供应商系统需求 财务这边都是通过多维表格进行bug的生命周期管理如图&#xff1a; 但多维表格没有跟飞书项目直接关联&#xff0c;测试组做bug统计的时候无…...

《深度学习》OpenCV 角点检测、特征提取SIFT 原理及案例解析

目录 一、角点检测 1、什么是角点检测 2、检测流程 1&#xff09;输入图像 2&#xff09;图像预处理 3&#xff09;特征提取 4&#xff09;角点检测 5&#xff09;角点定位和标记 6&#xff09;角点筛选或后处理&#xff08;可选&#xff09; 7&#xff09;输出结果 3、邻域…...

golang grpc初体验

grpc 是一个高性能、开源和通用的 RPC 框架&#xff0c;面向服务端和移动端&#xff0c;基于 HTTP/2 设计。目前支持c、java和go&#xff0c;分别是grpc、grpc-java、grpc-go&#xff0c;目前c版本支持c、c、node.js、ruby、python、objective-c、php和c#。grpc官网 grpc-go P…...

基于小程序+Vue + Spring Boot的进销存库存出库入库统计分析管理系统

目录 一、项目背景及需求分析 1. 项目背景 2. 需求分析 二、系统架构设计 1. 技术选型 2. 模块划分 三、数据库设计数据库表结构 四、前端实现 五、后端实现 1. RESTful API设计 2. 数据库操作 六、安全性和性能优化 1. 安全性 2. 性能优化 七、测试与部署 1. …...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

webpack面试题

面试题&#xff1a;webpack介绍和简单使用 一、webpack&#xff08;模块化打包工具&#xff09;1. webpack是把项目当作一个整体&#xff0c;通过给定的一个主文件&#xff0c;webpack将从这个主文件开始找到你项目当中的所有依赖文件&#xff0c;使用loaders来处理它们&#x…...