Nginx 配置 SSL 证书 + 搭建 HTTPS 网站教程

news/2024/5/9 11:37:22/文章来源:https://blog.csdn.net/qq_21439971/article/details/64122812

一、HTTPS 是什么?

根据维基百科的解释:

超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器身份的鉴定。HTTPS连接经常被用于万维网上的交易支付和企业信息系统中敏感信息的传输。HTTPS不应与在RFC 2660中定义的安全超文本传输协议(S-HTTP)相混。

HTTPS 目前已经是所有注重隐私和安全的网站的首选,随着技术的不断发展,HTTPS 网站已不再是大型网站的专利,所有普通的个人站长和博客均可以自己动手搭建一个安全的加密的网站。

如果一个网站没有加密,那么你的所有帐号密码都是明文传输。可想而知,如果涉及到隐私和金融问题,不加密的传输是多么可怕的一件事。

鉴于本博客的读者都是接近专业人士,我们不再多费口舌,直接进入正题吧。

二、使用 OpenSSL 生成 SSL Key 和 CSR

由于只有浏览器或者系统信赖的 CA 才可以让所有的访问者通畅的访问你的加密网站,而不是出现证书错误的提示。所以我们跳过自签证书的步骤,直接开始签署第三方可信任的 SSL 证书吧。

OpenSSL 在 Linux、OS X 等常规的系统下默认都安装了,因为一些安全问题,一般现在的第三方 SSL 证书签发机构都要求起码 2048 位的 RSA 加密的私钥。

同时,普通的 SSL 证书认证分两种形式,一种是 DV(Domain Validated),还有一种是 OV (Organization Validated),前者只需要验证域名,后者需要验证你的组织或公司,在安全性方面,肯定是后者要好。

无论你用 DV 还是 OV 生成私钥,都需要填写一些基本信息,这里我们假设如下:

域名,也称为 Common Name,因为特殊的证书不一定是域名:example.com

组织或公司名字(Organization):Example, Inc.

部门(Department):可以不填写,这里我们写Web Security

城市(City):Beijing

省份(State / Province):Beijing

国家(Country):CN

加密强度:2048 位,如果你的机器性能强劲,也可以选择 4096 位

按照以上信息,使用 OpenSSL 生成 key 和 csr 的命令如下

openssl req -new -newkey rsa:2048 -sha256 -nodes -out example_com.csr -keyout example_com.key -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Inc./OU=Web Security/CN=example.com"

PS:如果是泛域名证书,则应该填写*.example.com

你可以在系统的任何地方运行这个命令,会自动在当前目录生成example_com.csr和example_com.key这两个文件

接下来你可以查看一下example_com.csr,得到类似这么一长串的文字

复制代码
-----BEGIN CERTIFICATE REQUEST-----
MIICujCCAaICAQAwdTELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB0JlaWppbmcxEDAO  
BgNVBAcTB0JlaWppbmcxFTATBgNVBAoTDEV4YW1wbGUgSW5jLjEVMBMGA1UECxMM  
V2ViIFNlY3VyaXR5MRQwEgYDVQQDEwtleGFtcGxlLmNvbTCCASIwDQYJKoZIhvcN  
AQEBBQADggEPADCCAQoCggEBAPME+nvVCdGN9VWn+vp7JkMoOdpOurYMPvclIbsI  
iD7mGN982Ocl22O9wCV/4tL6DpTcXfNX+eWd7CNEKT4i+JYGqllqP3/CojhkemiY  
SF3jwncvP6VoST/HsZeMyNB71XwYnxFCGqSyE3QjxmQ9ae38H2LIpCllfd1l7iVp  
AX4i2+HvGTHFzb0XnmMLzq4HyVuEIMoYwiZX8hq+kwEAhKpBdfawkOcIRkbOlFew  
SEjLyHY+nruXutmQx1d7lzZCxut5Sm5At9al0bf5FOaaJylTEwNEpFkP3L29GtoU  
qg1t9Q8WufIfK9vXqQqwg8J1muK7kksnbYcoPnNgPx36kZsCAwEAAaAAMA0GCSqG  
SIb3DQEBBQUAA4IBAQCHgIuhpcgrsNwDuW6731/DeVwq2x3ZRqRBuj9/M8oONQen  
1QIacBifEMr+Ma+C+wIpt3bHvtXEF8cCAJAR9sQ4Svy7M0w25DwrwaWIjxcf/J8U  
audL/029CkAuewFCdBILTRAAeDqxsAsUyiBIGTIT+uqi+EpGG4OlyKK/MF13FxDj  
/oKyrSJDtp1Xr9R7iqGCs/Zl5qWmDaLN7/qxBK6vX2R/HLhOK0aKi1ZQ4cZeP7Mr
8EzjDIAko87Nb/aIsFyKrt6Ze3jOF0/vnnpw7pMvhq+folWdTVXddjd9Dpr2x1nc  
y5hnop4k6kVRXDjQ4OTduQq4P+SzU4hb41GIQEz4  
-----END CERTIFICATE REQUEST-----
复制代码

