所谓的网站安全证书 是通过在客户端浏览器和Web服务器之间建立一条SSL安全通道保证了双方传递信息的安全性,而且用户可以通过服务器证书验证他所访问的网站是否真实可靠。

大体步骤:

1)签名发送方(甲)对需要发送的明文使用杂凑算法,计算摘要;
2)甲使用其签名私钥对摘要进行加密,得到密文;
3)甲将密文、明文和签名证书发送给签名验证方(乙);
4)乙方验证签名证书的有效性,并一方面将甲发送的密文通过甲的签名证书解密得到摘要,另一方面将明文相同的杂凑算法计算出摘要;
5)乙对比两个摘要,如果相同,服务器证书则可以确认明文在传输过程中没有被更改,并且信息是由证书所申明身份的实体发送的。
签名私钥配合杂凑算法的使用,可以完成服务器/网站安全证书功能。而对服务器/网站安全证书和签名发送方的身份的确认,就需要通过CA对其身份认证进行验证。
 

创建私有CA:

openssl的配置文件:/etc/pki/tls/openssl.cnf
三种策略:匹配、支持和可选
匹配指要求申请填写的信息跟CA设置信息必须一致,支持指必
须填写这项申请信息,可选指可有可无

1、创建所需要的文件
touch /etc/pki/CA/index.txt 生成证书索引数据库文件
echo 01 > /etc/pki/CA/serial 指定第一个颁发证书的序列号                                                     #此处数字必须为两位数
2、 CA自签证书
生成私钥
cd /etc/pki/CA/                                                                                                                         #路径很重要,默认的按照配置文件里的来
(umask 066; openssl genrsa -out
/etc/pki/CA/private/cakey.pem 2048)

3     创建CA

openssl req -new -x509 /etc/pki/CA/private/cakey.pem -days 7300 /etc/pki/CA/cacert.pem     #路径很重要,默认的按照配置文件里的来

查看证书命令 openssl x509 -in cakey.pem -noout -text  #如果不在/etc/pki/CA/private目录则路径cakey.pem文件要换成局对路径。

客户端上申请证书步骤:

1   (umask 066; openssl genrsa -out /app/service.key -des 1024)           #因为客户端生成私钥没有要求所以一般自由决定放的位置。

2    openssl req -new -key /app/service.key -out /app/service.csr             #客户端申请证书


