https 增加了网络访问的安全性,本文介绍一下使用免费的工具生成 SSL 证书,以及在 nginx 上进行配置的基本方法

环境准备-安装git

在 linux 环境下,首先需要安装 git

#安装 git
yum –y install git

#设置裸仓库,learngit.git 是自定义的名字
cd /你喜欢的文件路径
mkdir git
cd git
git init --bare learngit.git

#创建git用户名赋予密码
useradd git
passwd git

#赋予git用户权限
chown -R git:git learngit.git

#禁用git用户shell登录(一定要禁用)
vi /etc/passwd
#一般在最后一行
git:x:1000:1000::/home/git:/usr/bin/git-shell
生成免费的 SSL 证书-Let’s Encrypt

Let’s Encrypt is a free, automated, and open certificate authority (CA), run for the public’s benefit.(Let’s Encrypt 是一个免费的、自动化的、开放的证书颁发机构(CA),为公众的利益而运作。)
官网地址:https://letsencrypt.org/

  • 获得 SSL证-通过网页

你可直接从网页来操作 https://www.sslforfree.com/,但这不是本文要介绍的,所以你也可以忽略。

  • 获得SSL 证书

通过一些命令,我们可以为我们的域名生成 SSL 证书,需要提前准备好 域名、邮箱(这个证书只有90天的有效时间,到期会邮件通知你,貌似有自动更新证书的方法),关闭你服务器上 80 端口的服务,否则无法获得你想要的 SSL 证书哦。

#找到你安装 git 仓库的文件夹啊
git clone https://github.com/certbot/certbot

#打开 certbot
cd certbot

#最关键的一步
./certbot-auto certonly --standalone --email 
你的邮箱 -d www.域名1.com -d www.域名2.com

这样之后你就可以在目录 /etc/letsencrypt下看到证书了。
真正重要的两个文件:
/etc/letsencrypt/live/www.域名1.cn/fullchain.pem
/etc/letsencrypt/live/www.域名1.cn/privkey.pem

为 nginx 容器配置 SSL 证书

需要对
(六) Docker 修改容器的内容—— 容器 nginx 反向代理宿主机 tomcat
中讲到的 default.conf 进行修改(希望你还记得,这是 nginx 的配置文件)。
我们先简化处理

server{
	listen 80;
	listen 443 ssl;
	ssl_certificate  /etc/letsencrypt/live/www.域名1.cn/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/www.域名1.cn/privkey.pem;
}

然后启动一个 nginx 容器,注意需要增加 SSL 文件的路径

docker run -p 80:80 -p 443:443 --name nginxlog \
-v /usr/java/docker/nginxlog/log/:/var/log/nginx:rw \
-v /usr/java/docker/nginxlog/conf.d/:/etc/nginx/conf.d:rw \
-v /etc/letsencrypt:/etc/letsencrypt:rw \
-d nginx
运行效果

这里写图片描述

这里 80 和 https 是可以同时访问的,如果你想屏蔽掉 http 的80 ,可以使用下面的写法,即 ssl on,然后在启动容器的时候 -p 80:80 也可以去掉。

server{
	#listen 80;
	listen 443;
	ssl on;
	ssl_certificate  /etc/letsencrypt/live/www.域名1.cn/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/www.域名1.cn/privkey.pem;
}
http 和 https 的统一处理

在上面的配置中,80 端口是无法访问的,那么这个时候我们就有两种处理方式,一种是同时保留 http 和 https 的访问,一种是 http 的访问自动转到 https 的访问

  • 同时保留 http 和 https
server{
	listen 80;
	listen 443 ssl;
	ssl_certificate  /etc/letsencrypt/live/www.域名1.cn/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/www.域名1.cn/privkey.pem;
}
  • http 自动跳转 https

对于 80 的访问自动转为 https ,server_name只能写一个

server {
    listen 80;
    server_name www.域名1.cn;
    return 301 https://$server_name$request_uri;
}

server{
	listen 443;
	ssl on;
	ssl_certificate  /etc/letsencrypt/live/www.域名1.cn/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/www.域名1.cn/privkey.pem;
}
参考链接

[1].https://www.cnblogs.com/liter7/p/6581344.html
[2].https://blog.csdn.net/baidu_19473529/article/details/80868632
[3].https://www.jianshu.com/p/5f9bd492f186
[4].https://www.cnblogs.com/nuccch/p/7681592.html

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:22 天前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