这个 CSR 文件就是你需要提交给 SSL 认证机构的,当你的域名或组织通过验证后,认证机构就会颁发给你一个example_com.crt

而example_com.key是需要用在 Nginx 配置里和example_com.crt配合使用的,需要好好保管,千万别泄露给任何第三方。

三、Nginx 配置 HTTPS 网站以及增加安全的配置

前面已经提到,你需要提交 CSR 文件给第三方 SSL 认证机构,通过认证后,他们会颁发给你一个 CRT 文件,我们命名为example_com.crt

同时,为了统一,你可以把这三个文件都移动到/etc/ssl/private/目录。

然后可以修改 Nginx 配置文件

复制代码
server {  listen 80;listen [::]:80 ssl ipv6only=on; listen 443 ssl;listen [::]:443 ssl ipv6only=on;server_name example.com;ssl on;ssl_certificate /etc/ssl/private/example_com.crt;ssl_certificate_key /etc/ssl/private/example_com.key;
}
复制代码

检测配置文件没问题后重新读取 Nginx 即可

nginx -t && nginx -s reload

但是这么做并不安全,默认是 SHA-1 形式,而现在主流的方案应该都避免 SHA-1,为了确保更强的安全性,我们可以采取迪菲-赫尔曼密钥交换

首先,进入/etc/ssl/certs目录并生成一个dhparam.pem

cd /etc/ssl/certs  
openssl dhparam -out dhparam.pem 2048 # 如果你的机器性能足够强大,可以用 4096 位加密

生成完毕后,在 Nginx 的 SSL 配置后面加入

复制代码
ssl_prefer_server_ciphers on;ssl_dhparam /etc/ssl/certs/dhparam.pem;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";keepalive_timeout 70;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;
复制代码

同时,如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问

add_header Strict-Transport-Security max-age=63072000;add_header X-Frame-Options DENY;add_header X-Content-Type-Options nosniff;

同时也可以单独开一个 Nginx 配置,把 HTTP 的访问请求都用 301 跳转到 HTTPS

server {  listen 80;listen [::]:80 ssl ipv6only=on;server_name     example.com;return 301 https://example.com$request_uri;
}

 

四、可靠的第三方 SSL 签发机构

众所周知,前段时间某 NIC 机构爆出过针对 Google 域名的证书签发的丑闻,所以可见选择一家靠谱的第三方 SSL 签发机构是多么的重要。

目前一般市面上针对中小站长和企业的 SSL 证书颁发机构有:

StartSSL

Comodo / 子品牌 Positive SSL

GlobalSign / 子品牌 AlphaSSL

GeoTrust / 子品牌 RapidSSL

其中 Postivie SSL、AlphaSSL、RapidSSL 等都是子品牌,一般都是三级四级证书,所以你会需要增加 CA 证书链到你的 CRT 文件里。

