本系列文章演示如何搭建一个mini的云平台和DevOps实践环境。

基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力。

1 名词说明

  • CSR: Certificate Signing Request,即证书签名请求, 这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,其核心内容是一个公钥;
  • CRT:证书文件,certificate的缩写,可以通过修改扩展名的方式与PEM文件互相转换;
  • PEM:X.509证书的一种编码格式,内容以"-----BEGIN"开头,以"-----END"结尾,内容是BASE64编码;
  • 服务器: 这里是指安装UCP/DTR的主机,或者作为Docker Remote API场景中被访问的服务器端主机,本文中UCP服务器IP为192.168.1.101,DTR服务器IP为192.168.1.102;
  • 客户端: 这里是指需要访问UCP/DTR的主机,或者作为Docker Remote API场景中发起访问请求的客户端主机,本文中客户端IP为192.168.1.103, 192.168.1.104。

2 生成自签名CA证书

2.1 编辑CA配置文件

$ vi /etc/pki/tls/openssl.cnf

[ policy_match ]
# 除了country name,其它都改成optional [ req_distinguished_name ]
# CommonName设置为IROOTECH CA,这个会显示为证书的【颁发者】和【颁发给】的属性值

2.2 生成CA私钥

创建到CentOS系统默认的CA私钥文件位置:

$ cd /etc/pki/CA/
$ openssl genrsa -out private/cakey.pem 2048

2.3 生成CA证书

创建到CentOS系统默认的CA证书文件位置:

$ openssl req -new -x509 -key private/cakey.pem -out cacert.pem

如果步骤2.1设置好了默认值,一路回车即可完成。

3 生成服务器证书

3.1 生成服务器私钥

创建到自定义文件夹:

$ mkdir /home/tls/
$ openssl genrsa -out server.key 2048

3.2 生成服务器证书签名请求

创建到自定义文件夹:

$ mkdir /home/tls/
$ openssl req -new -key server.key -out server.csr

commonName(CN)设置为UCP(DTR)所在主机名或FQDN。也可以设置为一个泛域名(*.yourcompany.com),其它都使用默认值。

3.3 生成服务器证书

一般情况下,服务器证书和CA证书不在同一个服务器上,所以需要将3.2节生成的服务器证书签名请求发送到CA证书所在服务器上。

创建到自定义文件夹:

$ mkdir /home/tls/
$ openssl ca -in server.csr -out server.pem

注意:生成服务器证书过程默认使用了-cert cacert.pem -keyfile cakey.pem,这两个文件就是2.2和2.3两步生成的,位于/etc/pki/CA下的CA密钥和CA证书。

4 如何使用

现在我们已经生成了必须的几个文件:

  • /etc/pki/CA/cacert.pem
  • /home/tls/server.pem
  • /home/tls/server.key

4.1 UCP设置证书

在UCP Web UI中, 导航到管理员设置页面,在左侧菜单中,单击证书

依次上传:

  • CA证书:cacert.pem
  • 服务器证书:server.pem
  • 私钥:server.key

点击保存

4.2 DTR设置证书

在DTR Web UI中,导航到系统页面, 在右侧页面中,点击常规,定位到域和代理,点击显示TLS设置

依次上传:

  • CA证书:cacert.pem
  • 服务器证书:server.pem
  • 私钥:server.key

点击保存

4.3 浏览器导入CA证书

如果希望自己本地浏览器访问UCP Web UI时不显示安全证书警告,需要如下操作:

  • a. 将cacert.pem文件复制到本地,然后修改扩展名为.crt;
  • b. 右键点击,在弹出窗口中选择【安装证书】;
  • c. 导出【证书导入向导】,点击【下一步】;
  • d. 单选框选择【将所有的证书放入下列存储】,点击【浏览】按钮,弹出窗口中选择【受信任的根证书颁发机构】,点击【确认】,点击【下一步】;
  • e. 点击【完成】。

系列文章

Docker Data Center系列(一)- 快速搭建云原生架构的实践环境

