资讯专栏INFORMATION COLUMN

nginx docker容器配置https(ssl)

fantix / 1654人阅读

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

证书生成

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

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

1. 创建目录
$ cd ~
$ mkdir ssl
$ cd ssl
2. 创建秘钥文件

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

$ openssl genrsa -des3 -out definesys.key 1024
Generating 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.csr

Enter pass phrase for definesys.key:
You are about to be asked to enter information that will be incorporated
into 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 blank
For some fields there will be a default value,
If you enter ".", the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:Shanghai
Locality Name (eg, city) []:Shanghai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Definesys
Organizational Unit Name (eg, section) []:Definesys
Common Name (e.g. server FQDN or YOUR name) []:www.definesys.com
Email Address []:jianfeng.zheng@definesys.com

Please enter the following "extra" attributes
to be sent with your certificate request
A challenge password []:可以不用输
An optional company name []:可以不用输

#此时文件
$  ssl ll
total 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.key

Enter pass phrase for definesys.key.bak:
writing RSA key
5. 生成crt证书
$ openssl x509 -req -days 3650 -in definesys.csr -signkey definesys.key -out definesys.crt

Signature ok
subject=/C=CN/ST=Shanghai/L=Shanghai/O=Definesys/OU=Definesys/CN=www.definesys.com/emailAddress=jianfeng.zheng@definesys.com
Getting Private key

#此时文件列表

$  ssl ll
total 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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27641.html

相关文章

  • 一文教您如何通过 Docker 搭建反向代理 Ngnix,并配置 Https SSL 证书

    摘要:由于上面我们已经新建了一个配置文件,这里就直接将反向代理的配置写在里面通过配置,我们反向代理到了端口的服务。六最后本文中,我们学习了如何通过快速搭建环境,并对其配置证书和反向代理,让网站能够以协议来访问。 欢迎关注个人微信公众号: 小哈学Java, 每日推送 Java 领域干货文章,关注即免费无套路附送 100G 海量学习、面试资源哟!!个人网站: https://www.except...

    ZHAO_ 评论0 收藏0
  • 搭建Docker私有仓库

    摘要:配置项数据持久化支持登录授权验证测试做代理我的方式和遇到的问题作为一个容器其它方案相关链接官方提供了镜像,可以方便的搭建私有仓库,详细文档参考这里。支持为了使得私有仓库安全地对外开放,需要配置支持。 摘要 这篇文章内容包括搭建docker私有仓库的一些配置项和遇到的问题及解决方案。 1.配置项 1.1. 数据持久化 1.2. TLS 支持 1.3. 登录授权验证 1.4. docker...

    fizz 评论0 收藏0
  • Angular 容器部署

    摘要:很多人反应很难访问,所以转移到阿里云服务器上,因此做了一次完整的容器部署。在容器化过程中,我们并未配置任何等,只是保留服务所需的配置项而已,而这一部分我们可以放在反向代理层完成。 很多人反应很难访问 Github Page,所以 ng-alain.com 转移到阿里云服务器上,因此做了一次完整的 Angular 容器部署。 以下我会阐述 ng-alain 整个过程,其中包括 Docke...

    tracy 评论0 收藏0
  • Angular 容器部署

    摘要:很多人反应很难访问,所以转移到阿里云服务器上,因此做了一次完整的容器部署。在容器化过程中,我们并未配置任何等,只是保留服务所需的配置项而已,而这一部分我们可以放在反向代理层完成。 很多人反应很难访问 Github Page,所以 ng-alain.com 转移到阿里云服务器上,因此做了一次完整的 Angular 容器部署。 以下我会阐述 ng-alain 整个过程,其中包括 Docke...

    alighters 评论0 收藏0
  • Docker Compose 整合发布应用相关服务

    摘要:于是,程序不再是原先单一的服务,而是,变成了一系列密切相关的服务。需要注意的是,在模式下申请证书,需要向证明服务器能被访问。 首先,祝各位新年快乐,万事如意,鸡年大吉。 这次要来说说一个和前端并不太相关的东西——docker compose,一个整合发布应用的利器。 如果,你对 docker 有一些耳闻,那么,你可能知道它是什么。 不过,你不了解也没有关系,在作者眼中,docker 就...

    microcosm1994 评论0 收藏0

发表评论

0条评论

fantix

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<