利用自签名证书进行https处理

本文用到:OpenSSL(秘钥证书生成工具)、docker、docker-compose

利用OpenSSL创建自签证书

先创建一个文件夹,用来存放OpenSSL生成的一系列文件,切换到文件夹

创建本地私有密钥(key)和证书签名请求(csr),按提示输入相关信息就可以

openssl req -new -nodes -newkey rsa:2048 -keyout test.key -out test.csr

创建证书(crt)

openssl x509 -req -days 1460 -in test.csr -signkey test.key -out test.crt

利用docker-compose安装nginx

先贴上docker-compose.yml文件

version: "3"

services:
   proxy:
    image: nginx:1.14
    container_name: nginx-https
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./logs/proxy:/var/log/nginx
      - ./conf/proxy/conf.d:/etc/nginx/conf.d
      - ./ssl:/etc/nginx/ssl

 

注意volumes部分把容器里的目录挂载到容器外,./的位置是yml文件所在的位置,注意要创建好对应的文件夹。conf存放nginx的配置文件,logs存放日志,ssl存放刚才OpenSSL生成的key文件和crt文件。这里贴上文件目录:

nginx-https
    docker-compose.yml
    conf    
        proxy
            conf.d
                default.conf
    logs
        proxy
            access.log
            error.log
    ssl
        test.key
        test.crt

 

然后在yml文件所在目录执行命令启动容器

 

更改nginx配置

切换到配置文件所在目录

 

修改default.conf配置文件,这里贴上配置文件

server {
     listen       443 ssl;
     server_name  192.168.xxx.xxx;

     ssl on; #开启SSL
     ssl_certificate ssl/server.crt; #SSL证书
     ssl_certificate_key ssl/server_no_passwd.key; #SSL密钥
     ssl_prefer_server_ciphers  on;
     ssl_session_cache    shared:SSL:10m;
     ssl_session_timeout  10m;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  

   location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_pass http://192.168.xxx.xxx:8080;
        }
}
server {
     listen       80;
     server_name  192.168.xxx.xxx;

     return 301 https://$server_name$request_uri;
}

注意这里ssl_certificatessl_certificate_key正是证书和秘钥在容器内相对于default.conf配置文件的位置,server_name的ip要替成自己的,proxy_pass要换成自己的ip和网站的端口。

最后down掉容器再重新启动,让配置文件生效。这时候去浏览地址栏访问

https://192.168.xxx.xxx/

 

 

 

 

 

出现您的连接不是私密连接页面就意味着http已升级为https了,双击地址栏可以看出协议已变成了https。需要说明的是自签名的证书是不受浏览器信任的,用浏览器访问会提示不安全,需要点击高级-继续前往才能访问。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值