Docker Data Center系列(二)- UCP安装指南

Docker Data Center系列(三)- DTR安装指南

Docker Data Center系列(四)- 离线安装UCP和DTR

Docker Data Center系列(五)- 使用自定义的TLS安全认证

Docker Data Center系列(五)- 使用自定义的TLS安全认证的更多相关文章

  1. Docker Data Center系列(一)- 快速搭建云原生架构的实践环境

    本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...

  2. Docker Data Center系列(二)- UCP安装指南

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 系统要求 1.1 硬件和软件要求 Linux内核版 ...

  3. Docker Data Center系列(四)- 离线安装UCP和DTR

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 离线安装UCP 1.1 可用版本 Version ...

  4. Docker Data Center系列(三)- DTR安装指南

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 系统要求 1.1 硬件和软件要求 成为UCP管理的 ...

  5. Android开发教程 - 使用Data Binding(五)数据绑定

    本系列目录 使用Data Binding(一)介绍 使用Data Binding(二)集成与配置 使用Data Binding(三)在Activity中的使用 使用Data Binding(四)在Fr ...

  6. React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发

    React Native实战系列教程之自定义原生UI组件和VideoView视频播放器开发   2016/09/23 |  React Native技术文章 |  Sky丶清|  4 条评论 |  1 ...

  7. Spring Data JPA系列2:SpringBoot集成JPA详细教程,快速在项目中熟练使用JPA

    大家好,又见面了. 这是Spring Data JPA系列的第2篇,在上一篇<Spring Data JPA系列1:JDBC.ORM.JPA.Spring Data JPA,傻傻分不清楚?给你个 ...

  8. CSS 魔法系列:纯 CSS 绘制各种图形《系列五》

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  9. Docker入门教程(五)Docker安全

    Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通 ...

随机推荐

  1. DWR第六篇之文件下载

    1. 在第五篇架构基础上进行修改 2. 修改jsp页面 <html> <head> <base href="<%=basePath%>"& ...

  2. 【转载】LINUX 和 WINDOWS 内核的区别

    LINUX 和 WINDOWS 内核的区别 [声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1 ...

  3. ASP.NET-FineUI开发实践-18

    Grid编辑下垃级联 看了看专业版的例子,分为以下几步,都是前端的 1.编辑父下拉框后,重置子下拉框 2.编辑子下垃框前,通过父下垃框数据得到下垃项,然后绑定数据 所以这里要截取Grid的两个事件,编 ...

  4. 详解Javascript中prototype属性(推荐)

    在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不 ...

  5. [转]js 取得 Unix时间戳(Unix timestamp)

    本文转自:https://blog.csdn.net/o0snow/article/details/6858829 js 取得 Unix时间戳 Unix时间戳(Unix timestamp),或称Un ...

  6. asp.net core 2.1 配置管理

    1. 直接读取配置 StartUp类中使用 Configuration["ConnectionString"], Configuration["AliyunAkSk:Ak ...

  7. ubuntu 16.04服务器 搭建php LAMP环境

    1.安装Apache 下载目录: sudo apt update 安装程序: sudo apt install apache2 检查是否安装成功: sudo systemctl status apac ...

  8. python面向对象学习(一)基本概念

    目录 1. 面向对象基本概念 1.1 过程和函数 1.2 面相过程 和 面相对象 基本概念 2. 类和对象的概念 1.1 类 1.3 对象 3. 类和对象的关系 4. 类的设计 大驼峰命名法 4.1 ...

  9. Chrome开发者工具Debug入门

    译者按: 手把手教你摆脱console.log,掌握高级的debug方法. 原文: Learn How To Debug JavaScript with Chrome DevTools 译者: Fun ...

  10. 【 js 工具 】如何在Github Pages搭建自己写的页面?

    最近发现 github 改版了,已没有像原来的 Launch automatic page generator 这样的按钮等,所以我对我的文章也进行了修正,对于新版来说,步骤更加简单了.欢迎享用. - ...