博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx docker容器配置https(ssl)
阅读量:5785 次
发布时间:2019-06-18

本文共 3219 字,大约阅读时间需要 10 分钟。

证书生成

首先需要有https的证书文件,如果你已经向证书授权中心购买了证书,可以跳过这步,这里介绍如何生成自签名证书,自签名证书是指不是证书授权中心(Certificate Authority)颁发的证书,而是在个人计算机上通过相关工具自己生成的证书,一般用于测试,不可用于生产环境。

为了方便管理证书(证书生成过程中会产生很多文件),我们可以单独创建一个目录用于存放证书文件,下面是通过工具生成证书的过程。

1. 创建目录

$ cd ~$ mkdir ssl$ cd ssl

2. 创建秘钥文件

创建秘钥文件definesys.key,名称可以自定义,需要指定密码(随意密码即可)

$ openssl genrsa -des3 -out definesys.key 1024Generating RSA private key, 1024 bit long modulus.......++++++..................++++++e is 65537 (0x10001)Enter pass phrase for definesys.key:Verifying - Enter pass phrase for definesys.key:

3. 创建csr证书

需要输入相关信息,比较重要的是Common Name,这个是访问nginx的地址

$ openssl req -new -key definesys.key -out definesys.csrEnter pass phrase for definesys.key:You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:CNState or Province Name (full name) [Some-State]:ShanghaiLocality Name (eg, city) []:ShanghaiOrganization Name (eg, company) [Internet Widgits Pty Ltd]:DefinesysOrganizational Unit Name (eg, section) []:DefinesysCommon Name (e.g. server FQDN or YOUR name) []:www.definesys.comEmail Address []:jianfeng.zheng@definesys.comPlease enter the following 'extra' attributesto be sent with your certificate requestA challenge password []:可以不用输An optional company name []:可以不用输#此时文件$  ssl lltotal 16-rw-r--r--   1 asan  staff  733  1  3 23:57 definesys.csr-rw-r--r--   1 asan  staff  963  1  3 23:55 definesys.key

4. 去除秘钥密码

nginx使用私钥时需要去除密码,执行以下命令时需要输入秘钥的密码

$ cp definesys.key definesys.key.bak$ openssl rsa -in definesys.key.bak -out definesys.keyEnter pass phrase for definesys.key.bak:writing RSA key

5. 生成crt证书

$ openssl x509 -req -days 3650 -in definesys.csr -signkey definesys.key -out definesys.crtSignature oksubject=/C=CN/ST=Shanghai/L=Shanghai/O=Definesys/OU=Definesys/CN=www.definesys.com/emailAddress=jianfeng.zheng@definesys.comGetting Private key#此时文件列表$  ssl lltotal 32-rw-r--r--   1 asan  staff  1017  1  4 00:03 definesys.crt-rw-r--r--   1 asan  staff   733  1  3 23:57 definesys.csr-rw-r--r--   1 asan  staff   887  1  4 00:02 definesys.key-rw-r--r--   1 asan  staff   963  1  4 00:01 definesys.key.bak

nginx容器配置

1. 证书文件上传

definesys.crt文件和definesys.key文件拷贝到服务器上,假设你服务器上nginx的配置文件在/etc/nginx/目录下,可以在该目录下创建一个文件夹,这里命名certs,将文件拷贝至该文件夹下。

2. 配置文件修改

修改配置文件nginx.conf

server {    listen       443 ssl;    server_name  www.definesys.com;    ssl_certificate      /etc/nginx/certs/definesys.crt;    ssl_certificate_key  /etc/nginx/certs/definesys.key;        ssl_session_cache    shared:SSL:1m;    ssl_session_timeout  5m;        ssl_ciphers  HIGH:!aNULL:!MD5;    ssl_prefer_server_ciphers  on;    location / {    root /usr/share/nginx/html;    index  index.html index.htm;    }}

如果server配置不在nginx.conf文件上,可以在conf.d文件夹下找.conf后缀的文件,一般有个default.conf文件。

3. 启动容器

docker run -d --restart=unless-stopped -p 443:443 -v /etc/nginx/:/etc/nginx -v /var/run/docker.sock:/tmp/docker.sock:ro -v /u01/application:/usr/share/nginx/html nginx

访问验证配置是否正确,如果能够正常访问说明配置成功,由于是自签名证书,打开时会提示证书不安全,忽略即可。

转载地址:http://zftyx.baihongyu.com/

你可能感兴趣的文章
elasticsearch 相关
查看>>
一篇关于介绍php的几个user 认证相关的几个包
查看>>
SharePoint 2013新特性:图像呈现形式(Image Rendition)
查看>>
浪潮之巅第十章 — 短暂的春秋(与机会失之交臂的公司)
查看>>
aspx.cs调用js方法
查看>>
Spark学习(4)----ScalaTest
查看>>
POJ1256 Anagram(回溯法)
查看>>
ASP.NET在线压缩与在线解压缩
查看>>
论 大并发 下的 乐观锁定 Redis锁定 和 新时代事务
查看>>
I.MX6 千兆网卡设置跟踪
查看>>
var与let的区别?
查看>>
CF985B Switches and Lamps 思维 第十九
查看>>
reverse engineering in ax
查看>>
oracle行转列与列转行
查看>>
20. Web proxies (网页代理 4个)
查看>>
【转】Unity 游戏存档 PlayerPrefs类的用法
查看>>
【BZOJ3244】【UOJ#122】【NOI2013]树的计数
查看>>
s:set标签
查看>>
bzoj 1041 数学推理
查看>>
request传递参数
查看>>