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 相关文章推荐
nginx proxy_cache 缓存配置详解
Mar 31 Servers
Nginx的反向代理实例详解
Mar 31 Servers
详解nginx.conf 中 root 目录设置问题
Apr 01 Servers
apache基于端口创建虚拟主机的示例
Apr 24 Servers
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
May 27 Servers
nginx内存池源码解析
Nov 20 Servers
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
Apr 02 Servers
Windows server 2012 R2 安装IIS服务器
Apr 29 Servers
TaiShan 200服务器安装Ubuntu 18.04的图文教程
Jun 28 Servers
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
Aug 05 Servers
ubuntu20.04虚拟机无法上网的问题及解决
Dec 24 Servers
解决ubuntu安装软件时,status-code=409报错的问题
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
php简单浏览目录内容的实现代码
2013/06/07 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
javascript日期对象格式化为字符串的实现方法
2014/01/14 Javascript
node.js中的fs.fchmodSync方法使用说明
2014/12/16 Javascript
javascript 数组操作详解
2015/01/29 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
详解基于React.js和Node.js的SSR实现方案
2019/03/21 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
Python Mysql自动备份脚本
2008/07/14 Python
Python列表计数及插入实例
2014/12/17 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
2020/02/28 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
美国知名艺术画网站:Art.com
2017/02/09 全球购物
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
人事经理岗位职责
2014/04/28 职场文书
退休欢送会致辞
2015/07/31 职场文书
文明礼仪主题班会
2015/08/13 职场文书
Java 超详细讲解hashCode方法
2022/04/07 Java/Android
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python