Linux系统:CentOS 7 CA证书服务器部署

目录

一、理论

1.CA认证中心

2.CA证书服务器部署

二、实验

1. CA证书服务器部署


一、理论

1.CA认证中心

(1)概念

CA :CertificateAuthority的缩写,通常翻译成认证权威或者认证中心,主要用途是为用户发放数字证书

功能:证书发放、证书更新、证书撤销和证书验证。

作用:身份认证,数据的不可否认性

端口:443

证书请求文件:CSR是Cerificate Signing Request的英文缩写,即证书请求文件,也就是证书申请者在申请数字证书时由CSP(加密服务提供者)在生成私钥的同时也生成证书请求文件,证书申请者只要把CSR文件提交给证书颁发机构后,证书颁发机构使用其根证书的私钥签名就生成了证书文件,也就是颁发给用户的证书。

 (2)https 与 http 区别

  1. HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。

  2. 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。

  3. HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS 除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。

  4. http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。

  5. HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

 (3)https原理

 

原理如下:

1.客户端发起 HTTPS 请求
这个没什么好说的,就是用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口。2.服务端的配置
采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl 就是个不错的选择,有 1 年的免费服务)。
这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。3.传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。4.客户端解析证书
这部分工作是有客户端的 TLS 来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。5.传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。6.服务端解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。7.传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。8.客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。

2.CA证书服务器部署

(1) 环境准备

表1 服务器

主机IP地址
CA证书服务器192.168.204.69
Apache服务器192.168.204.186

(2)CA证书服务器的配置