以 Comodo Positive SSL 为例,需要串联 CA 证书,假设你的域名是example.com

那么,串联的命令是

cat example_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > example_com.signed.crt

来自:https://s.how/nginx-ssl/

在 Nginx 配置里使用 example_com.signed.crt 即可

如果是一般常见的 AplhaSSL 泛域名证书,他们是不会发给你 CA 证书链的,那么在你的 CRT 文件后面需要加入 AlphaSSL 的 CA 证书链

AlphaSSL Intermediate CA

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站系统架构演化之路

前言 一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、…

养殖交流网站-物语资源交流

自己搭建的养殖交流网站:物语资源交流。不吝访问,谢谢!

适合iOS开发者的15大网站推荐

http://www.csdn.net/article/2015-03-04/2824108-ios-developers-sites/1 https://medium.com/ios-apprentice/11-insanely-great-ios-developers-sites-95686a523ea8 1. objc.io objc.io的文章质量上佳、观点深刻、针对性强,均出自世界顶级iOS工程师之手&#xf…

图解使用VS.NET部署含水晶报表的网站

Crystal Report ,中文名称“水晶报表”,因为做报表的功能强大,所以被 Visual Studio.Net 整合进来了。其中 Visual Studio.Net 2002 中的Crystal Decisions 版本为 1.0 ;Visual Studio.Net 2002 中的Crystal Decisions 版本为 1.1…

spring cloud+vue在线视频网站 1.搭建网页基本框架

文章目录 1 使用 Eureka 搭建注册中心1.1 生成 Spring boot 项目1.2 导入 eureka 包1.3 添加启动文件及配置文件1.4 修改项目为 Maven 父子结构 2. 搭建业务模块 system2.1 添加 system 模块的基础文件2.2 测试 system 模块功能 3.搭建路由模块3.1 添加 gateway 模块基础文件3.…

spring cloud+vue在线视频网站 2.整合mybatis并将system模块公共组件分离

文章目录 1 system 模块集成 Mybatis1.1 建立数据库1.2 导入mybatis 包1.3 增加数据库连接1.4 测试 Mybatis 集成情况 2 测试 Mybatis 集成情况2.1 java文件2.2 Mybatis xml文件 3 搭建服务模块 Server3.1 新建 server 模块3.2 system 集成 server 模块3.3 集中部署 4 集成 myb…

spring cloud+vue在线视频网站 3.vue搭建管理页面

文章目录 1 使用 vue 创建 admin 项目2 集成 bootstrap 后台管理模板 ace3 集成路由 vue-route4 后台管理页面开发 1 使用 vue 创建 admin 项目 使用 vue 创建前端项目网上有很多教程,这里简单说一下。 首先需要有 npm 和 node,先下载这两个工具。brew …

spring cloud+vue在线视频网站 4.单表查询功能前后端开发

1 大章列表查询后端模块 这里首先新建一个 Maven 模块,取名 busines 。这个模块的具体功能是实现大章列表的查询,在模块中会有启动类和 controller 层,controller 层是前端调用后端的接口,controller 层通过 server 模块中的 ser…

spring cloud+vue在线视频网站 5.分页功能+增加章节

1 分页功能开发 首先集成分页功能需要先在 Maven 中添加 pagehelper 依赖,然后在 ChapterService 中添加 pagehelper 的设置,接着试一下分页功能是否生效。后面添加分页功能的具体细节,第一修改成后端接收分页要求,第二修改前端分…

spring cloud+vue在线视频网站 6.章节编辑删除功能、前端优化和校验模块

这一节增加了大章的编辑和删除功能,这样大章的增删改查功能就都有了,但是在增加和修改时应该还要有校验功能。 编辑功能 这一节主要对大章模块增加编辑功能,其次还删除一些多余组件。首先,我们将多余对按钮进行了删除&#xff0…

spring cloud+vue在线视频网站 7.代码生成模块 part 1