Country Name (2 letter code) [XX]:CN             #默认必填,必须和根证书内容一致
State or Province Name (full name) []:HN         #默认必填,必须和根证书内容一致
Locality Name (eg, city) [Default City]:ZHENGZHOU
Organization Name (eg, company) [Default Company Ltd]:chykj.com         #默认必填,必须和根证书内容一致
Organizational Unit Name (eg, section) []:amoukj
Common Name (eg, your name or your server's hostname) []:chykj.com      #默认必填,必须和根证书内容一致
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:amoukj                                           #可选填
An optional company name []:chykj.com                                    #可选填

(1,2,4,6项要求和根证书资料保持一致,其他选填即可)

3 上传客户端生成的请求证书到根证书服务器

openssl ca -in /etc/pki/CA/csr/service.csr -out /etc/pki/CA/certs/service.crt -days 365  #输出的格式一般是crt或cer

三  证书的状态查询及如何吊销

1  查看证书中的信息

openssl x509 -in /PATH/FROM/CERT_FILE -noout -text |issuer|subject|serial|dates

openssl ca -status SERIAL  查看指定编号的证书状态

2   在客户端获取要吊销的证书的serial

openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject

3   指定第一个吊销证书的编号

注意:第一次更新证书吊销列表前,才需要执行

echo 01 > /etc/pki/CA/crlnumber

更新证书吊销列表

openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem

查看crl文件:

openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text

4   在CA上,根据客户提交的serial与subject信息,对比校验是否与index.txt文件中的信息一致,吊销证书

openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem

备注:在etc/pki/CA目录里有个index.txt.attr文件  unique_subject = yes  #即为证书内容的唯一性,是否允许相同内容的证书同时存在。

网站私有CA证书制作的更多相关文章

  1. 自签名证书和私有CA签名的证书的区别 创建自签名证书 创建私有CA 证书类型 证书扩展名【转】

    自签名的证书无法被吊销,CA签名的证书可以被吊销 能不能吊销证书的区别在于,如果你的私钥被黑客获取,如果证书不能被吊销,则黑客可以伪装成你与用户进行通信   如果你的规划需要创建多个证书,那么使用私有 ...

  2. k8s记录-ca证书制作(二)

    1)下载cfssl #!/bin/bash wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 wget https://pkg.cfssl.org/R ...

  3. CA证书制作

    目录 手动制作CA证书 1.安装 CFSSL 2.初始化cfssl 3.创建用来生成 CA 文件的 JSON 配置文件 4.创建用来生成 CA 证书签名请求(CSR)的 JSON 配置文件 5.生成C ...

  4. Linux系统搭建私有CA证书服务器

    一.CA简介 CA是什么?CA是Certificate Authority的简写,从字面意思翻译过来是凭证管理中心,认证授权.它有点类似我们生活中的身份证颁发机构,这里的CA就相当于生活中颁发身份证的 ...

  5. Kubernetes集群部署之二CA证书制作

    创建TLS证书和秘钥 kubernetes 系统的各组件需要使用 TLS 证书对通信进行加密,本文档使用 CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Auth ...

  6. ca证书校验用户证书

    openssl verify -CAfile ca.cer server.crt 现在很多网站和服务都使用了HTTPS进行链路加密.防止信息在传输中间节点被窃听和篡改.HTTPS的启用都需要一个CA证 ...

  7. http的CA证书安装(也就是https)

    近几年随着安全意识的提高,https流行起来,很多小伙伴不太了解https是什么,其实http和https并没有区别,简单的来说,https就是将http通信进行了加密和解密的一个过程.加上谷歌浏览器 ...

  8. 【HTTPS】自签CA证书 && nginx配置https服务

    首先,搭建https服务肯定需要一个https证书.这个证书可以看做是一个应用层面的证书.之所以这么说是因为https证书是基于CA证书生成的.对于正式的网站,CA证书需要到有资质的第三方证书颁发机构 ...

  9. 基于开源CA系统ejbca community 6.3.1.1构建私有CA管理数字证书

    最后更新于2017年01月24日 一.为什么 为什么写这篇文章?ca是什么?数字证书是什么?ejbca又是什么? 让我们从http与https说起.http是超文本传输协议(HyperText Tra ...

随机推荐

  1. keep-alive前进没有刷新

    https://segmentfault.com/a/1190000012083511

  2. 【SpringBoot】spring-session-data-redis 解决集群环境下session共享

    为什么会产生Session共享问题   集群情况下,session保存在各自的服务器的tomcat中,当分发地址至不同服务时,导致sesson取不到,就会产生session共享问题. 解决方案 负载均 ...

  3. mysql——InnoDB 锁

    https://www.cnblogs.com/leedaily/p/8378779.html 1.InnoDB锁的实现方式:给索引项加锁,只有通过索引条件检索数据,InnoDB才使用行级锁,否则,I ...

  4. 数据结构-STL序列式容器总结

    根据序列在容器中的排列特性,将常见数据结构分为:序列式容器和关联式容器. 常见序列式容器有 1.array(build-in)c++內建 2.vector 3.heap(以算法方式呈现) 4.prio ...

  5. sh_08_打印小星星

    sh_08_打印小星星 # 在控制台连续输出五行 *,每一行星号的数量依次递增 # * # ** # *** # **** # ***** # 1. 定义一个计数器变量,从数字1开始,循环会比较方便 ...

  6. (58)PHP开发

    LAMP 0.使用include和require命令来包含外部PHP文件. 使用include_once命令,但是include和include_once命令相比的不足就是这两个命令并不关心请求的文件 ...

  7. (46)LINUX应用编程和网络编程之一Linux应用编程框架

    3.1.1.应用编程框架介绍 3.1.1.1.什么是应用编程 (1)整个嵌入式linux核心课程包括5个点,按照学习顺序依次是:裸机.C高级.uboot和系统移植.linux应用编程和网络编程.驱动. ...

  8. Spring Cloud Stream教程(二)主要概念

    Spring Cloud Stream提供了一些简化了消息驱动的微服务应用程序编写的抽象和原语.本节概述了以下内容: Spring Cloud Stream的应用模型 Binder抽象 持续的发布 - ...

  9. JavaScript的事件队列(Event Queue)---宏任务和微任务

    前言 在写代码的时候经常思考一个问题,到底是那个函数先执行,本身JavaScript是一门单线程的语言,意思就是按照顺序执行.但是加入一些setTimeout和promise的函数来又实现了异步操作, ...

  10. 安装ubuntu双系统

    今天在win7下安装ubuntu14.1双系统,别折磨了一个下午.主要是开机系统引导问题. 引导程序是位于硬盘最前面的一段程序,由于扇区大部分是引导程序,故也成引导扇区.此外包含有硬盘的分区信息,共6 ...