百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

记:Nginx 如何配置SSL证书

off999 2025-01-04 22:24 17 浏览 0 评论

引言

最近,有几个其他项目团队的同事问了我几个类似问题:
“钦哥,我们微信小程序微信支付,怎么回调不没反应?”
“钦哥,我们的项目怎么无法通过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

相关推荐

如何理解python中面向对象的类属性和实例属性?

类属性和实例属性类属性就是给类对象中定义的属性通常用来记录与这个类相关的特征类属性不会用于记录具体对象的特征类属性的理解:类属性是与类自身相关联的变量,而不是与类的实例关联。它们通...

Java程序员,一周Python入门:面向对象(OOP) 对比学习

Java和Python都是**面向对象编程(OOP)**语言,无非是类、对象、继承、封装、多态。下面我们来一一对比两者的OOP特性。1.类和对象Java和Python都支持面向对象...

松勤技术精选:Python面向对象魔术方法

什么是魔术方法相信大家在使用python的过程中经常会看到一些双下划线开头,双下划线结尾的方法,我们把它统称为魔术方法魔术方法的特征魔术方法都是双下划线开头,双下划线结尾的方法魔术方法都是pytho...

[2]Python面向对象-【3】方法(python3 面向对象)

方法的概念在Python中,方法是与对象相关联的函数。方法可以访问对象的属性,并且可以通过修改对象的属性来改变对象的状态。方法定义在类中,可以被该类的所有对象共享。方法也可以被继承并重载。方法的语法如...

一文带你理解python的面向对象编程(OOP)

面向对象编程(OOP,Object-OrientedProgramming)是一个较难掌握的概念,而Python作为一门面向对象的语言,在学习其OOP特性时,许多人都会对“继承”和“多态”等...

简单学Python——面向对象1(编写一个简单的类)

Python是一种面向对象的编程语言(ObjectOrientedProgramming),在Python中所有的数据类型都是对象。在Python中,也可以自创对象。什么是类呢?类(Class)是...

python进阶突破面向对象——四大支柱

面向对象编程(OOP)有四大基本特性,通常被称为"四大支柱":封装(Encapsulation)、继承(Inheritance)、多态(Polymorphism)和抽象(Abstrac...

Python学不会来打我(51)面向对象编程“封装”思想详解

在面向对象编程(Object-OrientedProgramming,简称OOP)中,“封装(Encapsulation)”是四大核心特性之一(另外三个是继承、多态和抽象),它通过将数据(属性)和...

Python之面向对象:对象属性解析:MRO不够用,补充3个方法

引言在前面的文章中,我们谈及Python在继承关系,尤其是多继承中,一个对象的属性的查找解析顺序。由于当时的语境聚焦于继承关系,所以只是简要提及了属性解析顺序同方法的解析顺序,而方法的解析顺序,在Py...

Python之面向对象:通过property兼顾属性的动态保护与兼容性

引言前面的文章中我们简要提及过关于Python中私有属性的使用与内部“名称混淆”的实现机制,所以,访问私有属性的方法至少有3种做法:1、使用实例对象点操作符的方式,直接访问名称混淆后的真实属性名。2、...

Python之面向对象:私有属性是掩耳盗铃还是恰到好处

引言声明,今天的文章中没有一行Python代码,更多的是对编程语言设计理念的思考。上一篇文章中介绍了关于Python面向对象封装特性的私有属性的相关内容,提到了Python中关于私有属性的实现是通过“...

Python中的私有属性与方法:解锁面向对象编程的秘密

Python中的私有属性与方法:解锁面向对象编程的秘密在Python的广阔世界里,面向对象编程(OOP)是一种强大而灵活的方法论,它帮助我们更好地组织代码、管理状态,并构建可复用的软件组件。而在这个框...

Python 面向对象:掌握类的继承与组合,让你的代码更高效!

引言:构建高效代码的基石Python以其简洁强大的特性,成为众多开发者首选的编程语言。而在Python的面向对象编程(OOP)范畴中,类的继承和组合无疑是两大核心概念。它们不仅能帮助我们实现代码复用,...

python进阶-Day2: 面向对象编程 (OOP)

以下是为Python进阶Day2设计的学习任务,专注于面向对象编程(OOP)的核心概念和高阶特性。代码中包含详细注释,帮助理解每个部分的实现和目的。任务目标:复习OOP基础:类、对象、继...

外婆都能学会的Python教程(二十八):Python面向对象编程(二)

前言Python是一个非常容易上手的编程语言,它的语法简单,而且功能强大,非常适合初学者学习,它的语法规则非常简单,只要按照规则写出代码,Python解释器就可以执行。下面是Python的入门教程介绍...

取消回复欢迎 发表评论: