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

news/2024/5/21 6:03:04/文章来源:https://blog.csdn.net/weixin_34133829/article/details/92487024

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、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

转载于:https://my.oschina.net/mickelfeng/blog/910905

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

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

相关文章

30个免费下载高质量精美照片素材的网站

在设计中使用免费的照片素材可以节省大量的时间。网络有有很多分享照片资源的网站,有些是免费的,有些则需要付费,当你在设计中使用网上的照片素材的时候要注意使用协议以免带来麻烦。今天这篇文章向大家推荐30个国外的免费下载高质量精美图片…

网站技术架构学习整体贴-《大型网站技术架构》

大牛整理图 (来自https://blog.csdn.net/kissqw/article/details/45198639) 整体总结帖 大型网站技术架构:摘要与读书笔记: https://www.cnblogs.com/xybaby/p/8907880.html 作者专访 Csdn专访李智慧: https://www.csdn.net/article/2015-0…

分享13个自学编程的优质网站

后台经常有粉丝发问:编程适合零基础的人自学么?自学编程的学习资源应该去哪里找?网络上免费的编程资源价值大么?...... 如今,很大一部分人在学习编程的道路上都选择自学,但都苦于找不到适合自己的学习资源…

【网络安全】两招识破钓鱼网站

㈠ 查 Alexa 排名 http://www.alexa.com 越靠前、真实性越高以 中国建设银行为例 Alexa Traffic Rank:Alexa网站流量排名 Traffic Rank in CN:国内流量排名 ㈡ 查 Google 的 PR 值 http://pr.chinaz.com PR(Page Rank)∈[0,10] 越大、表明该网页越重要 小…

我的网站搭建 (第十天) Ueditor编辑器

2019独角兽企业重金招聘Python工程师标准>>> 之前说过,我的网站编辑器一开始是tinymce,然后才用的ckeditor。可是最近我发现,ckeditor的小图标不是很美观,看久了有点low的样子。我是不是应该换一个编辑器呢&#xff0c…

如何屏蔽网站发起favicon.ico的请求

2019独角兽企业重金招聘Python工程师标准>>> favicon.ico 图标用于收藏夹图标和浏览器标签上的显示,如果不设置,浏览器会请求网站根目录的这个图标,如果网站根目录也没有这图标会产生 404。更有甚者,比如我司&#xff…

关于资源类网站我就只服这4个,每一个都能让你大开眼界!

对于经常从事互联网行业的工作者来说,储藏一些资源网站是必备的,方便我们随时将网上的资源一扫而进。今天小编给大家推荐4个实用性超强的资源网站!GrowthTools 在线极客工具大全GrowthTools是一个帮助网络工作者收集实用工具的网站&#xff0…

Java Web架构篇之浅谈大型网站分布式架构

大型网站技术架构概述 图片摘自: 大型网站技术架构:摘要与读书笔记 更多: 《大型网站技术架构》——第一章 大型网站架构演化 架构模式 分层:横向切分 – 应用层、服务层、数据层分割:纵向切分 – 业务切分分布式&a…

对公司网站DNS解析异常的排查与处理

这周可谓是屋漏连夜雨,先是nfs挂载出现问题,紧接着住处的厕所堵了,然后又是今天的域名解析异常导致服务访问返回404。 我们的域名是解析到两个IP,分别是电信跟网通。 异常情景: 用户打开页面登录后图片上传跟显示出现异…

分享一个定制生成前端配置文件的网站

网址https://webpack.jakoblind.no/ 这个网站可以根据需要,基于webpack4下定制配置文件,无需理解webpack架构的细节 网页分三个部分: 选择配置:选择您所需要安装的内容可视化配置:根据上图所选的内容,显示所…

javaweb:在线聊天网站

前言: 最近学了一堆网页相关的内容,html,js,jquery,javaweb,servlet,websocket等东西,所以就试着集合起来写个简单的网页,于是就决定就是你了:在线聊天网站。 而且还写了3个版本。。。 版本1:全是用的js…

零基础搭建PHP本地环境并安装WordPress网站(图文指导)

搭建PHP本地环境前言 以前在大学课堂上学过一点JAVA, PHP. 因为那时是零基础,需要自己搭建APACH, MYSQL, PHPADMIN过程挺烦的,本地环境都不知道是啥,但是做出来结果却很高兴。出来后也做过网站,但是很久不弄就忘记了,我…

javaweb:在线聊天网站(框架版)

之前写过一次在线聊天网站,不过那次是无框架版的,这次用框架构建网站,基本功能和上次差不多 涉及知识 java spring(4.3.5):spring、spring MVC hibernate bootstrap jsp JavaScript,jquer…

利用TortoiseGit(小乌龟)将项目上传至GitHub网站

2019独角兽企业重金招聘Python工程师标准>>> 准备 1.拥有一个GitHub账户2.安装了TortoiseGit(小乌龟)具体过程 一、在GitHub上建立新的仓库 起好仓库名,填好描述,在Add .gitgnore中选择Java(根据你自己需求…

一些缩短树莓派学习曲线的书籍、课程和网站

2019独角兽企业重金招聘Python工程师标准>>> 树莓派是一款小型单板计算机,最初用于教学和学习编程和计算机科学。但如今它有更多用处。它是一种经济的低功耗计算机,人们将它用于各种各样的事情 —— 从家庭娱乐到服务器应用,再到物…

大型分布式网站架构实战项目分析

2019独角兽企业重金招聘Python工程师标准>>> 大型分布式网站架构实战项目分析 转载于:https://my.oschina.net/u/1168056/blog/1802675

zblog mysql数据库无法连接_ZBlog博客网站错误:MySQL数据库无法连接

前言前天搭建的博客网站,睡醒一觉起来网站挂逼了,其间无任何操作。主页都进不去,提示“MySQL数据库无法连接”,无论怎么刷新重启服务器都没用。最终从中午1点搞到凌晨2点,皇天不负有心人终于解决了。其实问题很简单&am…

.net core Asp.net Mvc Ef 网站搭建 vs2017 1)

1)开发环境搭建 首先下载安装vs2017 地址 :https://www.visualstudio.com/zh-hans/downloads/ 安装勾选几项如下图 ,注意点在单个组件时.net core 运行时一定要勾上,很多人都没勾结果新增不了.net core 项目 2)开发 1.新增.net core mvc …

LAMP架构部署和动态网站环境的配置

实验环境:操作系统:centos 7.5服务器IP:192.168.10.5运行用户:root连接工具:xshell工具web环境:Linuxapachephpmariadb(LAMP架构)大型动态应用系统平台主要是针对于大流量、高并发网…

我的博客网站开发5——博文正文页

为实现页面间的统一性和开发时代码的工作量,我们将页面相同的布局做成母版页,变化的内容在内容页进行变化。如下图: 这样,我们在写博文的显示全文页面时,我们只需在新增页面引用母版页就可实现,页面相同页面…