返回顶部
首页 > 资讯 > 服务器 >docker remote api一键TLS加密的实现
  • 641
分享到

docker remote api一键TLS加密的实现

2024-04-02 19:04:59 641人浏览 泡泡鱼
摘要

目录1、修改Docker的2375端口为另外的端口,这只是权宜之计。2、给docker进行tls加密最近公司服务器被挖矿了,最后原因定位到docker的2375端口。 让我们来理一下

最近公司服务器被挖矿了,最后原因定位到docker的2375端口。

让我们来理一下,最开始发现docker中莫名其妙多了几个镜像和正在运行的容器,而且很吃CPU,且2375端口未设置ip访问规则,意思就是所有人都可以通过你的2375端口操作你的docekr,且用启动容器挂载宿主机文件夹,因为docker使用root权限启动的,所以所有人都可以通过你的2375端口以root用户控制你的宿主机。

下面讲一下我们的应对步骤:

1、修改docker的2375端口为另外的端口,这只是权宜之计。


$ vi /usr/lib/systemd/system/docker.service

在这里插入图片描述

重启docker:


$ systemctl daemon-reload
$ systemctl restart docker

2、给docker进行tls加密


#!/bin/bash
mkdir -p /root/tls/pem
DOMaiN_HOST=`ifconfig eth0 | grep "inet" | awk '{ print $2}' | sed -n '1p;1q'`
#DOMAIN_HOST=`hostname` #选择域名方案最好
HOST=$DOMAIN_HOST
# 自定义信息
PASSWord="yourPassword"
COUNTRY=CN
PROVINCE=gd
CITY=gz
ORGANIZATioN=dounine
GROUP=dg
NAME=lake
SUBJ="/C=$COUNTRY/ST=$PROVINCE/L=$CITY/O=$ORGANIZATION/OU=$GROUP/CN=$HOST"
# 自定义信息
#============================================================================================
#此形式是自己给自己签发证书,自己就是CA机构,也可以交给第三方机构去签发
# 生成根证书RSA私钥,password作为私钥密码(身份证)
openssl genrsa -passout pass:$PASSWORD -aes256 -out /root/tls/pem/ca-key.pem 4096
# 2.用根证书RSA私钥生成自签名的根证书(营业执照)
openssl req -new -x509 -days 365 -passin pass:$PASSWORD -key /root/tls/pem/ca-key.pem -sha256 -subj $SUBJ -out /root/tls/pem/ca.pem
#============================================================================================
#给服务器签发证书
# 1.服务端生成自己的私钥
openssl genrsa -out /root/tls/pem/server-key.pem 4096
# 2.服务端生成证书(里面包含公钥与服务端信息)
openssl req -new -sha256 -key /root/tls/pem/server-key.pem -out /root/tls/pem/server.csr -subj "/CN=$DOMAIN_HOST"
# 3.通过什么形式与我进行连接,可设置多个IP地扯用逗号分隔
echo subjectAltName=IP:$DOMAIN_HOST,IP:0.0.0.0 > /tmp/extfile.cnf
# 4.权威机构对证书进行进行盖章生效
openssl x509 -passin pass:$PASSWORD -req -days 365 -sha256 -in /root/tls/pem/server.csr -CA /root/tls/pem/ca.pem -CAkey /root/tls/pem/ca-key.pem -CAcreateserial -out /root/tls/pem/server-cert.pem -extfile /tmp/extfile.cnf
#============================================================================================
#给客户端签发证书
openssl genrsa -out /root/tls/pem/client-key.pem 4096
openssl req -subj '/CN=client' -new -key /root/tls/pem/client-key.pem -out /root/tls/pem/client.csr
echo extendedKeyUsage = clientAuth > /tmp/extfile.cnf
openssl x509 -passin pass:$PASSWORD -req -days 365 -sha256 -in /root/tls/pem/client.csr -CA /root/tls/pem/ca.pem -CAkey /root/tls/pem/ca-key.pem -CAcreateserial -out /root/tls/pem/client-cert.pem -extfile /tmp/extfile.cnf
#============================================================================================
# 清理文件
rm -rf /root/tls/pem/ca-key.pem
rm -rf /root/tls/pem/{server,client}.csr
rm -rf /root/tls/pem/ca.srl
# 最终文件
# ca.pem  ==  CA机构证书
# client-cert.pem  ==  客户端证书
# client-key.pem  ==  客户私钥
# server-cert.pem  == 服务端证书
# server-key.pem  ==  服务端私钥

