今天继续给大家介绍Linux运维相关知识,本文主要内容是自建CA,并对客户CSR进行签名生成证书过程。
关于CA认证与https的原理可以参考以下文章:
CA认证与HTTPs原理介绍

一、CA认证中心配置

今天,我们使用192.168.136.210设备来作为我们的CA认证中心,提供证书签名服务。首先,我们需要安装openssl,安装命令如下:

yum install -y openssl

安装完成后,我们需要修改openssl的配置文件,打开文件/etc/pki/tls/openssl.cnf。将该文件172行处的basicContraints的CA:FALSE改为CA:TRUE。修改前文件如下所示:

之后,CA要生成自己的公私钥对,执行命令:

/etc/pki/tls/misc/CA -newca

执行结果如下:



该命令运行时需要和用户有所交互,在此过程中要注意:
①在第一处CA Certificate filename处直接回车,不用输入任何名称。
②其余项目可以根据自己实际情况进行配置。
配置完成后,我们可以查看自身证书,证书为/etc/pki/CA/cacert.pem,打开后如下所示:

CA的私钥存储在/etc/pki/CA/private/cakey.pem,如下所示:

二、web服务器生成证书请求文件

在CA配置完成后,接下来web服务器就可以向CA申请证书了,web服务器首先需要做的事生成自己的证书请求文件。
web客户端首先需要生成自己的公私钥对,在安装openssl后,执行命令:

openssl genrsa -des3 -out /etc/httpd/conf.d/https.key

执行结果如下:

然后,就可以使用web服务器的公钥生成证书请求文件了,执行命令:

openssl req -new -key /etc/httpd/conf.d/https.key -out /etc/httpd/conf.d/https.csr

就可以生成证书请求文件/etc/httpd/conf.d/https.csr。
之后,就需要把该文件发送给CA,可以使用scp命令,如下:

三、CA认证中心生成证书

CA在收到web服务端的证书请求文件后,需要对该证书申请者进行验证,在验证成功后,就可以用自己的私钥对该请求文件进行签名并生成证书。
根据证书请求文件生成证书的命令如下:

openssl ca -keyfile /etc/pki/CA/private/cakey.pem -cert /etc/pki/CA/cacert.pem -in /root/https.csr -out /root/https.crt

执行结果如下:

接下来,就可以把生成的证书发送给web服务器了。

四、WEB服务器配置实现https

web服务器在收到CA发送的证书文件后,需要做的是根据证书文件,配置自己的https功能。
首先,web服务器需要安装mod_ssl,该模块可以使得Apache支持https,安装命令如下:

yum install -y mod_ssl

安装后,在/etc/httpd/conf/目录下,会出现ssl.conf配置文件,接下来,我们需要修改该配置文件。打开该配置文件,大概在100行和107行处,有SSLCertifacateFile和SSLCertificateKeyFile两个参数,我们需要将其改为与自己的证书文件和密钥文件存储的位置,修改完成后的文件如下所示:

完成上述操作后,我们就可以启动Apache了,注意,由于配置了证书,而证书是受密码保护的,因此在启动时可能需要输入证书的密码,打开后结果如下所示:

可以看到,服务正常开启后,系统开始监听443端口。

五、结果验证

最后,我们队上述结果进行验证,在浏览器访问https://192.168.136.101,结果如下:

注意:尽管我们配置了CA中心,并且实现了https,但是由于我们的CA中心没有经过认证,所以浏览器选择拒绝相信该证书。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

