(七) Docker 运行 nginx 并配置 SSL 证书

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 也可以去掉。当然最好的办法是80自动跳转https的443 ,这个以后再探究。

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;
}
参考链接

[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

猜你喜欢

转载自blog.csdn.net/bestcxx/article/details/81073311
今日推荐