注意:

  • 当DOMAIN_HOST设置成域名时,echo subjectAltName=IP:$DOMAIN_HOST,IP:0.0.0.0 > /tmp/extfile.cnf这段代码的$DOMAIN_HOST应该替换为你的服务器的公网ip
  • echo subjectAltName=IP:$DOMAIN_HOST,IP:0.0.0.0 > /tmp/extfile.cnf中的IP:0.0.0.0表示所有ip都可以通过携带证书访问,虽然这里是设定了所有,但是不应该省略显示的定义自己服务器的公网ip。即为IP:$yourip,IP:0.0.0.0,而不是IP:0.0.0.0

赋予该文件执行权限:


$ chmod +x tls.sh

执行该shell脚本后,会在/root/tls/pem目录下生成ca.pem、client-cert.pem、client-key.pem 、server-cert.pem、server-key.pem。

然后修改docker配置:


$ vim /usr/lib/systemd/system/docker.service

添加:


		--tlsverify \
        --tlscacert=/root/tls/pem/ca.pem \
        --tlscert=/root/tls/pem/server-cert.pem \
        --tlskey=/root/tls/pem/server-key.pem \


重启docker:


$ systemctl daemon-reload
$ systemctl restart docker

现在使用docker remote api进行连接:

无认证:


$ docker -H tcp://192.168.0.150:2376 version

会报错未认证。

携带认证方式:


docker --tlsverify --tlscacert=/root/tls/pem/ca.pem --tlscert=/root/tls/pem/client-cert.pem --tlskey=/root/tls/pem/client-key.pem -H tcp://192.168.0.150:2376 version

到此这篇关于docker remote api一键TLS加密的实现的文章就介绍到这了,更多相关docker remote api一键TLS加密内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: docker remote api一键TLS加密的实现