[root@server ~]# yum install -y openssl     //安装OpenSSL工具默认是安装好了的 
[root@server ~]# vim /etc/pki/tls/openssl.cnf    //查看配置文件
42 dir             = /etc/pki/CA           #相关证书的存放的目录
43 certs           = $dir/certs            #存储签发的数字证书
45 database        = $dir/index.txt        # 记录颁发证书的信息
51 serial          = $dir/serial            #记录证书编号
[root@server ~]# cd /etc/pki/CA/    //这个目录是存放证书相关的文件的地方
[root@server CA]# ls
certs  crl  newcerts  private
[root@server CA]# cd private/    //这个目录是存放CA证书服务的私钥的地方CA证书服务器创建自签名证书并设置权限为600
[root@server ~]# (umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
Generating RSA private key, 2048 bit long modulus
..............................................+++
.............................................................+++
e is 65537 (0x10001)CA证书服务器签发本地自签名证书(需要输入一些基本信息)
[root@server ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
Country Name (2 letter code) [XX]:CN      //国家
State or Province Name (full name) []:JS  //所在省
Locality Name (eg, city) [Default City]:NJ   //所在市
Organization Name (eg, company) [Default Company Ltd]:APACHE    //单位名称
Organizational Unit Name (eg, section) []:APACHE-SERVER  //组织单位名称
Common Name (eg, your name or your server's hostname) []:jw.com    //单位的域名
Email Address []:admin@163.com   邮箱CA证书服务还需要创建两个文件,才可以执行颁发证书操作
[root@server ~]# cd /etc/pki/CA/    //进入这个目录
[root@server CA]# touch index.txt    //创建记录申请证书的文件
[root@server CA]# echo 01 > serial    //证书编号
[root@server CA]# cat serial 
01

(2) Apache服务器的配置

[root@clinet ~]# yum install -y httpd mod_ssl 
[root@clinet ~]# echo "this is CA " >> /var/www/html/index.html     //写入一个页面,暂时不要启动httpd服务器创建私钥httpd.key
[root@clinet ~]# mkdir ssl    //创建一个目录
[root@clinet ~]# cd ssl/
[root@clinet ssl]# (umask 077;openssl genrsa -out /root/ssl/httpd.key 2048)
Generating RSA private key, 2048 bit long modulus
......+++
................................................................+++
e is 65537 (0x10001)依据私钥生成证书申请文件
[root@clinet ssl]# openssl req -new -key httpd.key -out httpd.csr    //填写相关信息即可
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:JS
Locality Name (eg, city) [Default City]:NJ
Organization Name (eg, company) [Default Company Ltd]:APACHE
Organizational Unit Name (eg, section) []:APACHE-SERVER
Common Name (eg, your name or your server's hostname) []:jw.com
Email Address []:admin@163.comPlease enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:apache[root@clinet ssl]# ls    //最后在这个目录就生成了两个文件了
httpd.csr  httpd.key然后我们将生成的证书申请文件发送到 CA证书服务器进行授权操作
[root@clinet ssl]# scp httpd.csr root@192.168.204.69:/

(3) CA证书服务器的操作

[root@server /]#openssl ca -in httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:Serial Number: 1 (0x1)ValidityNot Before: Aug 27 10:42:07 2023 GMTNot After : Aug 26 10:42:07 2024 GMTSubject:countryName               = CNstateOrProvinceName       = JSorganizationName          = APACHEorganizationalUnitName    = APACHE-SERVERcommonName                = jw.comemailAddress              = admin@163.comX509v3 extensions:X509v3 Basic Constraints: CA:FALSENetscape Comment: OpenSSL Generated CertificateX509v3 Subject Key Identifier: 68:52:C5:41:3F:1E:7C:25:FE:06:87:79:91:F1:DD:BD:62:41:50:AEX509v3 Authority Key Identifier: keyid:0A:47:11:F3:83:F6:6B:E7:D8:6F:C5:3F:DE:42:C6:71:B6:ED:6F:FDCertificate is to be certified until Aug 26 10:42:07 2024 GMT (365 days)
Sign the certificate? [y/n]:y1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated然后我们在将生成的证书文件传送会Apache服务器即可
[root@server /]# scp /etc/pki/CA/certs/httpd.crt root@192.168.204.186:/root/ssl
root@192.168.204.186's password: 
httpd.crt                                                      100% 4571     7.2MB/s   00:00    

(4) Apache服务器的操作

[root@clinet ssl]# ls   然后就会如下的文件
httpd.crt  httpd.csr  httpd.key
[root@clinet ~]# vim /etc/httpd/conf.d/ssl.conf   //然后我们编辑这个文件   添加这两个文件所在的路径即可100 SSLCertificateFile /root/ssl/httpd.crt107 SSLCertificateKeyFile /root/ssl/httpd.key先关闭防火墙以及selinux 不然等下启动会出现问题
[root@clinet ssl]# systemctl stop firewalld   
[root@clinet ssl]# setenforce 0
[root@clinet ssl]# systemctl start httpd
[root@clinet ssl]# ss -tan |grep 80
LISTEN     0      128       [::]:80                    [::]:*   
[root@clinet ssl]# ss -tan |grep 443
LISTEN     0      128       [::]:443                   [::]:* 

(5) 浏览器访问测试

浏览器输入https://192.168.204.186访问测试
因为我们自行搭建的证书服务器颁发的证书不具备权威性,所有浏览器还是提示为不安全

点击访问出现如下画面也是可以正常访问的

this is CA

点击证书来进行查看颁发者,CA证书服务器结合httpd服务器的实验就此完成

二、实验

1. CA证书服务器部署

(1)CA证书服务器的配置

安装OpenSSL工具

 

完成

 

查看配置文件:

 

42行为相关证书的存放的目录,43行为存储签发的数字证书

45行为记录颁发证书的信息

 

 51行为记录证书编号

切换存放证书相关的文件的目录

 

切换存放CA证书服务的私钥的目录

 

CA证书服务器创建自签名证书并设置权限为600

 

生成文件

 

CA证书服务器签发本地自签名证书(需要输入一些基本信息)

 CA证书服务还需要创建两个文件,才可以执行颁发证书操作:

 

(2) Apache服务器的配置

 写入一个页面,暂时不要启动httpd服务器:

 创建私钥httpd.key:

 生成文件:

 依据私钥生成证书申请文件

 查看在这个目录就生成了两个文件

 然后将生成的证书申请文件发送到 CA证书服务器进行授权操作

(3) CA证书服务器的操作

然后将生成的证书文件传送会Apache服务器

(4) Apache服务器的操作

查看

编辑这个文件

 

添加这两个文件所在的路径即可

 

 先关闭防火墙以及selinux

启动服务并查看端口

(5) 浏览器访问测试

因为自行搭建的证书服务器颁发的证书不具备权威性,所有浏览器还是提示为不安全

  点击访问出现如下画面也是可以正常访问的

 

 可以点击证书来进行查看

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1619811.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

D - President - 背包dp

分析: 需要让所有x大于y的对应的z的总数大于z总共的数量的一半,找最小需要转化的数量,那么可以转化为01背包问题,z作为体积,每组的x和y都可以计算出一个值表示需不需要转化,作为背包价值,如果x大…

利用阿里云服务器公网IP+FRP搭建内网穿透

1 必要条件: 一台公网IP服务器,这里采用阿里云ECS服务器。 此处将IP定义为:serverA-IP 2 服务器下载代码: # mkdir /data # cd /data # git clone https://github.com/fatedier/frp.git # cd frp3 编译代码 编译需要时间 # make go fmt .…

计算机组成原理学习笔记-精简复习版

一、计算机系统概述 计算机系统硬件软件 计算机硬件的发展: 第一代计算机:(使用电子管)第二代计算机:(使用晶体管)第三代计算机:(使用较小规模的集成电路)第四代计算机:(使用较大规模的集成电路) 冯诺依曼体系结构…

FLASH 停止后 IE无法使用

WINDOWS8 WINDOWS10系统下的IE10或者IE11出现 解决方法:打开https://www.flash.cn/

win10 家庭版无法使用IE浏览器

升级window10(家庭版之后)之后打开IE浏览器,打开照片都提示无法使用内置管理员账户打开,网上查看说打开secpol.msc,提示系统不存在该文件,经过一波周折之后,发现了一个快速解决的方案&#xff0…

单片机基础知识 06 (中断-2)

一. 定时器中断概念 51单片机的内部有两个16位可编程的定时器/计数器,即定时器T0和定时器T1。 52单片机内部多一个T2定时器/计数器。 定时器/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。 TMOD是定时器/计数器…

八大排序算法 (python版本)

八大排序算法 个人学习笔记 如有问题欢迎指正交流快速排序经常考, 如果只掌握一个排序算法的话,首选快速排序算法 八大排序算法通常指的是以下八种经典排序算法: 1. 冒泡排序 (Bubble Sort) 使用场景:适用于小规模数据的排序&a…

Ubuntu 3D桌面

转自http://forum.ubuntu.org.cn/viewtopic.php?f94&t140531 [2010年8月17日更新] Ubuntu Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答。 本教程的前身是一善鱼编写并发布在Ubuntu中文论坛forum.ubuntu.org.cn3…

xendesktop更新计算机,XenDesktop7.12发布Win10周年更新版桌面

在上一篇XenCenter配置的资源池的基础上,本篇将使用该资源池作为基础环境搭建XenDesktop7.12发布Win10周年更新版桌面,XenDesktop7.12是上个月(2016年12月)才发布的版本,是目前最新版。本篇的主要内容包括:XenDesktop7.12安装、创…

2020网吧无盘服务器配置,云更新 2020.5.15.14195_x64 | 专业网吧维护

重点功能: 1.增强软件安全性 2.优化无盘启动,支持BIOS、UEFI、通用镜像自动适配 3.增加镜像转换工具,支持将BIOS或UEFI镜像转换为通用镜像 4.增加显卡纹理质量和低延迟模式的设置 其他更新: 5.优化显示器信息采集功能 6.优化控制台…

BM80 买卖股票的最好时机(一)

目录 1.题目描述 2.题目分析 3.编写代码 4.总结 这是牛客网上的一道题目 1.题目描述 题目链接:买卖股票的最好时机(一)_牛客题霸_牛客网 (nowcoder.com) 2.题目分析 我们看到这个题目中一个数组表示每一天的股价,那么最大利润怎么算呢&#xff0c…

MFC界面库

好东西,果断收藏 刚开始用C做界面的时候,根本不知道怎么用简陋的MFC控件做出比较美观的界面,后来就开始逐渐接触到BCG Xtreme ToolkitPro v15.0.1,Skin,等界面库,以及一些网友自己写的界面库,开始对于C软件…

android开源库合集

android开源库合集 1、阿里巴巴开源的自定义viewpager,支持多重动画,横向纵向,多页面显示 项目地址:https://github.com/alibaba/UltraViewPager 2、android版本更新功能。使用retrfit2 rxjava2 okhttp3实现多文件多线程下载&am…

10个前端动画库让你的交互更加炫酷

Animate.css animate.css 是一个使用CSS3的animation制作的动画效果的CSS集合,里面预设了很多种常用的动画,且使用非常简单。 GitHub:github.com/animate-css… Hover.css Hover.css 是一套基于 CSS3 的鼠标悬停效果和动画,这些可以非常轻松的被应用到按钮、LOGO 以及图…

VUE 常用炫酷动画库(拿来即用系列)

目录 打字机效果Vue动画库 代码示例 效果 炫酷背景动画库 代码示例 效果 打字机效果Vue动画库 npm install vue-typical 代码示例 <template><div><v-typicalclass"blink":steps"[Hello, 1000, Hello World !, 600, Hello World ! &#…

NPM酷库:lru-cache 基于内存的缓存管理

NPM酷库&#xff0c;每天两分钟&#xff0c;了解一个流行NPM库。 为了优化程序性能&#xff0c;我们常常需要奖数据缓存起来&#xff0c;根据实际情况&#xff0c;我们可以将数据存储到磁盘、数据库、redis等。 但是有时候要缓存的数据量非常小&#xff0c;或者项目规模非常小&…

NPM酷库:jsdom,纯JS实现的DOM

NPM酷库&#xff0c;每天两分钟&#xff0c;了解一个流行NPM库。 昨天认识了一个在Node.js环境下操作HTML的库 cheerio&#xff0c;cheerio实现了jQuery接口&#xff0c;用起来十分方便。为什么不直接用jQuery呢&#xff1f;因为Node.js环境中没有实现DOM对象。 jsdom 今天&…

NPM酷库:string-random,生成随机字符串

NPM酷库&#xff0c;每天两分钟&#xff0c;了解一个流行NPM库。 昨天&#xff0c;我们了解了如何使用uuid库快速生成UUID&#xff0c;UUID适用于分布式应用中ID的生成&#xff0c;因为UUID足够长&#xff0c;所以碰撞几率非常低。 此外&#xff0c;我们在很多时候不需要生成像…

NPM酷库:vm2,安全的沙箱环境

NPM酷库&#xff0c;每天两分钟&#xff0c;了解一个流行NPM库。 今天我们要了解的库是 vm2&#xff0c;则是一个Node.js 官方 vm 库的替代品&#xff0c;主要解决了安全问题。 不安全的vm 在Node.js官方标准库中有一个vm库&#xff0c;用来在V8虚拟机环境中编译执行JS代码。通…

NPM酷库:uuid,生成随机ID

NPM酷库&#xff0c;每天两分钟&#xff0c;了解一个流行NPM库。 在中心化应用中&#xff0c;数据记录的ID往往是数据库生成的自增ID&#xff0c;但是在分布式应用中&#xff0c;就会存在一些问题&#xff1a; 保存数据之前就需要给数据标识ID数据规模超级大&#xff0c;中央数…