个人项目简单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服务的配置。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙NEXT开发环境搭建(基于最新api12稳定版)

注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…

PMP--三模--解题--51-60

文章目录 14.敏捷--每日站会--内容--• 上次站会以来我都完成了什么?• 从现在到下一次站会,我计划完成什么?• 我的障碍(或风险或问题)是什么?--每日站会能够同步与协调相关的活动。14.敏捷--Scrum板 Scru…

【Ubuntu】VMware中虚拟网卡与服务器网卡的绑定

文章目录 服务器网卡和VMware中虚拟网卡的绑定1.在本机上查看需要的网卡名称2.服务器本机设置固定ip3.打开VMware后,将虚拟网卡与本机真实网卡进行绑定。4.给routeOS分配4张网卡,如图所示:5.ubuntu1和ubuntu2只需分配vmnet0和vmnet8即可&…

《More Effective C++》的学习

引用与指针 没有所谓的null reference reference一定需要代表某个对象,所以C要求reference必须有初值。 QString &s; 使用reference可能比使用pointer更高效。 因为reference一定是有效的,而指针可能为空(需要多加一个判断&#xff0…

【PyTorch】图像目标检测

图像目标检测是什么 Object Detection 判断图像中目标的位置 目标检测两要素 分类:分类向量 [p0, …, pn]回归:回归边界框 [x1, y1, x2, y2] 模型如何完成目标检测 将3D张量映射到两个张量 分类张量:shape为 [N, c1]边界框张量&#xf…

索尼MDR-M1:超宽频的音频盛宴,打造沉浸式音乐体验

在音乐的世界里,每一次技术的突破都意味着全新的听觉体验。 索尼,作为音频技术的先锋,再次以其最新力作——MDR-M1封闭式监听耳机,引领了音乐界的新潮流。 这款耳机以其超宽频播放和卓越的隔音性能,为音乐爱好者和专…

深蕾半导体参加2024年度上海设计100+全球竞赛展览WDCC

展览介绍 WDCC2024 上海于2010年加入联合国教科文组织“创意城市网络”,定名为“设计之都”。“上海设计100”全球竞赛,遴选推广优秀设计案例,将“设计之都”的规划和愿景具体呈现。 ——展出时间、地点见文末—— 深蕾参展 深圳前海深蕾…

初识Linux · 进程等待

目录 前言: 进程等待是什么 为什么需要进程等待 进程等待都在做什么 前言: 通过上文的学习,我们了解了进程终止,知道终止是在干什么,终止的三种情况,以及有了退出码,错误码的概念&#xff…

Python | Leetcode Python题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; class Solution:def findDisappearedNumbers(self, nums: List[int]) -> List[int]:n len(nums)for num in nums:x (num - 1) % nnums[x] nret [i 1 for i, num in enumerate(nums) if num < n]return ret

【RocketMQ】秒杀设计与实现

&#x1f3af; 导读&#xff1a;本文档详细探讨了高并发场景下的秒杀系统设计与优化策略&#xff0c;特别是如何在短时间内处理大量请求。文档分析了系统性能指标如QPS&#xff08;每秒查询率&#xff09;和TPS&#xff08;每秒事务数&#xff09;&#xff0c;并通过实例讲解了…

鸿蒙开发(NEXT/API 12)【申请接入Wear Engine服务】 穿戴服务

申请Wear Engine服务前&#xff08;开发者需实名认证为个人开发者或者企业开发者&#xff0c;认证前&#xff0c;请先了解二者的[权益区别] &#xff09;&#xff0c;确认开发环境并完成创建项目、创建HarmonyOS应用等基本准备工作&#xff0c;再继续进行以下开发活动。 进入华…

JVM(HotSpot):字符串常量池(StringTable)

文章目录 一、内存结构图二、案例讲解三、总结 一、内存结构图 JDK1.6 JDK1.8 我们发现&#xff0c;StringTable移入了Heap里面。所以&#xff0c;应该想到&#xff0c;StringTable将受到GC管理。 其实&#xff0c;1.6中&#xff0c;在方法区中的时候&#xff0c;也是受GC管…

Android Studio 新版本 Logcat 的使用详解

点击进入官方Logcat介绍 一个好的Android程序员要会使用AndroidStudio自带的Logcat查看日志&#xff0c;会Log定位也是查找程序bug的第一关键。同时Logcat是一个查看和处理日志消息的工具&#xff0c;它可以更快的帮助开发者调试应用程序。 步入正题&#xff0c;看图说话。 点…

Linux 之 IO模型

IO的本质是基于操作系统接口来控制底层的硬件之间数据传输&#xff0c;并且在操作系统中实现了多种不同的IO方式&#xff08;模型&#xff09;&#xff0c;比较常见的有下列三种 阻塞型IO模型 非阻塞型IO模型 多路复用IO模型 一、阻塞与非阻塞IO 一般默认的 IO 操作都是阻塞…

在Linux中进行OpenSSH升级(编译安装在openssh目录)

由于OpenSSH有严重漏洞&#xff0c;因此需要升级OpenSSH到最新版本。 注意&#xff1a;在OpenSSH升级过程中千万不要断开服务器连接&#xff0c;不然的话&#xff0c;会出现断开后连接不了服务器的情况。 第一步&#xff0c;查看当前的OpenSSH服务版本。 命令&#xff1a;ss…

DataEase v2 开源代码 Windows 从0到1环境搭建

一、环境准备 功能名称 描述 其它 操作系统 Windows 数据库 Mysql8.0 开发环境 JDK17以上 本项基于的21版本开发 Maven 3.9版本 开发工具 idea2024.2版本 前端 VSCode TIPS&#xff1a;如果你本地有jdk8版本&#xff0c;需要切换21版本&#xff0c;请看…

C语言 | Leetcode C语言题解之第448题找到所有数组中消失的数字

题目&#xff1a; 题解&#xff1a; int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize) {for (int i 0; i < numsSize; i) {int x (nums[i] - 1) % numsSize;nums[x] numsSize;}int* ret malloc(sizeof(int) * numsSize);*returnSize 0;for (in…

遥感图像文本检索

遥感图像文本检索是一种通过自然语言描述&#xff0c;从大量遥感图像中搜索与之相关的图像的技术。它用于遥感解释任务中&#xff0c;帮助用户根据文字描述快速找到符合条件的遥感图像&#xff0c;这在城市规划、环境监测、灾害管理等领域具有重要应用意义。 实现这一技术的核…

线路交换与分组交换的深度解析

1. 线路交换 原理 线路交换是一种在通信双方之间建立固定通信路径的方式。当用户发起通信时&#xff0c;网络为其分配一条专用的物理通道&#xff0c;这条通道在整个通话过程中保持不变。这意味着在通话期间&#xff0c;其他用户无法使用这条线路。 优点 稳定性&#xff1a…

记录一次出现循环依赖问题

具体的结构设计&#xff1a; 在上面的图片中&#xff1a; UnboundBlackVerifyChain类中继承了UnboundChain类。但是UnboundChain类中注入了下面三个类。 Scope(“prototype”) UnboundLinkFlowCheck类 Scope(“prototype”) UnboundUserNameCheck类 Scope(“prototype”) Un…