如何在Nginx中配置ssl证书

一、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中配置ssl证书

如何在Nginx中配置ssl证书

原创文章,作者:IZFWZ,如若转载,请注明出处:https://www.wangzhanshi.com/n/15555.html

(0)
IZFWZ的头像IZFWZ
上一篇 2025年1月2日 12:30:50
下一篇 2025年1月2日 12:30:52

相关推荐

  • PHP的AES(高级加密标准Advanced Encryption Standard)加密

    AES介绍 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准…

    ssl证书 2025年1月2日
  • 选购SSL证书的正确方法

    近年来发生的数据泄露事件概率也让许多的网站地址顾客掌握赶到,数据库加密的重要性,有许多的网站地址使用人给自己的网站地址再加SSL证书,而SSL证书的商家也很多,那么如何选购SSL证…

    2025年1月2日
  • ssl证书介绍

    SSL证书又称“服务器证书,https证书,CA证书,网站安全证书”等,是数字证书的一种 SSL证书产品如下:单域名DV版(保护一个具体域名)多域名OV版(可以将多个域名放在一张证…

    ssl证书 2025年1月2日
  • 关于ssl证书有什么用的分析

    ssl证书一般适用于保障网络运营安全的一种安全信息手段,一般网络端口分为服务器端和用户端,而ssl证书则可以双向对其进行安全保障,防止两方所传递的信息文本被盗取。下面就深入了解ss…

    2025年1月2日
  • openssl校验SSL证书public key是否配对

    今天遇到一个很少遇到的关于SSL证书申请、安装问题,简要记录下来。 背景:SSL证书是private key + public key一起工作才能完成加密过程的。 大致来说就是cl…

    ssl证书 2025年1月2日
  • Java如何使用openssl检测网站是否支持ocsp

    简介 OCSP在线证书状态协议是为了替换CRL而提出来的。对于现代web服务器来说一般都是支持OCSP的,OCSP也是现代web服务器的标配。 但是OCSP stapling却不是…

    2025年1月2日
  • 内网证书中SSL证书有哪些优势

    今是网络社会,每个企业都有属于自己的网站,虽然有了网站企业的发展比较好。但是,网站的安全性却是最重要的一个内容,如果想要网站更加安全,就需要给网站一定的安全保障。SSL证书是一种安…

    2025年1月2日
  • 为什么需要配置企业ssl证书

    企业ssl证书是一种配置在网站服务器当中的证书,这是一种安全证书,主要的作用是保护网站信息安全。因此很多企业都给自己的网站配置了这种证书。但是,配置该证书一般有哪些原因呢? 为什么…

    2025年1月2日
  • linux怎么使用OpenSSL

    密码学哈希 OpenSSL 源代码的下载页面包含了一个带有最新版本的表格。每个版本都有两个哈希值hash:160 位 SHA1 和 256 位 SHA256。这些值可以用来验证下载…

    ssl证书 2025年1月2日
  • SSL证书颁发机构是什么

    https是目前最受欢迎的文本传输协议了,因为它有很强的安全性和保密性。而这当中的字母s,指的就是SSL。SSL证书是保证传输协议能够稳定安全运行的基础,那么有哪个机构来审核证书的…

    2025年1月2日

发表回复

登录后才能评论