自建CA生成证书详解相关推荐

  1. SSL证书详解和CFSSL工具使用

    SSL证书详解和CFSSL工具使用 1.公钥基础设施PKI基础概念 CA(Certification Authority)证书,指的是权威机构给我们颁发的证书. 密钥就是用来加解密用的文件或者字符串. ...

  2. maven 与intellij IDEA 下maven 为groovy 项目生成jar 详解

    2019独角兽企业重金招聘Python工程师标准>>> W7下安装 maven与intellij IDEA 下maven为groovy项目生成jar详解(适合新手) 第一步:下载ma ...

  3. 《方块方舟》自定义服务器工具,方舟方块世界怎么自建服务器 自建服务器方法内容详解-游侠网...

    方块方舟怎么自建服务器?很多玩家都想要自建立一个服务器,之前刚刚有了一个解决方案.小编就为大家整理好了方舟方块世界自建服务器方法内容详解,正在苦恼的玩家们还不快点进来看看? 游戏自建服务器方法内容解析 ...

  4. IOS开发环境更换后重新制作Provisioning Profile证书详解

    IOS开发环境更换后重新制作Provisioning Profile证书详解 新换了台Macbook,又折腾了一遍Provisioning Profile证书,苹果的证书繁锁复杂,每次制作都相当麻烦, ...

  5. http\https的连接过程及数字证书详解

    http\https的连接过程及数字证书详解 内推军p185 http连接过程(相当于输入url会发生什么) 1.域名解析 2.发起TCP的三次握手 3.Web浏览器向服务器发送http请求命令 4. ...

  6. python标准类型内建模块_Python内建模块struct实例详解

    本文研究的主要是Python内建模块struct的相关内容,具体如下. Python中变量的类型只有列表.元祖.字典.集合等高级抽象类型,并没有像c中定义了位.字节.整型等底层初级类型.因为Pytho ...

  7. Python中random模块生成随机数详解

    Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...

  8. hero siege虚拟服务器,攻城英雄黑商商店怎么出_herosiege黑商商店生成设定详解_3DM单机...

    <攻城英雄>中当玩家持有了20件遗物时,就很难再获得遗物了,这时黑商商店就成了刷遗物的好去处,但是并不是那么容易遇见的,下面小编就为大家带来一篇"EndFish"分享的 ...

  9. mysql数据类型设计说明_MySQL的数据类型和建库策略分析详解

    MySQL的数据类型和建库策略分析详解 更新时间:2008年04月06日 01:16:47   作者: 无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构.充分利用空间是十分必要的 ...

  10. 【201】openssl生成服务端和客户端证书详解

    内容目录(原文见公众号python宝) 一.基本知识点介绍二.openssl生成服务端和客户端证书www.xmmup.com 一.基本知识点介绍   要支持https请求,那就需要一个SSL证书. S ...

最新文章

  1. java中是否支持多重继承_java支持多重继承吗 JAVA特性面试题:
  2. JavaScript使用技巧精萃
  3. Java网络编程及安全
  4. 神策数据 × 水滴汽车:着眼车主忠诚度,实现转型期逆势增长!
  5. PHP能在Mac上运行吗,PHP Composer无法在Mac上运行
  6. linuxliveu盘怎么用_施耐德LMC058 plc用U盘怎么传输程序?
  7. 蓝桥杯2016年第七届C/C++省赛B组第三题-凑算式
  8. 螃蟹学PHP设计模式之访问者模式
  9. L1-02-yum源的配置(本地源)
  10. Vitis下Linux应用程序开发流程
  11. Linux ubuntu中编写shell脚本文件
  12. 排查线上CPU飙高的原因和解决
  13. 算法设计和分析 ② 分治和递归
  14. Python基础笔记_Day10_Python面向对象、类和对象、__init__、__str__、访问限制、set、get
  15. urp综合教务系统 php 课表,URP综合教务系统教师录入成绩指南
  16. pscc2018安装服务器无响应,强大的功能无法使用,大神教你一招解决PSCC2018无法安装扩展插件...
  17. 如何在控制台创建文件夹
  18. 什么是monkey patch(猴子补丁)
  19. 7-2 长度质量计量单位换算 (5 分)
  20. [入门篇]初识操作系统OS(这篇博客将帮你打开操作系统OS大门的第一步 超超超超超详细)

热门文章

  1. 字节跳动 AI Lab 21届校招启动啦!
  2. 基础 - 常见字符的ASCII码
  3. 真正决定你成败的,是时间管理!
  4. 知识图谱研讨实录08丨肖仰华教授带你读懂知识图谱的质量控制
  5. 博文视点大讲堂第36期——让Oracle跑得更快(3大oracle ACE联合推荐)
  6. 一本程序员职场的百科全书
  7. 二分法03:x 的平方根
  8. extend 和 append 的区别
  9. 动态规划C语言实现之最长公共子序列(LCS)
  10. 深度学习:循环神经网络RNN