所谓的网站安全证书 是通过在客户端浏览器和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. POJ-2104-Kth Number(主席树)

    链接: https://vjudge.net/problem/POJ-2104#author=malic 题意: 给定一个数组 a[1...n],数组元素各不相同,你的程序要对每次查询Q(i,j,k) ...

  2. 磁盘IO过高时的参考

    主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参考,如果磁盘IO确实比较大的话,是数据库,可以进行读写分离或者分库 ...

  3. 015:URLs分层模块化

    URLs分层模块化: 经过上面的14节课程,大伙有没有发现一个问题:那就是随着的项目功能模块越来越多,所有url匹配都写在一个urls.py文件中,其结果是:文件长,看着心累——需要分门别类:因此能不 ...

  4. jquery animated选择器 语法

    jquery animated选择器 语法 作用::animated 选择器选取当前的所有动画元素.直线电机参数 语法:$(":animated") jquery animated ...

  5. Mysql安装及用简单用法

    Mysql安装和初始化 初见: Mysql软件 - 服务端软件 - 服务端程序 - 解析指令 - 对文件的操作 - 客户端软件 - 客户端程序 - 发送指令(sql语句) - 解析指令 其他类似软件: ...

  6. 【gym102394B】Binary Numbers(DP)

    题意:From https://blog.csdn.net/m0_37809890/article/details/102886956 思路: 可以发现转移就是右上角的一个区间前缀和 std只要开1倍 ...

  7. sqli-lab(8)

    布尔型单引号GET盲注 发现加个单引号跟没加显示不一样,加了单引号连you are in都不显示了,没有报错,所以只能用盲注判断了 0X01爱之先了解 盲注需要掌握一些MySQL的相关函数:lengt ...

  8. Java中的可变参数

    1.什么是可变参数 可变参数是JDK1.5的新特性,允许一个方式接受任意数量的参数 public static void main(String[] args) { print("a&quo ...

  9. [LeetCode]-DataBase-Department Top Three Salaries

    The Employee table holds all employees. Every employee has an Id, and there is also a column for the ...

  10. 第四周学习总结&实验报告

    学习总结; String类: 1.方法只会开辟一块堆内存空间,且会自动保存在对象池中以供下次重复使用: 2方法会开辟两块堆内存空间,其中一块会成为垃圾空间. 1."=="比的是地址 ...