世间所有的相遇,都是久别重逢

0%

nginx配置ssl证书实现https

环境说明

服务器系统:Ubuntu16.04(其他系统或有不同,请自行搜索)

nginx版本:1.10.3

主机商:阿里云

ssl证书申请:

在阿里云域名管理控制台–基本信息–ssl证书–开启ssl证书处购买免费ssl证书。在云盾证书服务(包年)处选择免费版(个人)DV免费:

购买一年ssl证书(证书过期后再次购买即可,配置过程是一样的)。购买成功后回到管理页面,点击“补全”,输入你的域名,点下一步,待几分钟,证书状态变为“已签发”后,证书就申请成功了。

说明:因为我们这里申请的是开发版免费证书,所以一个证书仅支持一个域名认证,不支持通配符。

下载证书

列表中找到已签发的证书,进入下载页面,找到nginx信息,并点击下载:

下载的文件有两个:

domain name.pemdomain name.key(domain name为你证书名称)

服务器安装并配置nginx

登录到服务器:

1
2
$ apt-get update // 更新软件
$ apt-get install nginx // 安装nginx

若输入 nginx -V 可以看到 nginx 版本信息,则安装成功。

配置ssl证书

1,nginx的安装目录为:/etc/nginx/。进入目录,增加cert/文件夹,把刚刚下载的两个文件上传到cert/文件夹中。

2,在/etc/nginx/sites-enabled/下,增加monsterd.cn(此为你的域名)文件。内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
server {
listen 443 ssl;
server_name monsterd.cn; //你的域名
root /var/www/blog; // 网站根目录
index index.html index.htm;
ssl_certificate cert/domain name.pem;// 将domain name改成你证书的名字
ssl_certificate_key cert/domain name.key;// 将domain name改成你证书的名字
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;
location / {
index index.html index.htm;
}
}
server {
listen 80;
server_name monsterd.cn; // 你的域名
rewrite ^(.*)$ https://$host$1 permanent; // 把http的域名请求转成https
}

配置完成后,检查一下nginx配置文件是否可用,有successful表示可用。

1
$ nginx -t // 检查nginx配置文件

配置正确后,重新加载配置文件使配置生效:

1
$ nginx -s reload // 使配置生效

至此,nginx的https访问就完成了,并且通过rewrite方式把所有http请求也转成了https请求,更加安全。

如需重启nginx,用以下命令:

1
2
3
$ service nginx stop // 停止
$ service nginx start // 启动
$ service nginx restart // 重启

效果

输入http://monsterd.cn 也会自动跳转至https页面。

说明:云服务器比如阿里云ECS,需要到阿里云ECS的管理后台的安全组,修改端口过滤规则把80端口和443端口开放才能访问到。

至此,就能实现https。


-------------本文结束感谢您的阅读-------------