Nginx配置https网站

再度Miren
2023-03-06 / 0 评论 / 52 阅读 / 正在检测是否收录...


1、什么是https?

https超文本传输安全协议是http、ssl安全套接层和tls传输层安全的组合。用于提供加密通信和鉴定网络服务器的身份。网上的支付交易、个人隐私和企业中的敏感信息等越来越受到人们的关注和保护。因此https目前已经是所有注重隐私和安全的网站首选。

要想实现https加密网站,在服务器端首先要获得CA(Certification Authority)认证机构颁发的服务器数字证书(CRT),然后浏览器在发起https请求的时候会验证服务器的CRT是否合法,如不合法就给出一个warning提示信息,若合法,用户在与网站交互的时候,所传输的数据都是加密后的数据,达到了安全可靠的效果。

Nginx服务器中的ngx_http_ssl_module模块用于提供https网站的配置。专业的CA机构颁发的证书是收费的,且需要IP地址和域名。

2、颁发认证证书:

使用Openssl命令实现认证证书的办法功能:

1)生成服务器的RSA私钥

mkdir /usr/local/nginx/conf/ssl

cd /usr/local/nginx/conf/ssl
openssl genrsa -out server.key 2048

命令说明:

1)在conf目录中创建ssl目录;

2)然后使用openssl 生成rsa私钥,genrsa:生成rsa私钥,-out server.key:表示输出的文件名,文件所在的目录为执行当前openssl命令时所在的目录;

3)2048: 密钥长度是2048位。至少是2048位,长度越长,安全性越强。

2)生成服务器的CSR证书请求文件:

CSR证书请求文件是服务器的公钥,用于提交给CA机构进行签名。

说明:

1)程序在生成的过程中需要填写说明:

2)Organizaiton Name: 填写公司名称。

3)Common Name: 必须填写与实际使用https的网站域名吻合。我这边是chang.com 否则会引起浏览器警告。

以上生成的两个文件:

server.key: 是服务器的私钥。

server.csr: 相当于公钥。

利用公钥可以对数据进行加密,加密之后只有私钥才能解密。

私钥用于对数据进行数字签名,签名后的数据可以利用公钥进行验证。

3)CA为服务器认证证书:

openssl x509 -req -days 30 -in server.csr -signkey server.key -out server.crt

说明:

1)使用CA的私钥server.key 为服务器的CSR证书申请文件server.csr?进行签名认证。其中x509是自签名证书格式,days 30 是设置签发证书的有效期为30天。

CA利用私钥签名证书后,该证书将用于浏览器验证请求的网站是否真实,防止网络通信过程中伪造。浏览器保存了受信任的CA机构的公钥,在请求https网站的时候,会利用CA公钥验证服务器的证书,并检查域名是否吻合、证书是否过期、证书是否过期、证书是否已经被吊销等。

?

3)配置HTTPS网站:

加密通信的时候,浏览器通过网站的证书可以获得服务器的公钥,然后利用公钥加密请求信息,Nginx收到后再利用服务器的私钥解开信息。

浏览器在证书认证后,会在请求信息中包含一个自动生成的高强度密钥,就是随机数。服务器收到利用该密钥加密响应消息。

为了提供效率,在证书认证后的一段时间内是直接利用这个密钥进行对称加密通信。

在Nginx服务器中配置SSL服务,首先需要在编译安装Nginx时添加对ngx_http_ssl_module模块的支持。

?

我们需要平滑重启nginx使配置生效。

修改下宿主机中的hosts文件:

?

在浏览器中输入:https://www.chang.com

?

然后选择高级继续前往:

?就可以访问到该网站下的文件。

0

评论 (0)

取消