Nginx 域名SSL证书配置(网站 http 升级为 https)

(编辑:jimmy 日期: 2024/12/23 浏览:2)

前言

HTTP 和 HTTPS

我们日常生活中,常见的网址大致分为2种:

一种是基于 http 协议,如:http://www.baidu.com

一种是基于 https 协议,如:https://www.baidu.com

现在很多网站出于安全的考虑,会把网站的域名访问从 http 已经升级为 https,如果你不知道 http 和 https 的概念,不妨先看看下面这篇文章:HTTP和HTTPS有什么不同

SSL 证书

那么我们如何将 http 升级为 https 呢?

我们要升级 http 为 https,首先需要一个 SSL 证书。 SSL 你可以想象为本科毕业证,有个这个本科毕业证,就能证明你是本科生,就都能去申请本科生门槛的招聘。当然,证书可以由不同院校颁发,比如清华本科毕业证和普通三本院校的本科毕业证,这两者的含金量肯定是有不同的。SSL证书也一样,也有不同发签发机构。

配置方式

当有了域名和SSL证书后,我们就可以将域名网址升级为 https 了,我们常用的做法是在 Nginx 中配置域名的 SSL 证书。

具体过程

开始访问

(1)下面我以自己的网站,配置我的个人网站 SSL 证书,将我的网站升级为SSL。

我访问自己网站下的一张图片( http://www.zyqok.cn/fj.jpg ),这是一个 http 访问。

Nginx 域名SSL证书配置(网站 http 升级为 https)

(2)然后我们改为 https 访问,发现是访问不了的。

Nginx 域名SSL证书配置(网站 http 升级为 https)

下面我们正式开始,将网站改为 https 的请求访问。

服务器安装Nginx

首先,我们需要在服务器上安装 Nginx 环境,如果你服务器已经有Nginx了,那么这一步可以跳过,如果未安装Nginx,不妨参照

获取 SSL 证书

由于我服务器是阿里云买的,所以阿里会送几个免费的SSL证书,下面以阿里云的获取 SSL 证书过程进行说明。
如果你不是阿里云客户,那么这一步可以跳过,然后自行百度 “SSL证书” 到相关厂商购买,或者百度 “免费SSL证书” 。

(1)登录阿里云,然后找到 【SSL证书】一栏,点击( 因为我已经开通过了该功能,所以你的位置可能和我的位置不一样,自己去面板找 )。

Nginx 域名SSL证书配置(网站 http 升级为 https)

(2)来到这个面板后,点击【购买证书】。

Nginx 域名SSL证书配置(网站 http 升级为 https)

(3)选择免费型,然后购买

Nginx 域名SSL证书配置(网站 http 升级为 https)

(4)当你完成购买后,就会在页面出现一条对应记录,然后点击【证书申请】。

Nginx 域名SSL证书配置(网站 http 升级为 https)

(5)然后写好你需要升级的域名,比如我要把我的个人网站 http://www.zyqok.cn 升级为 https://www.zyqok.cn
那么此时的域名就填 zyqok.cn,然后填写好其他信息,点击下一步,然后这个证书就会向上面提交,进入审核状态。

Nginx 域名SSL证书配置(网站 http 升级为 https)

(6)当你的申请通过之后,你就可以下载你的SSL证书了,我们点击右下角【下载】

Nginx 域名SSL证书配置(网站 http 升级为 https)

(7)继续选择 Nginx 后面的【下载】

Nginx 域名SSL证书配置(网站 http 升级为 https)

(8)下载完成后,我们就可以得到一个SSL证书的压缩包

Nginx 域名SSL证书配置(网站 http 升级为 https)

上传SSL证书到服务器

(1)我们先将证书压缩包解压,然后可以得到如下两个文件。

Nginx 域名SSL证书配置(网站 http 升级为 https)

(2)我们将这两个文件通过 FTP 工具,上传到服务器上,并放在 Nginx 配置文件所在的同级目录下。

Nginx 域名SSL证书配置(网站 http 升级为 https)

修改配置并重启

(1)打开你的 Nginx.conf 配置文件,然后将你的443和80端口的 server 信息配置如下:
更多详细步骤可以查看阿里云的文档:Nginx/Tengine服务器安装SSL证书

# 直接访问 https 
 server
 {
  	charset utf8;
	listen 443;
	root /opt/local;
	server_name www.zyqok.cn; 
	ssl on;
	ssl_certificate 3067072_zyqok.cn.pem;
	ssl_certificate_key 3067072_zyqok.cn.key;
	ssl_session_timeout 5m;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; 
	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
	ssl_prefer_server_ciphers on;
	
 }
 
 # http 跳转 https
 server 
 {
    listen 80;
	server_name zyqok.cn;
	rewrite ^/(.*) https://www.zyqok.cn permanent;
 }

(2)注意蓝色方框的内容是你的域名和 SSL 证书相关文件。

Nginx 域名SSL证书配置(网站 http 升级为 https)

(3)然后重启你的 Nginx 服务

进入nginx 的 sbin 目录下,输入下面命令,重启 nginx 服务

./nginx -s reload

Nginx 域名SSL证书配置(网站 http 升级为 https)

(4)如果是阿里云的服务器,别忘了开放 80 端口和 443 端口,不然访问不了

不会配置的可以参考这篇文章:阿里云安全规则配置

Nginx 域名SSL证书配置(网站 http 升级为 https)

再次访问

(1)直接 https 进行访问(443端口),可以看到是OK的

Nginx 域名SSL证书配置(网站 http 升级为 https)

(2)然后 http 访问(80端口),他会自动跳转到 https,也是OK的。

Nginx 域名SSL证书配置(网站 http 升级为 https)

至此,你已经学会了 SSL 证书配置!谢谢阅读!