centos7上实现docker的安全访问-基于ca认证(代码片段)

Neo_Gamer Neo_Gamer     2023-02-20     149

关键词:

docker-ce版本:18.09.3-rc1

由于在局域网内主机进行测试,IP为192.168.22.65,以下内容中可将所有此IP替换成自己的IP地址。

一、在docker守护进程的主机上

1、生成CA私钥文件ca-key.pem

$ openssl genrsa -aes256 -out ca-key.pem 4096

2、生成CA公钥文件ca.pem

$ openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem

3、基于CA文件生成server-key.pem文件

$ openssl genrsa -out server-key.pem 4096

4、基于server-key.pem文件生成server.csr文件

$ openssl req -subj "/CN=192.168.22.65" -sha256 -new -key server-key.pem -out server.csr

注意:生成过程中Common Name填写主机IP:192.168.22.65

5、输出subjectAltName属性到extfile.cnf文件

$ echo subjectAltName = DNS:$HOST,IP:10.10.10.20,IP:127.0.0.1 >> extfile.cnf

注意:TLS连接可以通过域名或IP建立,所以这里DNS:$HOST中的$HOST应填写你的域名。但我的需求是docker主机本机和客户端主机能够访问就可以了,所以我的输出命令是:

$ echo subjectAltName = IP:192.168.22.65,IP:0.0.0.0 >> extfile.cnf

6、输出extendedKeyUsage属性到extfile.cnf文件

$ echo extendedKeyUsage = serverAuth >> extfile.cnf

7、生成签名证书server-cert.pem文件

$ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf

8、创建客户端私钥文件key.pem

$ openssl genrsa -out key.pem 4096

9、基于key.pem文件生成client.csr文件

$ openssl req -subj '/CN=client' -new -key key.pem -out client.csr

10、输出extendedKeyUsage属性到extfile-client.cnf文件

$ echo extendedKeyUsage = clientAuth > extfile-client.cnf

11、生成签名证书cert.pem文件

$ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf

12、删除两个csr文件和extfile文件

$ rm -v client.csr server.csr extfile.cnf extfile-client.cnf

13、修改密钥文件权限为只允许所有者读取

$ chmod -v 0400 ca-key.pem key.pem server-key.pem

14、修改证书文件权限为只读

$ chmod -v 0444 ca.pem server-cert.pem cert.pem

15、将CA证书、服务端证书、服务端密钥文件拷贝到/etc/docker目录

$ cp -v ca.pem server-cert.pem server-key.pem /etc/docker