本文链接: https://lsjlt.com/news/156397.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • docker remote api一键TLS加密的实现
    目录1、修改docker的2375端口为另外的端口,这只是权宜之计。2、给docker进行tls加密最近公司服务器被挖矿了,最后原因定位到docker的2375端口。 让我们来理一下...
    99+
    2024-04-02
  • Tomcat中怎么实现SSL/TLS加密通信
    要在Tomcat中实现SSL/TLS加密通信,需要进行以下步骤: 生成SSL证书 首先,需要生成SSL证书和私钥。可以使用key...
    99+
    2024-04-03
    Tomcat
  • SpringBoot怎么实现api加密
    这篇“SpringBoot怎么实现api加密”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么实现api...
    99+
    2023-06-08
  • SpringBoot如何实现api加密
    本文小编为大家详细介绍“SpringBoot如何实现api加密”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot如何实现api加密”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。SpringBoo...
    99+
    2023-07-06
  • SpringBoot中怎么实现api加密
    这篇文章将为大家详细讲解有关SpringBoot中怎么实现api加密,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是RSA加密首先我们当然是了解RSA加密RSA加密是一种非对称加密。可以...
    99+
    2023-06-20
  • Java实现加密(一)AES加解密
    目录 1.背景知识2.AES简介3.AES的加密过程(AES处理单位:字节)4.Java实现4.1 生成密钥和偏移量4.2 AESUtil.java 源码4.3 执行结果4.4 线上验证 1.背景知识 在密码学中,加...
    99+
    2023-08-18
    java
  • SpringBoot实现api加密的示例代码
    目录SpringBoot的API加密对接项目介绍什么是RSA加密加密实战实战准备真刀真枪解密实战实战准备真刀真枪总结项目坑点SpringBoot的API加密对接 在项目中,为了保证数...
    99+
    2024-04-02
  • SpringCloud Gateway实现API接口加解密
    目录接口范围启用禁用/版本加密算法报文格式网关实现细节代码filter过滤器请求配置和请求方式分发Get请求参数解密包装 ServerHttpRequestDecorato...
    99+
    2024-04-02
  • Python底层技术解析:如何实现SSL/TLS加密通信
    Python底层技术解析:如何实现SSL/TLS加密通信,需要具体代码示例SSL(Secure Sockets Layer)和TLS(Transport Layer Security)是一种用于在计算机网络上实现安全通信的协议。在网络通信过...
    99+
    2023-11-08
    Python SSL/TLS 加密通信
  • IDEA集成Docker实现一键部署的详细过程
    目录1.初识Docker2.Docker基于Windows集成IDEA2.1 在window上安装docker2.2设置docker配置2.3 IDEA 连接docker 测试2.4...
    99+
    2024-04-02
  • .NET API接口数据传输加密怎么实现
    这篇文章主要介绍了.NET API接口数据传输加密怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇.NET API接口数据传输加密怎么实现文章都会有所收获,下面我们一起来看看吧。硬编码...
    99+
    2023-07-04
  • python密码加密与解密的实现
    目录一、对称加密1.1 安装第三方库 - PyCrypto1.2 加密实现二、非对称加密三、摘要算法3.1 md5加密3.2 sha1加密3.3 sha256加密3.4 sha384...
    99+
    2023-02-07
    python 密码加密 python 密码解密
  • 项目中一键添加husky实现详解
    目录关于huskypre-commitcommit-msg一键添加husky先把用到的import拿出来溜溜package验证husky安装询问使用prompts进行交互提示生成命令...
    99+
    2024-04-02
  • idea使用docker插件实现一键自动化部署
    目录环境:一、 docker开启远程连接访问安装配置idea的docker插件创建项目,并配置一 、 创建项目二、 配置项目maven打包,生成镜像创建容器,项目部署到docker修...
    99+
    2024-04-02
  • 【教程】解决php微擎中的goto加密解密,一键解密工具
    今天,我将向大家揭秘一款神奇的工具——goto解密工具,轻松解密这个看似棘手的问题。 无数开发者都曾因为php中的goto功能而头疼不已。goto解密工具其中之一就是解密goto代码。通过精妙的算法和强大的解析能力,它能够解密被goto加密...
    99+
    2023-09-01
    php 开发语言
  • Android数据加密之Rsa加密的简单实现
    最近无意中和同事交流数据安全传输的问题,想起自己曾经使用过的Rsa非对称加密算法,闲下来总结一下。 什么是Rsa加密? RSA算法是最流行的公钥密码算法,使用长度可以变化的密钥...
    99+
    2022-06-06
    加密 rsa Android
  • Java IO--实现文件的加密解密
    我们知道文件存储的方式在计算机当中是以字节的方式进行存储的,可以通过对文件字节的操作来实现文件的加密。下面的例子是通过读取文件的字节,然后使字节中的每一位取反(1变0,0变1),再进行倒置,来实现加解密过程。import java...
    99+
    2021-03-16
  • 通过Docker Compose、Nginx和MariaDB实现PHP应用程序的安全加密
    在当今数字化时代,数据安全是一个非常重要的问题。对于许多应用程序而言,保护用户数据和敏感信息的安全是不可忽视的。本文将介绍如何使用Docker Compose、Nginx和MariaDB来实现PHP应用程序的安全加密。同时,我们还会提供一些...
    99+
    2023-10-21
    nginx mariadb Docker Compose
  • 使用Java怎么实现一个3des加密解密工具类
    这期内容当中小编将会给大家带来有关使用Java怎么实现一个3des加密解密工具类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体如下:package com.gcloud.common;imp...
    99+
    2023-05-30
    java 3des
  • android中对文件加密解密的实现
    现在项目里面有一个需求,本项目里面下载的视频和文档都不允许通过其他的播放器播放,在培训机构里面这样的需求很多。防止有人交一份钱,把所有的课件就拷给了别人。这样的事情培训机构肯定...
    99+
    2022-06-06
    加密 加密解密 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作