Nginx下配置Https证书详细过程


Posted in Servers onApril 01, 2021

一、Http与Https的区别

HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

HTTPS和HTTP的区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

二、使用openssl生成证书

openssl是目前最流行的SSL密码库工具,其提供了一个通用、健壮、功能完备的工具套件,用以支持SSL/TLS协议的实现。

比如生成到:/usr/local/ssl

openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt

生成过程:

# openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /u  sr/local/ssl/nginx.key -out /usr/local/ssl/nginx.crt
Generating a 2048 bit RSA private key
...............................................................................+  ++
...............+++
writing new private key to '/usr/local/ssl/nginx.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:beijing
Locality Name (eg, city) [Default City]:beijing
Organization Name (eg, company) [Default Company Ltd]:xxxx
Organizational Unit Name (eg, section) []:xxxx
Common Name (eg, your name or your server's hostname) []:xxxx(一般是域名)
Email Address []:xxxx@xxxx.com
# ll
total 8
-rw-r--r--. 1 root root 1391 Apr 21 13:29 nginx.crt
-rw-r--r--. 1 root root 1704 Apr 21 13:29 nginx.key

三、Nginx安装http_ssl_module模块

Nginx如果未开启SSL模块,配置Https时提示错误。

nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:xxx

nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了。

本场景是服务器已经安装过nginx,但是未安装http_ssl_module。

1.进入到源码包,如:

cd /app/download/nginx-1.12.2

2.configure:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

#可能需要的依赖包
yum -y install pcre-devel openssl openssl-devel

3.make:

make

4.不需要执行make install,否则就覆盖安装了。

5.备份原有的nginx,如:

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak

6.然后将刚刚编译好的nginx覆盖掉原有的nginx(nginx需要停止)

cp ./objs/nginx /usr/local/nginx/sbin/

7.查看安装情况:

/usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.12.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

四、nginx配置https

贴部分配置信息:

server {

    listen	80;
		server_name www.yourdomain.com;
	  rewrite ^(.*) https://$server_name$1 permanent; #http 跳转 https
  }
server {
	listen 443 ssl;
	server_name www.yourdomain.com;
	ssl_certificate /usr/local/ssl/nginx.crt;
	ssl_certificate_key /usr/local/ssl/nginx.key;
	ssl_session_cache  shared:SSL:1m;
	ssl_session_timeout 5m;
	#禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击
	server_tokens off;
	#如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问
	fastcgi_param  HTTPS        on;
	fastcgi_param  HTTP_SCHEME     https;
	access_log /usr/local/nginx/logs/httpsaccess.log;
}

先检验配置的对不对:

/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

重启nginx:

/usr/local/nginx/sbin/nginx -s reload

访问:

Nginx下配置Https证书详细过程

Nginx下配置Https证书详细过程

到此这篇关于Nginx下配置Https证书详细过程的文章就介绍到这了,更多相关Nginx配置Https证书内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
扩展多台相同的Web服务器
Apr 01 Servers
详解Nginx启动失败的几种错误处理
Apr 01 Servers
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
Jul 07 Servers
Nginx下SSL证书安装部署步骤介绍
Dec 06 Servers
OpenStack虚拟机快照和增量备份实现方法
Apr 04 Servers
如何通过cmd 连接阿里云服务器
Apr 18 Servers
Tomcat项目启动失败的原因和解决办法
Apr 20 Servers
WinServer2012搭建DNS服务器的方法步骤
Jun 10 Servers
Windows Server 2022 超融合部署(图文教程)
Jun 25 Servers
Nginx如何获取自定义请求header头和URL参数详解
Jul 23 Servers
Nginx跨域问题解析与解决
Aug 05 Servers
ubuntu开机后ROS程序自启动问题
Dec 24 Servers
详解Nginx启动失败的几种错误处理
Apr 01 #Servers
Nginx 根据URL带的参数转发的实现
Apr 01 #Servers
Nginx Rewrite使用场景及配置方法解析
Nginx解决403 forbidden的完整步骤
Apr 01 #Servers
详解nginx.conf 中 root 目录设置问题
Apr 01 #Servers
小程序后台PHP版本部署运行 LNMP+WNMP
扩展多台相同的Web服务器
Apr 01 #Servers
You might like
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
谈谈PHP语法(5)
2006/10/09 PHP
php 在线打包_支持子目录
2008/06/28 PHP
解析ajax事件的调用顺序
2013/06/17 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
JS 实现双色表格实现代码
2009/11/24 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
Jquery时间轴特效(三种不同类型)
2015/11/02 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
九步学会Python装饰器
2015/05/09 Python
使用python为mysql实现restful接口
2018/01/05 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
Scrapy使用的基本流程与实例讲解
2018/10/21 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
python3+selenium获取页面加载的所有静态资源文件链接操作
2020/05/04 Python
python代码如何注释
2020/06/01 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
使用数据结构给女朋友写个Html5走迷宫游戏
2019/11/26 HTML / CSS
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
日本酒店、民宿、温泉旅馆、当地旅行团中文预订:e路东瀛
2019/12/09 全球购物
中医药大学市场营销专业自荐信
2013/09/29 职场文书
秋季婚礼证婚词
2014/01/11 职场文书
基层干部十八大感言
2014/01/19 职场文书
大学军训感言600字
2014/02/25 职场文书
护士求职简历自我评价
2015/03/10 职场文书