16、配置/etc/docker/daemon.json文件


 "tlsverify": true,
  "tlscacert": "/etc/docker/ca.pem",
  "tlscert": "/etc/docker/server-cert.pem",
  "tlskey": "/etc/docker/server-key.pem",
  "hosts": ["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

17、将CA证书、客户端证书、客户端密钥文件拷贝到/root/.docker目录

$ cp -v ca.pem cert.pem key.pem /root/.docker

18、修改/lib/systemd/system/docker.service文件中的配置

ExecStart = /usr/bin/dockerd

19、将DOCKER_HOST和DOCKER_TLS_VERIFY变量写入/etc/profile文件

$ echo "export DOCKER_HOST=tcp://192.168.22.65:2376" >> /etc/profile
$ echo "export DOCKER_TLS_VERIFY=1" >> /etc/profile
$ source /etc/profile

20、重新加载配置并重启docker

$ systemctl daemon-reload && systemctl restart docker

21、验证docker进程是否正常启动

$ docker ps

二、windows客户端主机用idea远程连接docker服务器

1、同样将CA证书、客户端证书、客户端密钥文件拷贝到当前系统用户目录下的./docker文件夹

2、修改环境变量DOCKER_HOST和DOCKER_TLS_VERIFY

DOCKER_HOST= tcp://192.168.22.65:2376
DOCKER_TLS_VERIFY=1

3、修改idea中docker的连接信息,采用https协议连接成功即可

centos7上实现lvs负载均衡群集之nat转换模式(代码片段)

LVS虚拟服务器LinuxVirtualServer(LVS)是针对Linux内核开发的一个负载均衡项目,由我国的章文嵩博土在1998年5月创建,官方站点位于http://www.linuxvirtualserver.org/.LVS实际上相当于基于IP地址的虚拟化应用,为基于IP地址和内容请求分发... 查看详情

centos7中的docker在push时出现访问被拒绝

两种方法,第一种是rpm包不用教了吧第二种是源码包,一般解压到/usr/local/git,在/etc/profile.d/目录下声明一下环境变量就可以了追问我是新手参考技术A错误内容是Thepushreferstoarepository[docker.io/origin/ping](len:1)b51dbd6e2616:Preparingunauthori... 查看详情

centos7系统创建docker本地仓库

...镜像启动容器实现的。为方便之后的学习,本文将介绍在centos7上实现docker本地仓库的搭建。之前写过一篇在centos6上搭建本地仓库的文章,当时使用的registry版本为V1。V1版本在nginx代理上配置和v2版本存在较大差别,前文传送门:... 查看详情

可以在 Linux 上实现正确的故障安全进程共享屏障吗?

】可以在Linux上实现正确的故障安全进程共享屏障吗?【英文标题】:Canacorrectfail-safeprocess-sharedbarrierbeimplementedonLinux?【发布时间】:2011-10-1915:07:10【问题描述】:在过去的一个问题中,我询问了如何在没有破坏竞赛的情况下实... 查看详情

在基于 Spring MVC 的服务器上实现 WebSocket

】在基于SpringMVC的服务器上实现WebSocket【英文标题】:ImplementingWebSocketonSpringMVCbasedServer【发布时间】:2013-08-0705:23:54【问题描述】:我搜索了很多关于/XMPP的信息,但无法找到具体的答案。所以这是我的要求通过Tomcat服务器上的... 查看详情

centos7上实现bonding

参考技术Acentos7中网络管理需要用到nmcli这个工具,全称为NetworkManagercommandlinetool,下面介绍的bondding是使用nmcli工具完成的。两块网卡:这里type类型为bond-slave,表示这块真实网卡属于一块附属的网卡,配置的属性都不能使用了,ma... 查看详情

docker安装及docker私有仓库部署流程

参考技术A此文档是基于Centos7操作。用户为root。系统内核需要3.8或更高版本镜像在公有仓库dockerhub拉取推送非常慢,而且把项目的镜像放在公网很不安全,在局域网内搭建私有仓库安全快捷。dockerregistryserver分为2个版本,第一版... 查看详情

在 ASP.NET Core 上实现“一劳永逸”方法的安全方法

】在ASP.NETCore上实现“一劳永逸”方法的安全方法【英文标题】:Safewaytoimplementa"FireandForget"methodonASP.NETCore【发布时间】:2018-06-0808:22:40【问题描述】:我正在尝试实现一个简单的日志库,它将用于多个项目。库的工作是... 查看详情

如何使用新的 Spring Authorization Server 在资源服务器上实现基于角色的授权

】如何使用新的SpringAuthorizationServer在资源服务器上实现基于角色的授权【英文标题】:HowtoimplementrolebasedauthorizationonresourceserverwithnewSpringAuthorizationServer【发布时间】:2022-01-1509:15:56【问题描述】:我正在试用新的SpringAuthorizationS... 查看详情

关于何时在私有成员变量上实现访问器而不是将它们公开的实践

】关于何时在私有成员变量上实现访问器而不是将它们公开的实践【英文标题】:practicesonwhentoimplementaccessorsonprivatemembervariablesratherthanmakingthempublic【发布时间】:2009-06-0420:28:53【问题描述】:我知道公共成员变量和私有成员变... 查看详情

在 Web 应用 Java EE/Spring 的一部分上实现自定义安全/过滤器

】在Web应用JavaEE/Spring的一部分上实现自定义安全/过滤器【英文标题】:Implementcustomsecurity/filtersonapartofawebappJavaEE/Spring【发布时间】:2012-11-0816:18:18【问题描述】:我正在开发一个使用SpringMVC和Spring安全性的JavaEEWeb应用程序。到... 查看详情

centos7下安装docker时出现没有安装包docker问题的解决

我在centos7下安装docker时遇到了没有安装包docker,我不知道大家是否有遇到过,是否有好的解决办法,下面把我个人的解决办法给大家奉献上,希望对大家有所帮助。因为按照大家认为的Docker软件包已经包括在默认的CentOS-Extras软件... 查看详情

如果用户代理是 IE,在基于 WCF 的 RSS/ATOM 上实现 HTML 响应?

】如果用户代理是IE,在基于WCF的RSS/ATOM上实现HTML响应?【英文标题】:ImplementHTMLresponseonWCF-basedRSS/ATOMifuseragentisIE?【发布时间】:2011-05-0707:55:48【问题描述】:我正在查看Astoria博客的RSSfeed,似乎他们做了一些事情来使RSS提要看... 查看详情

如何在 Firebase 中实现基于角色的访问控制

...第一次涉足Firebase和nosql,我来自SQL背景。使用简单登录安全电子邮件/密码,如何限制对Firebase中数据的访问?例如,一些用户将有权创建业务对象(用户、客户、类别等),而其他用户则不能。有没有办法 查看详情

docker容器的网络管理和网络隔离(代码片段)

.../CentOS-Base.repohttps://mirrors.aliyun.com/repo/Centos-7.repo<!--安装centos7源-->[root@centos01~]#yum-yinstalldocker<!--安装docker-->[root@centos01~]#systemctlstartdocker<!--启动doc 查看详情

在 Spring Boot 2 上实现基于过滤器的 JWT 身份验证与 OAuth2 JWT 身份验证

】在SpringBoot2上实现基于过滤器的JWT身份验证与OAuth2JWT身份验证【英文标题】:Implementingfilter-basedJWTauthenticationvsOAuth2JWTauthenticationonSpringBoot2【发布时间】:2018-11-2916:41:49【问题描述】:据我所知,OAuth2框架需要一个自定义JWT身份... 查看详情

csharp在windows10上实现“aeroglass”模糊的c#结构(代码片段)

查看详情

基于事件驱动架构构建微服务第8部分:在应用程序上实现事件溯源

原文链接:https://logcorner.com/building-microservices-through-event-driven-architecture-part8-implementing-eventsourcing-on-application/在本文中,我将讨论应用程序上的事件溯源实现。该层围绕领域并实现用例(特定于应用程序的业务规则& 查看详情