网站首页 > 教程文章 正文
引言
最近,有几个其他项目团队的同事问了我几个类似问题:
“钦哥,我们微信小程序微信支付,怎么回调不没反应?”
“钦哥,我们的项目怎么无法通过https访问的?”
然后就有想把配置ssl证书的过程,记录一下,以便传播查阅。
SSL
我们先了解一下什么是SSL、什么是SSL证书,这里将引用 ssl.com 里面介绍SSL的一些概念。
提示:不感兴趣的,可以直接跳过,阅读下一章。
什么是SSL?
SSL (Secure Sockets Layer) and its successor, TLS (Transport Layer Security), are protocols for establishing authenticated and encrypted links between networked computers. Although the SSL protocol was deprecated with the release of TLS 1.0 in 1999, it is still common to refer to these related technologies as “SSL” or “SSL/TLS.”
翻译(谷歌翻译)之后就是:
SSL(安全套接字层)及其后继者 TLS(传输层安全性)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管随着 1999 年 TLS 1.0 的发布,SSL 协议已被弃用,但仍普遍将这些相关技术称为“SSL”或“SSL/TLS”。
什么是SSL证书?
An SSL certificate (also known as a TLS or SSL/TLS certificate) is a digital document that binds the identity of a website to a cryptographic key pair consisting of a public key and a private key. The public key, included in the certificate, allows a web browser to initiate an encrypted communication session with a web server via the TLS and HTTPS protocols. The private key is kept secure on the server, and is used to digitally sign web pages and other documents (such as images and JavaScript files).
An SSL certificate also includes identifying information about a website, including its domain name and, optionally, identifying information about the site’s owner. If the web server’s SSL certificate is signed by a publicly trusted certificate authority (CA), like SSL.com, digitally signed content from the server will be trusted by end users’ web browsers and operating systems as authentic.
An SSL certificate is a type of X.509 certificate.
翻译(谷歌翻译)之后就是:
SSL 证书(也称为 TLS 或 SSL/TLS 证书)是将网站身份绑定到由公钥和私钥组成的加密密钥对的数字文档。证书中包含的公钥允许 Web 浏览器通过 TLS 和 HTTPS 协议发起与 Web 服务器的加密通信会话。私钥安全地保存在服务器上,用于对网页和其他文档(例如图像和 JavaScript 文件)进行数字签名。
SSL 证书还包括有关网站的识别信息,包括其域名,以及(可选)有关网站所有者的识别信息。如果 Web 服务器的 SSL 证书由公共信任的证书颁发机构 (CA)(例如 SSL.com)签署,则最终用户的 Web 浏览器和操作系统将信任来自服务器的数字签名内容是真实的。
SSL 证书是一种 X.509 证书。
配置条件
- 域名
- Nginx SSL 证书
- Nginx 代理
域名,在阿里云上申请一个域名,并解析到相应的服务器(互联网IP)上。
Ngnix SSL证书,在阿里云上申请有效期为1年的免费的SSL证书,并绑定到刚刚申请的域名下,申请验证成功之后,下载 Nginx 配置。
下载之后,得到两个文件:
Nginx 安装和配置代理,可以参考我另外一篇文章:记:如何部署前后端分离项目。
配置证书
拿到证书之后,到我们服务器上(以Windows server 为例),进行配置nginx的ssl配置。
按照惯例,我们先打开nginx官网(nginx.org),看看对应的文档介绍。
进入到https server 介绍,看了会吓一跳,除了准备工作比较繁琐外,配置ssl是如此的简单:
我们一段话一段话的去看:
要配置 HTTPS 服务器,必须在服务器块中的侦听套接字上启用 ssl 参数,并且应指定服务器证书和私钥文件的位置:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate www.example.com.crt;
ssl_certificate_key www.example.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}
服务器证书是公共实体。它被发送到连接到服务器的每个客户端。私钥是一个安全实体,应存储在访问受限的文件中,但是它必须可由 nginx 的主进程读取。私钥也可以与证书存储在同一文件中:
ssl_certificate www.example.com.cert;
ssl_certificate_key www.example.com.cert;
在这种情况下,文件访问权限也应受到限制。尽管证书和密钥存储在一个文件中,但只有证书被发送到客户端。
指令 ssl_protocols 和 ssl_ciphers 可用于限制连接仅包含 SSL/TLS 的强版本和密码。默认情况下,nginx 使用“ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3”和“ssl_ciphers HIGH:!aNULL:!MD5”,因此通常不需要显式配置它们。请注意,这些指令的默认值已更改多次。
啥意思?看它的意思是,我们只需要配置:
listen 443 ssl;
server_name [域名];
ssl_certificate [ssl crt 证书];
ssl_certificate_key [ssl 证书key];
就好了?实操一下~~
- 在 nginx/conf 目录下创建 cert/mall目录
- 将准备好的证书 copy到 cert/mall 目录下
- 修改 mall.conf 代理配置
- 刷新nginx 配置, nginx -s realod
最终配置如下:
验证一下,是否生效:
总结
思路很重要,要学会怎么去思考,怎么去做事、做什么事、有哪些事。
tips小技巧: 在windows中清掉所有nginx 进程:taskkill /f /t /im nginx.exe
猜你喜欢
- 2025-05-26 源码分享:在pdf上加盖电子签章
- 2025-05-26 ssl 加密证书
- 2025-05-26 Headscale渐入佳境补充篇-自定义中转derper的证书问题
- 2025-05-26 公钥基础设施你了解多少?
- 2025-05-26 k8s 遇到的证书问题
- 2025-05-26 TLS详解
- 2025-05-26 序列化漏洞影响半数以上Android手机
- 2025-05-26 IBM发现Android特权提升漏洞 影响55%设备
- 2025-05-26 手把手教学|Nginx 如何配置 HTTPS 服务器
- 2025-05-26 Fleck:一个轻量级的C#开源WebSocket服务端库
- 最近发表
-
- 【Python】一文学会使用 Pandas 库
- Docsify-3分钟搭建属于自己的技术文档WIKI
- Elasticsearch数据迁移方案(elasticsearch索引迁移)
- Vue、Nuxt服务端渲染、NodeJS全栈项目
- Android Studio下载Gradle超时解决方案
- 一文讲清楚 Markdown+Typora+Pandoc+图床+PicGo
- 用户说 | 手把手体验通义灵码 2.0 AI 程序员如何让我进阶“架构师”?
- 15.7k star,经典与效率兼备的后台管理框架
- Cursor + 12306 MCP,打造AI智能选票系统,超酷的!
- 别再自建仓库了,云效Maven仓库不限容量免费用
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)