这一章主要是完成代码生成的模块&#xff0c;用到的工具是 freemaker &#xff0c;在完成代码生成模块的同时会完成小节部分的代码。 freemaker 的基本用法 一般来说一个 freemaker 的模版基本会包括下面四部分。 文本:直接输出的部分 注释:<#–2333–>格式部分,不会输…

网站检测方式个人总结

这几天看架构看的头晕&#xff0c;觉得有点看不下去了 换个心情&#xff0c;等状态调整过来再继续看 趁这个时间休息一些&#xff0c;也正好把之前学过的知识做一个总结。 首先表明立场 这只是一个总结 并不是教大家什么 我的水平没有那么高 这是一个提醒自己的备忘 但是如果有…

用了2周时间,终于把Python网站开发库大全整理完了

用了 2 周的时间整理了 Python 中所有的网站开发库&#xff08;下文简称&#xff1a;Web 框架&#xff09;&#xff0c;供大家学习参考。 相关文件 小伙伴们可以关注小编的Python源码、问题解答&学习交流群&#xff1a;733089476 有很多的资源可以白嫖的哈&#xff0c;需…

今天给大家介绍一下~我学习 Python 的 三个神级网站

今天来给大家介绍三个我在学习 Python 路上帮助比较大的堪称神级的网站&#xff0c;尤其是对于刚刚入门的同学来说&#xff0c;绝对不容错过~ 相关文件 小伙伴们可以关注小编的Python源码、问题解答&学习交流群&#xff1a;733089476 有很多的资源可以白嫖的哈&#xff0…

WEB网站加速CND加速工作原理

转自&#xff1a;https://blog.csdn.net/5hongbing/article/details/78025349 通过传统的未加缓存服务的访问过程与加缓存服务的访问过程对比&#xff0c;了解CDN缓存访问方式与未加缓存访问方式的差别。 1.传统访问过程(未加速缓存服务) 访问未使用CDN缓存后的网站的过程&…

逛Github网站显示中文教程

打开Github对于看不懂英文的孩子来说刚打开官网就尬住了&#xff0c;后来逛了很多网站才发现一个方法可以将网站的部分内容转换为中文&#xff0c;虽然说是部分的&#xff0c;但是也够用了差不多。下面放教程。 1.找到自己浏览器安装扩展插件的地方&#xff0c;我测试的360浏览…

三日娱乐活动之——建立自己的网站

目录 云服务器搭建SSH登陆LNMP环境的搭建Nginx的设置小节总结 网页的编写CSS的调用php文件上传小节总结 云服务器搭建 我用的是阿里云的学生机&#xff0c;自己娱乐娱乐够用了&#xff0c;稍微懂点Linux的知识&#xff0c;选择Centos7的系统就可以耍了。 SSH登陆 我直接用密…

Vs2010创建网站

1.打开VS2010&#xff0c;新建——网站——ASP.Net空网站。 2.创建网站后你会发现你的项目并没有.sln结尾的文件&#xff0c;像这样。 事实上项目的.sln文件保存到了C:\Users\zjs\Documents\Visual Studio 2010\Projects 我一般会把这个.sln文件拷贝到项目所对应的文件夹目录。…

公安内网部署网站出现500.19-Internal Server Error

今天去桂林叠彩分局&#xff0c;帮他们部署一个内网平台的网站。去了机房&#xff0c;windowserver2012系统已装好。我本想我的工作会很快弄完。无非就是在这个系统上安装一个oracle数据库&#xff0c;然后在iis部署一个网站&#xff0c;网站能呈现数据就ok了。Oracle数据库安装…

我的网站收入

建站有好几个月了&#xff0c;但申请google adsense和阿里妈妈并且成功通过却是上个月的事情。到目前为止&#xff0c;google adsense帐户的估算总收入为1.79美元&#xff0c;阿里妈妈的收入为2.52元&#xff0c;看到这里&#xff0c;或者很多读者都会嗤之以鼻&#xff0c;甚至…